GSP766

Ringkasan
Ketika mempertimbangkan solusi pengoptimalan biaya untuk infrastruktur Google Cloud yang dibangun berdasarkan cluster Google Kubernetes Engine (GKE), penting untuk memastikan bahwa Anda secara efektif menggunakan resource yang ditagihkan. Kesalahan yang umum terjadi adalah menetapkan satu cluster untuk setiap satu pengguna atau tim, sehingga menyebabkan proliferasi cluster.
Cluster multi-tenancy memungkinkan beberapa pengguna atau tim untuk menggunakan satu cluster yang sama untuk workload-nya masing-masing sambil tetap menjaga isolasi dan berbagi resource secara adil. Ini dicapai dengan membuat namespace. Namespace memungkinkan beberapa cluster virtual untuk berada pada satu cluster fisik yang sama.
Di lab ini, Anda akan mempelajari cara menyiapkan cluster multi-tenant menggunakan beberapa namespace untuk mengoptimalkan pemanfaatan resource, dan sehingga mengoptimalkan biaya.
Tujuan
Dalam lab ini, Anda akan mempelajari cara:
- Membuat beberapa namespace pada cluster GKE.
- Mengonfigurasi role-based access control untuk akses namespace.
- Mengonfigurasi kuota resource Kubernetes untuk berbagi resource secara adil di beberapa namespace.
- Menampilkan dan mengonfigurasi dasbor pemantauan untuk menampilkan penggunaan resource oleh namespace.
- Membuat laporan pengukuran GKE pada Looker Studio untuk metrik terperinci untuk pemanfaatan resource oleh namespace.
Penyiapan dan persyaratan
Sebelum mengklik tombol Start Lab
Baca petunjuk ini. Lab memiliki timer dan Anda tidak dapat menjedanya. Timer yang dimulai saat Anda mengklik Start Lab akan menampilkan durasi ketersediaan resource Google Cloud untuk Anda.
Lab interaktif ini dapat Anda gunakan untuk melakukan aktivitas lab di lingkungan cloud sungguhan, bukan di lingkungan demo atau simulasi. Untuk mengakses lab ini, Anda akan diberi kredensial baru yang bersifat sementara dan dapat digunakan untuk login serta mengakses Google Cloud selama durasi lab.
Untuk menyelesaikan lab ini, Anda memerlukan:
- Akses ke browser internet standar (disarankan browser Chrome).
Catatan: Gunakan jendela Samaran (direkomendasikan) atau browser pribadi untuk menjalankan lab ini. Hal ini akan mencegah konflik antara akun pribadi Anda dan akun siswa yang dapat menyebabkan tagihan ekstra pada akun pribadi Anda.
- Waktu untuk menyelesaikan lab. Ingat, setelah dimulai, lab tidak dapat dijeda.
Catatan: Hanya gunakan akun siswa untuk lab ini. Jika Anda menggunakan akun Google Cloud yang berbeda, Anda mungkin akan dikenai tagihan ke akun tersebut.
Cara memulai lab dan login ke Google Cloud Console
-
Klik tombol Start Lab. Jika Anda perlu membayar lab, dialog akan terbuka untuk memilih metode pembayaran.
Di sebelah kiri ada panel Lab Details yang berisi hal-hal berikut:
- Tombol Open Google Cloud console
- Waktu tersisa
- Kredensial sementara yang harus Anda gunakan untuk lab ini
- Informasi lain, jika diperlukan, untuk menyelesaikan lab ini
-
Klik Open Google Cloud console (atau klik kanan dan pilih Open Link in Incognito Window jika Anda menjalankan browser Chrome).
Lab akan menjalankan resource, lalu membuka tab lain yang menampilkan halaman Sign in.
Tips: Atur tab di jendela terpisah secara berdampingan.
Catatan: Jika Anda melihat dialog Choose an account, klik Use Another Account.
-
Jika perlu, salin Username di bawah dan tempel ke dialog Sign in.
{{{user_0.username | "Username"}}}
Anda juga dapat menemukan Username di panel Lab Details.
-
Klik Next.
-
Salin Password di bawah dan tempel ke dialog Welcome.
{{{user_0.password | "Password"}}}
Anda juga dapat menemukan Password di panel Lab Details.
-
Klik Next.
Penting: Anda harus menggunakan kredensial yang diberikan lab. Jangan menggunakan kredensial akun Google Cloud Anda.
Catatan: Menggunakan akun Google Cloud sendiri untuk lab ini dapat dikenai biaya tambahan.
-
Klik halaman berikutnya:
- Setujui persyaratan dan ketentuan.
- Jangan tambahkan opsi pemulihan atau autentikasi 2 langkah (karena ini akun sementara).
- Jangan mendaftar uji coba gratis.
Setelah beberapa saat, Konsol Google Cloud akan terbuka di tab ini.
Catatan: Untuk mengakses produk dan layanan Google Cloud, klik Navigation menu atau ketik nama layanan atau produk di kolom Search.
Memulai
Setelah menekan tombol Start Lab, Anda akan melihat pesan Provisioning Lab Resources
berwarna biru dengan estimasi waktu yang tersisa. Proses ini membuat dan mengonfigurasi lingkungan yang akan Anda gunakan untuk pengujian mengelola cluster multi-tenant. Dalam sekitar 5 menit sebuah cluster dibuat, set data BigQuery disalin, dan akun layanan yang merepresentasikan tim akan dihasilkan.
Setelah selesai, pesan ini tidak akan ditampilkan kembali.
Mohon tunggu proses memulai ini hingga selesai dan pesan tersebut hilang sebelum melanjutkan lab.
Mengaktifkan Cloud Shell
Cloud Shell adalah mesin virtual yang dilengkapi dengan berbagai alat pengembangan. Mesin virtual ini menawarkan direktori beranda persisten berkapasitas 5 GB dan berjalan di Google Cloud. Cloud Shell menyediakan akses command-line untuk resource Google Cloud Anda.
-
Klik Activate Cloud Shell
di bagian atas Konsol Google Cloud.
-
Klik jendela berikut:
- Lanjutkan melalui jendela informasi Cloud Shell.
- Beri otorisasi ke Cloud Shell untuk menggunakan kredensial Anda guna melakukan panggilan Google Cloud API.
Setelah terhubung, Anda sudah diautentikasi, dan project ditetapkan ke Project_ID, . Output berisi baris yang mendeklarasikan Project_ID untuk sesi ini:
Project Cloud Platform Anda dalam sesi ini disetel ke {{{project_0.project_id | "PROJECT_ID"}}}
gcloud
adalah alat command line untuk Google Cloud. Alat ini sudah terinstal di Cloud Shell dan mendukung pelengkapan command line.
- (Opsional) Anda dapat menampilkan daftar nama akun yang aktif dengan perintah ini:
gcloud auth list
- Klik Authorize.
Output:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
Untuk menetapkan akun aktif, jalankan:
$ gcloud config set account `ACCOUNT`
- (Opsional) Anda dapat menampilkan daftar ID project dengan perintah ini:
gcloud config list project
Output:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Catatan: Untuk mendapatkan dokumentasi gcloud
yang lengkap di Google Cloud, baca panduan ringkasan gcloud CLI.
Tugas 1. Mendownload file yang diperlukan
- Di lab ini, beberapa langkah akan menggunakan file
yaml
untuk mengonfigurasi cluster Kubernetes. Pada Cloud Shell Anda, download file berikut dari bucket Cloud Storage:
gsutil -m cp -r gs://spls/gsp766/gke-qwiklab ~
- Ubah direktori kerja saat ini menjadi
gke-qwiklab:
cd ~/gke-qwiklab
Tugas 2. Melihat dan membuat namespace
- Jalankan perintah berikut untuk menetapkan zona komputasi dan autentikasi cluster
multi-tenant-cluster
yang telah disediakan:
export ZONE={{{project_0.default_zone|placeholder}}}
gcloud config set compute/zone ${ZONE} && gcloud container clusters get-credentials multi-tenant-cluster
Namespace default
Secara default, cluster Kubernetes memiliki 4 namespace sistem.
- Anda bisa mendapatkan daftar lengkap dari namespace cluster saat ini dengan menjalankan:
kubectl get namespace
Output-nya seharusnya serupa dengan:
NAME STATUS AGE
default Active 5m
kube-node-lease Active 5m
kube-public Active 5m
kube-system Active 5m
-
default - namespace default yang digunakan saat tidak ada namespace lain yang ditentukan
-
kube-node-lease - mengelola objek lease yang terkait dengan heartbeat dari setiap node cluster
-
kube-public - digunakan untuk resource yang mungkin perlu untuk dapat dilihat atau dapat dibaca oleh semua pengguna di seluruh cluster
-
kube-system - digunakan untuk komponen yang dibuat oleh sistem Kubernetes
Tidak semuanya berada pada namespace. Contohnya, node, volume persisten, dan namespace itu sendiri tidak berada pada sebuah namespace.
- Untuk mengetahui daftar lengkap resource yang ada pada namespace, jalankan:
kubectl api-resources --namespaced=true
Ketika dibuat, resource dengan namespace harus terkait dengan sebuah namespace. Caranya dengan menambahkan flag --namespace
atau dengan mengindikasikan namespace pada kolom metadata yaml
.
- Namespace juga dapat ditentukan dengan subperintah
kubectl get
untuk menampilkan resource dari sebuah namespace. Contoh:
kubectl get services --namespace=kube-system
Perintah ini akan memberi output semua layanan pada namespace kube-system
.
Membuat namespace baru
Catatan: Saat membuat namespace baru, hindari memberi awalan namespace dengan kata ‘kube' karena nama tersebut direservasi untuk namespace sistem.
- Buat 2 namespace untuk
team-a
dan team-b
:
kubectl create namespace team-a && \
kubectl create namespace team-b
Output untuk kubectl get namespace
harus meliputi 2 namespace yang Anda buat:
namespace/team-a created
namespace/team-b created
Dengan menentukan tag --namespace
, Anda dapat membuat resource cluster pada namespace yang diberikan. Nama untuk resource, seperti deployment atau pod, hanya perlu bersifat unik dalam masing-masing namespace.
- Contohnya, jalankan perintah berikut ini untuk men-deploy pod dalam namespace team-a dan namespace team-b dengan menggunakan nama yang sama:
kubectl run app-server --image=centos --namespace=team-a -- sleep infinity && \
kubectl run app-server --image=centos --namespace=team-b -- sleep infinity
- Gunakan
kubectl get pods -A
untuk melihat bahwa ada 2 pod dengan nama app-server
, masing-masing satu pod untuk setiap namespace tim:
kubectl get pods -A
Output:
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system event-exporter-gke-8489df9489-k2blq 2/2 Running 0 3m41s
kube-system fluentd-gke-fmt4v 2/2 Running 0 113s
kube-system fluentd-gke-n9dvn 2/2 Running 0 79s
kube-system fluentd-gke-scaler-cd4d654d7-xj78p 1/1 Running 0 3m37s
kube-system gke-metrics-agent-4jvn8 1/1 Running 0 3m33s
kube-system gke-metrics-agent-b4vvw 1/1 Running 0 3m27s
kube-system kube-dns-7c976ddbdb-gtrct 4/4 Running 0 3m41s
kube-system kube-dns-7c976ddbdb-k9bgk 4/4 Running 0 3m
kube-system kube-dns-autoscaler-645f7d66cf-jwqh5 1/1 Running 0 3m36s
kube-system kube-proxy-gke-new-cluster-default-pool-eb9986d5-tpql 1/1 Running 0 3m26s
kube-system kube-proxy-gke-new-cluster-default-pool-eb9986d5-znm6 1/1 Running 0 3m33s
kube-system l7-default-backend-678889f899-xvt5t 1/1 Running 0 3m41s
kube-system metrics-server-v0.3.6-64655c969-jtl57 2/2 Running 0 3m
kube-system prometheus-to-sd-d6dpf 1/1 Running 0 3m27s
kube-system prometheus-to-sd-rfdlv 1/1 Running 0 3m33s
kube-system stackdriver-metadata-agent-cluster-level-79f9ddf6d6-7ck2w 2/2 Running 0 2m56s
team-a app-server 1/1 Running 0 33s
team-b app-server 1/1 Running 0 33s
Klik Check my progress untuk memastikan Anda telah melakukan tugas di atas.
Membuat namespace
- Gunakan
kubectl describe
untuk melihat detail tambahan untuk setiap pod yang baru dibuat dengan menentukan namespace tersebut dengan tag --namespace:
kubectl describe pod app-server --namespace=team-a
- Untuk bekerja hanya dengan resource yang ada pada satu namespace, Anda dapat menyetelnya satu kali pada konteks
kubectl
dan tidak menggunakan flag --namespace
di setiap perintah:
kubectl config set-context --current --namespace=team-a
- Setelah ini, perintah berikutnya akan dijalankan berdasarkan namespace yang ditentukan tanpa perlu menambahkan flag
--namespace
:
kubectl describe pod app-server
Di bagian berikutnya, Anda akan mengonfigurasi role-based access control untuk namespace Anda guna membantu mengatur cluster.
Tugas 3. Kontrol Akses pada namespace
Menyediakan akses bagi resource dengan namespace pada sebuah cluster dilakukan dengan memberi kombinasi peran IAM dan role-based access control (RBAC) bawaan pada Kubernetes. Peran IAM akan memberi akses awal ke project bagi akun, sementara izin RBAC akan memberi akses terperinci pada resource dengan namespace dari sebuah cluster (pod, deployment, layanan, dll.).
Peran IAM
Catatan: Untuk memberi peran IAM pada sebuah project, Anda perlu terlebih dahulu mendapat peran Admin IAM Project. Ini sudah diatur pada akun sementara Qwiklabs Anda.
Saat mengelola kontrol akses untuk Kubernetes, Identity and Access Management (IAM) digunakan untuk mengelola akses dan perizinan pada tingkatan organisasi dan project yang lebih tinggi.
Ada beberapa peran yang dapat diberikan kepada pengguna dan akun layanan pada IAM yang mengatur tingkatan akses peran tersebut terhadap GKE. Izin terperinci RBAC dibuat berdasarkan akses yang telah diberikan oleh IAM dan tidak dapat membatasi akses yang sudah diberikan oleh IAM. Karena itu, untuk cluster dengan namespace multi-tenant, peran IAM harus memberikan akses minimum.
Berikut adalah tabel peran IAM GKE umum yang dapat Anda berikan:
Peran |
Deskripsi |
Kubernetes Engine Admin |
Memberi akses untuk pengelolaan penuh cluster dan objek Kubernetes API. Pengguna dengan peran ini dapat membuat, mengedit, dan menghapus resource apa pun yang ada pada setiap cluster dan namespace yang ada berikutnya. |
Kubernetes Engine Developer |
Memberi akses untuk objek Kubernetes API yang ada pada cluster. Pengguna dengan peran ini dapat membuat, mengedit, dan menghapus resource yang ada di setiap cluster dan namespace yang ada berikutnya. |
Kubernetes Engine Cluster Admin |
Memberi akses untuk pengelolaan cluster. Pengguna dengan peran ini tidak mendapat akses untuk membuat atau mengedit resource yang ada pada setiap cluster atau pada namespace yang ada berikutnya secara langsung, tapi tetap dapat membuat, mengubah, dan menghapus setiap cluster. |
Kubernetes Engine Viewer |
Menyediakan akses hanya baca pada resource GKE. Pengguna dengan peran ini hanya mendapatkan akses hanya baca untuk namespace dan resource terkait. |
Kubernetes Engine Cluster Viewer |
Mendapatkan dan mencantumkan akses ke Cluster GKE. Ini merupakan peran minimum yang diperlukan bagi siapa saja yang perlu mengakses resource yang ada pada namespace dari cluster. |
Meski peran-peran ini memberi terlalu banyak akses untuk membatasi dengan RBAC, peran IAM Kubernetes Engine Cluster Viewer memberi pengguna cukup izin untuk mengakses cluster dan resource dengan namespace.
Project lab Anda memiliki akun layanan yang merepresentasikan seorang developer yang akan menggunakan namespace team-a
.
- Berikan peran Kubernetes Engine Cluster Viewer pada akun dengan menjalankan perintah berikut:
gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \
--member=serviceAccount:team-a-dev@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com \
--role=roles/container.clusterViewer
RBAC Kubernetes
Pada sebuah cluster, akses untuk jenis resource apa pun (pod, layanan, deployment, dll) ditentukan oleh peran atau peran cluster. Hanya peran yang diizinkan untuk mencakup namespace. Meski peran akan menentukan resource dan tindakan yang diizinkan untuk setiap resource, binding peran akan menentukan untuk akun pengguna atau kelompok apa saja yang dapat menerima akses tersebut.
Untuk membuat peran pada namespace yang ada saat ini, tentukan jenis resource serta kata kerja yang dapat menentukan jenis tindakan apa yang akan diizinkan.
- Peran dengan satu jenis aturan dapat dibuat dengan perintah
kubectl create
:
kubectl create role pod-reader \
--resource=pods --verb=watch --verb=get --verb=list
Peran dengan beberapa jenis aturan dapat dibuat dengan menggunakan file yaml
. File contoh sudah disediakan pada file yang sudah Anda download sebelumnya di lab.
- Periksa file
yaml
:
cat developer-role.yaml
Contoh output:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: team-a
name: developer
rules:
- apiGroups: [""]
resources: ["pods", "services", "serviceaccounts"]
verbs: ["update", "create", "delete", "get", "watch", "list"]
- apiGroups:["apps"]
resources: ["deployments"]
verbs: ["update", "create", "delete", "get", "watch", "list"]
- Terapkan peran di atas:
kubectl create -f developer-role.yaml
- Buat binding peran antara akun layanan dan peran developer untuk developer team-a.
kubectl create rolebinding team-a-developers \
--role=developer --user=team-a-dev@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
Menguji binding peran
- Download kunci akun layanan yang digunakan untuk meniru identitas akun layanan:
gcloud iam service-accounts keys create /tmp/key.json --iam-account team-a-dev@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
Klik Check my progress untuk memastikan Anda telah melakukan tugas di atas.
Kontrol Akses pada namespace
-
Pada Cloud Shell, klik +
untuk membuka tab baru di terminal Anda.
-
Di sini, jalankan perintah berikut untuk mengaktifkan akun layanan. Langkah ini akan memungkinkan Anda untuk menjalankan perintah sebagai akun tersebut:
gcloud auth activate-service-account --key-file=/tmp/key.json
- Dapatkan kredensial untuk cluster Anda, sebagai akun layanan:
export ZONE={{{project_0.default_zone|placeholder}}}
gcloud container clusters get-credentials multi-tenant-cluster --zone ${ZONE} --project ${GOOGLE_CLOUD_PROJECT}
- Anda akan melihat sekarang bahwa sebagai developer team-a, Anda dapat mencantumkan pod pada namespace team-a:
kubectl get pods --namespace=team-a
Output:
NAME READY STATUS RESTARTS AGE
app-server 1/1 Running 0 6d
- Akan tetapi, mencantumkan pod pada namespace team-b dibatasi:
kubectl get pods --namespace=team-b
Output:
Error from server (Forbidden): pods is forbidden: User "team-a-dev@a-gke-project.iam.gserviceaccount.com" cannot list resource "pods" in API group "" in the namespace "team-b": requires one of ["container.pods.list"] permission(s).
-
Kembali ke tab Cloud Shell pertama atau buka tab baru.
-
Perbarui kredensial cluster dan reset konteks Anda pada namespace team-a:
export ZONE={{{project_0.default_zone|placeholder}}}
gcloud container clusters get-credentials multi-tenant-cluster --zone ${ZONE} --project ${GOOGLE_CLOUD_PROJECT}
Tugas 4. Kuota resource
Ketika cluster dibagi pada pengaturan multi-tenant, penting untuk memastikan bahwa pengguna tidak dapat menggunakan jumlah resource cluster lebih dari yang diperlukan. Objek kuota resource (ResourceQuota) akan menentukan batasan yang akan membatasi konsumsi resource pada sebuah namespace. Kuota resource dapat menentukan batas pada jumlah objek (pod, layanan, set stateful, dll), jumlah total dari resource penyimpanan (klaim volume persisten, penyimpanan efemeral, kelas penyimpanan), atau jumlah total dari resource komputasi (CPU dan memori).
- Sebagai contoh, perintah berikut ini akan mengatur batas jumlah pod yang diizinkan pada namespace
team-a
menjadi 2, dan jumlah loadbalancer menjadi 1:
kubectl create quota test-quota \
--hard=count/pods=2,count/services.loadbalancers=1 --namespace=team-a
- Buat pod kedua pada namespace team-a:
kubectl run app-server-2 --image=centos --namespace=team-a -- sleep infinity
- Kemudian, cobalah membuat pod ketiga:
kubectl run app-server-3 --image=centos --namespace=team-a -- sleep infinity
Anda akan menerima error berikut:
Error from server (Forbidden): pods "app-server-3" is forbidden: exceeded quota: test-quota, requested: count/pods=1, used: count/pods=2, limited: count/pods=2
- Anda dapat memeriksa detail mengenai kuota resource menggunakan
kubectl describe
:
kubectl describe quota test-quota --namespace=team-a
Output:
Name: test-quota
Namespace: team-a
Resource Used Hard
-------- ---- ----
count/pods 2 2
count/services.loadbalancers 0 1
Di sini Anda dapat melihat daftar resource yang dibatasi oleh kuota resource, serta batas ketat yang diatur dan jumlah resource yang saat ini sedang digunakan.
- Ubah
test-quota
agar memiliki batas 6 pod dengan menjalankan:
export KUBE_EDITOR="nano"
kubectl edit quota test-quota --namespace=team-a
Anda dapat mengedit file yaml
yang akan digunakan kubectl
untuk mengupdate kuota. Batas ketat kuotanya adalah nilai untuk count/pods
di bawah bagian spec
.
- Ganti nilai dari
count/pods
di bawah bagian spec menjadi 6:
apiVersion: v1
kind: ResourceQuota
metadata:
creationTimestamp: "2020-10-21T14:12:07Z"
name: test-quota
namespace: team-a
resourceVersion: "5325601"
selfLink: /api/v1/namespaces/team-a/resourcequotas/test-quota
uid: a4766300-29c4-4433-ba24-ad10ebda3e9c
spec:
hard:
count/pods: "6"
count/services.loadbalancers: "1"
status:
hard:
count/pods: "5"
count/services.loadbalancers: "1"
used:
count/pods: "2"
- Tekan ctrl + X, Y dan Enter untuk menyimpan dan keluar.
Kuota yang telah diupdate seharusnya terlihat pada output:
kubectl describe quota test-quota --namespace=team-a
Output:
Name: test-quota
Namespace: team-a
Resource Used Hard
-------- ---- ----
count/pods 2 6
count/services.loadbalancers 0 1
Kuota CPU dan memori
Ketika menetapkan kuota untuk CPU dan memori, Anda dapat menentukan kuota jumlah permintaan (nilai yang pasti didapat oleh container) atau jumlah batas (nilai yang tidak boleh dilewati container).
Pada lab ini, cluster Anda memiliki 4 mesin e2-standard-2, dengan 2 core dan masing-masing memori sebanyak 8 GB. Sebuah file sampel kuota resource dengan format yaml telah disediakan untuk cluster Anda:
cpu-mem-quota.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
name: cpu-mem-quota
namespace: team-a
spec:
hard:
limits.cpu: "4"
limits.memory: "12Gi"
requests.cpu: "2"
requests.memory: "8Gi"
- Terapkan konfigurasi file:
Catatan: Pastikan Anda masih ada di dalam direktori gke-qwiklab.
kubectl create -f cpu-mem-quota.yaml
Dengan penetapan kuota ini, jumlah permintaan CPU dan memori akan dibatasi sebanyak 2 cpu dan 8 GiB untuk semua pod, dan dengan batas 4 cpu dan 12 GiB.
Catatan: Ketika ada kuota resource untuk CPU atau memori pada namespace, setiap container yang dibuat pada namespace tersebut selanjutnya harus memiliki penentuan batas CPU dan memorinya sendiri pada saat pembuatan, atau dengan nilai default ditentukan pada namespace sebagai LimitRange.
- Untuk mendemonstrasikan kuota CPU dan memori, buat pod baru menggunakan
cpu-mem-demo-pod.yaml
:
cpu-mem-demo-pod.yaml
:
apiVersion: v1
kind: Pod
metadata:
name: cpu-mem-demo
namespace: team-a
spec:
containers:
- name: cpu-mem-demo-ctr
image: nginx
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "400m"
memory: "512Mi"
- Terapkan konfigurasi file:
kubectl create -f cpu-mem-demo-pod.yaml --namespace=team-a
- Setelah pod ini dibuat, jalankan perintah berikut untuk mencerminkan permintaan CPU dan memori serta batas yang sesuai pada kuotanya:
kubectl describe quota cpu-mem-quota --namespace=team-a
Output:
Name: cpu-mem-quota
Namespace: team-a
Resource Used Hard
-------- ---- ----
limits.cpu 400m 4
limits.memory 512Mi 12Gi
requests.cpu 100m 2
requests.memory 128Mi 8Gi
Klik Check my progress untuk memastikan Anda telah melakukan tugas di atas.
Kuota resource
Tugas 5. Memantau GKE dan pengukuran penggunaan GKE
Untuk sebagian besar cluster multi-tenant, kemungkinan workload dan persyaratan resource dari setiap tenant akan berubah dan kuota resource mungkin perlu disesuaikan. Dengan Monitoring, Anda dapat memperoleh gambaran umum mengenai resource yang digunakan oleh setiap namespace.
Dengan pengukuran penggunaan GKE, Anda dapat memperoleh gambaran lebih terperinci dari penggunaan resource tersebut dan sehingga mendapatkan pengetahuan lebih dalam mengenai biaya yang terkait dari setiap tenant.
Dasbor Monitoring
- Pada Konsol Cloud, luaskan Navigation menu di sudut kiri atas halaman, kemudian pilih Operations > Monitoring pada menu.
Tunggu sebentar sementara workspace untuk project Anda sedang dibuat.
- Setelah Anda berada di halaman Overview, pilih Dashboards dari menu sebelah kiri:

