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
menggunakan satu cluster yang sama untuk workload mereka masing-masing dengan
tetap menjaga isolasi dan berbagi resource secara adil. Hal ini dicapai dengan
membuat namespace. Namespace memungkinkan beberapa cluster
virtual 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,
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 Data Studio untuk mendapatkan metrik
terperinci terkait 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 Resource berwarna biru dengan estimasi waktu
yang tersisa. Proses ini membuat dan mengonfigurasi lingkungan yang akan Anda
gunakan untuk menguji pengelolaan 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 hingga proses memulai ini 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 namespace cluster saat ini dengan
menjalankan:
kubectl get namespace
Output-nya akan terlihat seperti ini:
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 setiap namespace.
-
Contohnya, jalankan perintah berikut untuk men-deploy pod dalam namespace
team-a dan namespace team-b dengan menggunakan nama yang sama:
kubectl run app-server --image=quay.io/centos/centos:9 --namespace=team-a --
sleep infinity && \ kubectl run app-server
--image=quay.io/centos/centos:9 --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. Hal ini sudah diatur
pada akun sementara Qwiklabs Anda.
Saat mengelola kontrol akses untuk Kubernetes, Identity and Access Management
(IAM) digunakan untuk mengelola akses dan izin pada tingkat organisasi dan
project yang lebih tinggi.
Ada beberapa peran yang dapat diberikan kepada pengguna dan akun layanan pada
IAM yang mengatur tingkat akses peran tersebut ke 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 yang ditetapkan harus memberikan
akses minimal.
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, tetapi tetap dapat membuat, mengubah, dan menghapus setiap
cluster.
|
|
Kubernetes Engine Viewer
|
Menyediakan akses hanya baca ke 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. Hal ini merupakan
peran minimal 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
cukup izin bagi pengguna 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, role-binding akan
menentukan akses tersebut dapat diterima oleh akun pengguna atau kelompok
mana.
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 tersedia pada file yang 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 role-binding antara akun layanan team-a-developers dan developer-role.
kubectl create rolebinding team-a-developers \ --role=developer
--user=team-a-dev@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
Menguji role-binding
-
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 team-a-dev, 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 digunakan bersama 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
resource komputasi. (cpu dan memori).
-
Sebagai contoh, perintah berikut 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=quay.io/centos/centos:9 --namespace=team-a --
sleep infinity
- Kemudian, cobalah membuat pod ketiga:
kubectl run app-server-3 --image=quay.io/centos/centos:9 --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 pada bagian spec.
-
Ganti nilai
count/pods pada 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 akan 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, masing-masing
dengan 2 core dan 8 GB memori. Sebuah file sampel kuota resource dalam 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 untuk semua pod
akan dibatasi sebanyak 2 CPU dan 8 GiB, serta batas maksimum masing-masing
ditetapkan 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 memeriksa permintaan
dan memori CPU serta batasnya tercermin pada kuota:
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, workload dan persyaratan resource
dari setiap tenant mungkin akan berubah, sehingga 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, sehingga didapatkan gambaran
yang lebih jelas mengenai biaya yang terkait dengan setiap tenant.
Dasbor Monitoring
-
Di Konsol Cloud, klik Navigation menu (
) > View All Products. Di bagian
Observability, klik Monitoring.
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 yang digabungkan dari beberapa resource.
Misalnya, tabel Namespaces akan menunjukkan 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.
Tindakan 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 mengekspor pemanfaatan dan
pemakaian resource cluster GKE ke set data BigQuery, sehingga Anda dapat
memvisualisasikannya menggunakan Data 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 sudah ditambahkan ke dalam project Anda:
cluster_dataset - set data ini dibuat secara manual sebelum
pengukuran penggunaan GKE diaktifkan 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 - set data ini dibuat secara manual sebelum
ekspor BigQuery diaktifkan 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 dokumen
Memahami penggunaan resource cluster.
Pertama-tama, pada Cloud Shell, tetapkan beberapa variabel lingkungan.
-
Tetapkan jalur tabel penagihan, set data 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 perincian 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 Data Studio
-
Buka halaman
Sumber Data Data 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.
-
Pilih negara, masukkan nama perusahaan, centang kotak persetujuan, lalu
klik Continue.
-
Pilih No untuk setiap tampilan
Set up your email preferences, karena lab/akun ini
bersifat sementara.
-
Klik Continue.
Daftar Google Connectors yang didukung oleh Data Studio akan muncul.
- Pilih BigQuery dari daftar tersebut.
-
Klik tombol Authorize untuk mengizinkan Data 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 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 ditambahkan, sekarang 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 pada laporan Anda.
- Klik ADD TO REPORT.
Membuat Laporan Data Studio
Pada laporan ini, Anda dapat membuat visualisasi metrik penggunaan dari sumber
data berdasarkan tabel BigQuery Anda.
Mulailah dengan sebuah tabel sederhana:
Anda akan mengonfigurasi tabel ini untuk menampilkan perincian biaya menurut
namespace. Setelah tabel dipilih, Anda akan melihat data yang terkait dengan
tabel tersebut pada panel di sebelah kanan.
-
Klik 'Freeform layout' atau klik Add a chart, pilih tabel
dan ubah hal berikut di panel tersebut:
-
Date 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 pada bagian Filter.
Buat filteryang 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 menambahkan diagram lingkaran ke laporan Anda untuk
menampilkan perincian biaya berdasarkan namespace.
-
Klik kanan tabel yang telah Anda buat dan pilih
Duplicate.
-
Tarik objek tabel duplikat tersebut ke bagian mana pun pada laporan Anda.
-
Kemudian, klik header Chart types pada panel konfigurasi:
- Dari opsi yang ada, klik ikon pie chart:
Diagram lingkaran yang dihasilkan akan terlihat seperti ini:
Selanjutnya, Anda akan menambahkan diagram donat untuk menampilkan perincian
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 pada laporan Anda, dan
konfigurasi dengan elemen berikut:
-
Date Range Dimension:
usage_start_time
-
Dimension:
resource_name
-
Metric:
cost
-
Klik Add a Filter dan pilih 2 filter yang telah Anda
terapkan pada diagram sebelumnya. Diagram donat yang dihasilkan akan
terlihat seperti ini:
-
Untuk menambahkan perincian berdasarkan namespace, dari toolbar di bagian
atas, klik Add a control dan pilih
Drop-down list.
-
Tarik ke sebelah diagram donat Anda dan konfigurasi dengan elemen sebagai
berikut:
-
Date 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 sekitar kedua objek tersebut.
-
Klik kanan dan pilih Group untuk mengikat keduanya
menjadi satu grup:
-
Untuk melihat pratinjau laporan Anda, klik View pada
toolbar di bagian atas.
Di mode tampilan, Anda dapat menyesuaikan tampilan diagram donat untuk
namespace tertentu:
-
Dari menu Share di bagian atas halaman, klik
Download report untuk mendownload salinan laporan lengkap
dalam bentuk file PDF.
Selamat!
Dengan menggunakan namespace, Anda dapat mengonfigurasi cluster menjadi
multi-tenant, meminimalkan risiko penggunaan resource yang tidak optimal dan
proliferasi cluster, serta menghindari timbulnya biaya tambahan. Dengan
menggunakan pemantauan dan pengukuran GKE, Anda juga dapat memvisualisasikan
penggunaan resource berdasarkan namespace agar dapat mengambil keputusan yang
lebih tepat 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 18 Maret 2026
Lab Terakhir Diuji pada 18 Maret 2026
Hak cipta 2026 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.