- Pilih GKE dari halaman Dashboards Overview.
Dasbor GKE memberi Anda kumpulan tabel yang memerinci penggunaan CPU, memori, dan disk gabungan dari beberapa resource.
Misalnya, tabel Namespaces akan menunjukkan kepada Anda penggunaan dari setiap namespace cluster Anda:

Anda juga dapat melihat data penggunaan untuk workload yang sedang berjalan pada cluster Anda di tabel Workloads.
-
Klik View All.
-
Pada box ADD FILTER
pilih Namespaces > team-a.
-
Lalu klik Apply.
Ini akan menerapkan filter workload agar hanya mencakup workload yang berjalan pada namespace team-a:
Metrics Explorer
-
Dari panel sebelah kiri, pilih Metrics Explorer.
-
Di kolom Select a metric, klik menu dropdown Metric.
-
Ketik Kubernetes Container pada filter menurut resource dan nama metrik.
-
Klik Kubernetes Container > Container.
-
Pilih CPU usage time
.
-
Klik Apply.
Catatan: Ketik cp pada kolom metrik dan Anda seharusnya melihat waktu penggunaan CPU tampil sebagai opsi dari menu dropdown.
-
Untuk mengecualikan namespace kube-system, klik Add filter pada bagian filter.
-
Pilih namespace_name
sebagai Label.
-
Pilih != (does not equal)
sebagai pembanding dan kube-system
sebagai nilai.
-
Selanjutnya, untuk menu dropdown Aggregation, pilih Sum dan untuk menu dropdown "by", pilih namespace_name dan klik OK.
Anda akan melihat sebuah grafik yang menunjukkan waktu penggunaan CPU container menurut namespace:

Pengukuran penggunaan GKE
Pengukuran penggunaan GKE memungkinkan Anda untuk mengekspor pemanfaatan dan pemakaian resource cluster GKE Anda ke set data BigQuery, sehingga Anda dapat memvisualisasikannya menggunakan Looker Studio. Pengukuran ini memungkinkan tampilan penggunaan resource yang lebih terperinci. Dengan menggunakan pengukuran penggunaan, Anda dapat mengambil keputusan yang lebih tepat mengenai kuota resource dan konfigurasi cluster yang efisien.
Catatan: Karena butuh beberapa jam sampai data metrik GKE mengisi BigQuery, project lab Anda mencakup set data BigQuery dengan penggunaan resource dan data penagihan yang disimulasikan untuk keperluan demo.
Dua set data berikut ini sudah ditambahkan ke dalam project Anda:
cluster_dataset - ini merupakan set data yang dibuat secara manual sebelum mengaktifkan pengukuran penggunaan GKE pada cluster. Set data ini berisi 2 tabel yang dihasilkan oleh GKE (gke_cluster_resource_consumption dan gke_cluster_resource_usage) dan terus-menerus diupdate dengan metrik penggunaan cluster.
billing_dataset- ini merupakan set data yang dibuat secara manual sebelum mengaktifkan ekspor BigQuery untuk penagihan. Set data ini berisi 1 tabel (gcp_billing_export_v1_xxxx) dan diupdate setiap hari dengan biaya harian dari sebuah project.
- Jalankan perintah berikut untuk mengaktifkan pengukuran penggunaan GKE pada cluster dan tentukan set data
cluster_dataset
:
export ZONE={{{project_0.default_zone|placeholder}}}
gcloud container clusters \
update multi-tenant-cluster --zone ${ZONE} \
--resource-usage-bigquery-dataset cluster_dataset
Membuat tabel perincian biaya GKE
Tabel cost_breakdown dapat dibuat dari tabel penggunaan resource dan penagihan pada project Anda. Anda akan membuat tabel ini pada set data cluster menggunakan file usage_metering_query_template.sql
. Template ini tersedia pada Memahami penggunaan resource cluster.
Pertama-tama, pada Cloud Shell, tetapkan beberapa variabel lingkungan.
- Tetapkan jalur tabel penagihan dan tabel pengukuran penggunaan yang disediakan, serta nama untuk tabel perincian biaya yang baru:
export GCP_BILLING_EXPORT_TABLE_FULL_PATH=${GOOGLE_CLOUD_PROJECT}.billing_dataset.gcp_billing_export_v1_xxxx
export USAGE_METERING_DATASET_ID=cluster_dataset
export COST_BREAKDOWN_TABLE_ID=usage_metering_cost_breakdown
- Selanjutnya, tentukan jalur template kueri pengukuran penggunaan yang telah didownload di awal lab ini, file output untuk kueri pengukuran penggunaan yang akan dihasilkan, dan tanggal mulai untuk data tersebut (tanggal paling lama pada data adalah tanggal 26-10-2020):
export USAGE_METERING_QUERY_TEMPLATE=~/gke-qwiklab/usage_metering_query_template.sql
export USAGE_METERING_QUERY=cost_breakdown_query.sql
export USAGE_METERING_START_DATE=2020-10-26
- Sekarang, dengan menggunakan variabel-variabel lingkungan ini dan template kueri, buat kueri pengukuran penggunaan:
sed \
-e "s/\${fullGCPBillingExportTableID}/$GCP_BILLING_EXPORT_TABLE_FULL_PATH/" \
-e "s/\${projectID}/$GOOGLE_CLOUD_PROJECT/" \
-e "s/\${datasetID}/$USAGE_METERING_DATASET_ID/" \
-e "s/\${startDate}/$USAGE_METERING_START_DATE/" \
"$USAGE_METERING_QUERY_TEMPLATE" \
> "$USAGE_METERING_QUERY"
- Jalankan perintah berikut untuk menyiapkan tabel rincian biaya menggunakan kueri yang sudah Anda render pada langkah sebelumnya:
bq query \
--project_id=$GOOGLE_CLOUD_PROJECT \
--use_legacy_sql=false \
--destination_table=$USAGE_METERING_DATASET_ID.$COST_BREAKDOWN_TABLE_ID \
--schedule='every 24 hours' \
--display_name="GKE Usage Metering Cost Breakdown Scheduled Query" \
--replace=true \
"$(cat $USAGE_METERING_QUERY)"
- Transfer Data seharusnya memberikan link untuk otorisasi. Klik link tersebut, login dengan akun siswa Anda, ikuti petunjuk, dan salin
version_info
yang ada sebelumnya pada Cloud Shell Anda.
Selanjutnya, proses ini seharusnya menampilkan pesan yang menyatakan konfigurasi transfer berhasil dibuat.
Membuat sumber data pada Looker Studio
-
Buka halaman Sumber Data Looker Studio.
-
Di bagian kiri atas, klik Create > Data Source untuk menambahkan sumber data yang baru.
Pertama-tama Anda akan melihat tampilan jendela To get started, let's complete your account setup.
-
Beri centang pada kotak persetujuan dan kemudian klik Continue.
-
Pilih No untuk setiap tampilan Set up your email preferences, karena ini merupakan lab/akun sementara.
-
Klik Continue.
Daftar Google Connectors yang didukung oleh Looker Studio akan muncul.
- Pilih BigQuery dari daftar tersebut.

-
Klik tombol Authorize untuk mengizinkan Looker Studio mengakses project BigQuery Anda.
-
Di bagian kiri atas halaman, ganti nama sumber data Anda dari Untitled Data Source
menjadi GKE Usage
.
-
Dari kolom pertama, pilih CUSTOM QUERY.
-
Pilih project ID Anda dari kolom projects.
-
Masukkan kueri berikut ini pada kotak kueri kustom dan ganti [PROJECT-ID]
dengan project ID Qwiklabs:
SELECT * FROM `[PROJECT-ID].cluster_dataset.usage_metering_cost_breakdown`
- Klik CONNECT.
Klik Check my progress untuk memastikan Anda telah melakukan tugas di atas.
Memantau GKE dan pengukuran penggunaan GKE
- Selanjutnya, klik pada bagian kanan atas.
Setelah sumber data sudah ditambahkan, waktunya menggunakan sumber data tersebut untuk membuat laporan.
- Pada bagian atas halaman sumber data Anda, klik CREATE REPORT.

Catatan: Jika Anda mendapatkan pesan error pada tahap ini, pekerjaan Transfer Data Anda mungkin belum selesai. Tunggu sebentar dan coba lagi.
Ketika membuat laporan baru dari sumber data, Anda akan diminta untuk menambahkan data untuk laporan Anda.
- Klik ADD TO REPORT.
Membuat Laporan Looker Studio
Laporan ini adalah saat Anda dapat membuat visualisasi metrik penggunaan dari sumber data berdasarkan tabel BigQuery Anda.
Anda akan memulai dengan sebuah tabel sederhana:

Anda akan mengonfigurasi tabel ini untuk menampilkan rincian biaya dari namespace. Setelah tabel dipilih, Anda akan melihat data yang terkait dengan tabel tersebut pada panel di sebelah kanan.
- Ganti hal-hal berikut ini pada panel tersebut:
-
Data Range Dimension:
usage_start_time
-
Dimension:
namespace
-
Metric:
cost
Biarkan kolom lain tetap pada nilai defaultnya.
Untuk membatasi tabel Anda terhadap resource dengan namespace, Anda dapat menerapkan filter.
- Pada panel data, klik Add a Filter yang ada di bawah bagian Filter. Buat filter yang akan mengecualikan resource yang tidak dialokasikan ke suatu namespace:

-
Klik Save.
-
Klik Add a Filter sekali lagi dan klik Create a Filter untuk membuat filter kedua yang akan membatasi data untuk permintaan:

- Klik Save untuk menerapkan filter. Tabel yang dihasilkan harus terlihat seperti ini:

Selanjutnya, Anda akan membuat diagram lingkaran dari laporan Anda yang menampilkan rincian biaya berdasarkan namespace.
-
Klik kanan tabel yang Anda buat dan pilih Duplicate.
-
Tarik objek tabel duplikat tersebut ke bagian mana pun pada laporan Anda.
-
Kemudian, klik header dari panel konfigurasi:

- Dari opsi yang ada, klik ikon pie chart:

Diagram lingkaran yang dihasilkan akan terlihat seperti ini:

Berikutnya, Anda akan menambahkan diagram donat yang akan menampilkan rincian biaya berdasarkan jenis resource.
-
Dari toolbar di bagian atas, klik Add a chart dan pilih
(Donut) untuk membuat diagram donat.
-
Tarik diagram tersebut ke bagian mana pun dari laporan Anda, dan konfigurasikan dengan isian berikut ini:
-
Data Range Dimension:
usage_start_time
-
Dimension:
resource_name
-
Metric:
cost
- Klik Add a Filter dan pilih 2 filter yang Anda terapkan pada diagram sebelumnya. Diagram donat yang dihasilkan akan terlihat seperti ini:

-
Untuk menambahkan rincian berdasarkan namespace, dari toolbar di bagian atas, klik Add a control dan pilih Drop-down list.
-
Tarik ke sebelah diagram donat Anda dan konfigurasikan isinya sebagai berikut:
-
Data Range Dimension:
usage_start_time
-
Control field:
namespace
-
Metric:
None
-
Klik Add a filter.
-
Pilih unallocated (namespace filter) dari daftar.
-
Untuk mengonfigurasi kontrol agar hanya memengaruhi diagram donat, pilih objek kontrol dan diagram donat menggunakan kursor pemilih untuk menggambar kotak di antara kedua objek tersebut.
-
Klik kanan dan pilih Group untuk mengikat keduanya menjadi satu grup:

- Untuk pratinjau laporan Anda, klik View pada toolbar di bagian atas.
Di mode tampilan, Anda dapat menyesuaikan tampilan diagram donat Anda terhadap namespace tertentu:

- Dari menu Share yang ada di bagian atas halaman, klik Download report untuk download salinan laporan penuh dalam bentuk file PDF.
Selamat!
Dengan menggunakan namespace, Anda dapat mengonfigurasi cluster menjadi multi-tenant, meminimalisir risiko penggunaan resource yang tidak optimal serta proliferasi cluster, dan menghindari timbulnya biaya tambahan. Dengan menggunakan pemantauan dan pengukuran GKE, Anda juga dapat memvisualisasi penggunaan resource berdasarkan namespace agar dapat mengambil keputusan lebih baik mengenai kuota resource dan konfigurasi cluster.
Langkah berikutnya/pelajari lebih lanjut
Sertifikasi dan pelatihan Google Cloud
...membantu Anda mengoptimalkan teknologi Google Cloud. Kelas kami mencakup keterampilan teknis dan praktik terbaik untuk membantu Anda memahami dengan cepat dan melanjutkan proses pembelajaran. Kami menawarkan pelatihan tingkat dasar hingga lanjutan dengan opsi on demand, live, dan virtual untuk menyesuaikan dengan jadwal Anda yang sibuk. Sertifikasi membantu Anda memvalidasi dan membuktikan keterampilan serta keahlian Anda dalam teknologi Google Cloud.
Manual Terakhir Diperbarui pada 02 Februari 2024
Lab Terakhir Diuji pada 02 Februari 2024
Hak cipta 2025 Google LLC. Semua hak dilindungi undang-undang. Google dan logo Google adalah merek dagang dari Google LLC. Semua nama perusahaan dan produk lain mungkin adalah merek dagang masing-masing perusahaan yang bersangkutan.