arrow_back

Mengelola Cluster Multi-tenant GKE dengan Namespace

Login Gabung
Uji dan bagikan pengetahuan Anda kepada komunitas kami.
done
Dapatkan akses ke lebih dari 700 lab praktik, badge keahlian, dan kursus

Mengelola Cluster Multi-tenant GKE dengan Namespace

Lab 1 jam 15 menit universal_currency_alt 5 Kredit show_chart Menengah
info Lab ini mungkin menggabungkan alat AI untuk mendukung pembelajaran Anda.
Uji dan bagikan pengetahuan Anda kepada komunitas kami.
done
Dapatkan akses ke lebih dari 700 lab praktik, badge keahlian, dan kursus

GSP766

Lab Mandiri Google Cloud

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 Mulai 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 praktik ini dapat Anda gunakan untuk melakukan sendiri 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 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: Jika Anda sudah memiliki project atau akun pribadi Google Cloud, jangan menggunakannya untuk lab ini agar terhindar dari tagihan ekstra pada akun Anda.

Cara memulai lab dan login ke Google Cloud Console

  1. Klik tombol Start Lab. Jika Anda perlu membayar lab, jendela pop-up akan terbuka untuk memilih metode pembayaran. Di sebelah kiri adalah panel Lab Details dengan info 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
  2. 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.
  3. 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.

  4. Klik Next.

  5. Salin Password di bawah dan tempel ke dialog Welcome.

    {{{user_0.password | "Password"}}}

    Anda juga dapat menemukan Password di panel Lab Details.

  6. 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.
  7. 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 melihat menu dengan daftar produk dan layanan Google Cloud, klik Navigation menu di kiri atas. Ikon Navigation menu

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.

  1. Klik Activate Cloud Shell Ikon Activate Cloud Shell di bagian atas konsol Google Cloud.

Setelah terhubung, Anda sudah diautentikasi, dan project ditetapkan ke PROJECT_ID Anda. Output berisi baris yang mendeklarasikan PROJECT_ID untuk sesi ini:

Project Cloud Platform Anda dalam sesi ini disetel ke YOUR_PROJECT_ID

gcloud adalah alat command line untuk Google Cloud. Alat ini sudah terinstal di Cloud Shell dan mendukung pelengkapan command line.

  1. (Opsional) Anda dapat menampilkan daftar nama akun yang aktif dengan perintah ini:
gcloud auth list
  1. Klik Authorize.

  2. Output Anda sekarang akan terlihat seperti ini:

Output:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net Untuk menyetel akun aktif, jalankan: $ gcloud config set account `ACCOUNT`
  1. (Opsional) Anda dapat menampilkan daftar project ID dengan perintah ini:
gcloud config list project

Output:

[core] project = <project_ID>

Contoh output:

[core] project = qwiklabs-gcp-44776a13dea667a6 Catatan: Untuk mendapatkan dokumentasi gcloud yang lengkap di Google Cloud, baca panduan ringkasan gcloud CLI.

Tugas 1. Mendownload file yang diperlukan

  1. 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 ~
  1. 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.

  1. 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.

  1. 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.

  1. 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.
  1. 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.

  1. 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
  1. 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

  1. 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
  1. 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
  1. 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.

  1. 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.

  1. 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"]
  1. Terapkan peran di atas:
kubectl create -f developer-role.yaml
  1. 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

  1. 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

  1. Pada Cloud Shell, klik + untuk membuka tab baru di terminal Anda.

  2. 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
  1. 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}
  1. 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
  1. 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).
  1. Kembali ke tab Cloud Shell pertama atau buka tab baru.

  2. 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).

  1. 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
  1. Buat pod kedua pada namespace team-a:
kubectl run app-server-2 --image=centos --namespace=team-a -- sleep infinity
  1. 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
  1. 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.

  1. 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.

  1. 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"
  1. 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"
  1. 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.
  1. 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"
  1. Terapkan konfigurasi file:
kubectl create -f cpu-mem-demo-pod.yaml --namespace=team-a
  1. 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

  1. 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.

  1. Setelah Anda berada di halaman Overview, pilih Dashboards dari menu sebelah kiri:

Opsi Dashboards yang disorot pada halaman Overview.

  1. 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:

Beberapa nama yang tertera pada tabel Namespaces, termasuk informasi seperti catatan Alerts dan Error.

Anda juga dapat melihat data penggunaan untuk workload yang sedang berjalan pada cluster Anda di tabel Workloads.

  1. Klik View All.

  2. Pada box ADD FILTER pilih Namespaces > team-a.

  3. Lalu klik Apply.

Ini akan menerapkan filter workload agar hanya mencakup workload yang berjalan pada namespace team-a:

Metrics Explorer

  1. Dari panel sebelah kiri, pilih Metrics Explorer.

  2. Di kolom Select a metric, klik menu dropdown Metric.

  3. Ketik Kubernetes Container pada filter menurut resource dan nama metrik.

  4. Klik Kubernetes Container > Container.

  5. Pilih CPU usage time.

  6. Klik Apply.

Catatan: Ketik cp pada kolom metrik dan Anda seharusnya melihat waktu penggunaan CPU tampil sebagai opsi dari menu dropdown.
  1. Untuk mengecualikan namespace kube-system, klik Add filter pada bagian filter.

  2. Pilih namespace_name sebagai Label.

  3. Pilih != (does not equal) sebagai pembanding dan kube-system sebagai nilai.

  4. 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:

Metrics explorer menunjukkan grafik yang menampilkan waktu penggunaan ditampilkan menurut nama namespace dan tarif.

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.

  1. 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
  1. 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
  1. 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"
  1. 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)"
  1. 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

  1. Buka halaman Sumber Data Looker Studio.

  2. 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.

  1. Beri centang pada kotak persetujuan dan kemudian klik Continue.

  2. Pilih No untuk setiap tampilan Set up your email preferences, karena ini merupakan lab/akun sementara.

  3. Klik Continue.

Daftar Google Connectors yang didukung oleh Looker Studio akan muncul.

  1. Pilih BigQuery dari daftar tersebut.

Google connector BigQuery ditampilkan bersama dengan ikon More.

  1. Klik tombol Authorize untuk mengizinkan Looker Studio mengakses project BigQuery Anda.

  2. Di bagian kiri atas halaman, ganti nama sumber data Anda dari Untitled Data Source menjadi GKE Usage.

  3. Dari kolom pertama, pilih CUSTOM QUERY.

  4. Pilih project ID Anda dari kolom projects.

  5. 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`
  1. Klik CONNECT.

Klik Check my progress untuk memastikan Anda telah melakukan tugas di atas. Memantau GKE dan pengukuran penggunaan GKE

  1. Selanjutnya, klik pada bagian kanan atas.

Setelah sumber data sudah ditambahkan, waktunya menggunakan sumber data tersebut untuk membuat laporan.

  1. Pada bagian atas halaman sumber data Anda, klik CREATE REPORT.

Tombol Create report ditandai pada halaman sumber data GKE Metering.

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.

  1. 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:

Tabel dengan dua kolom dan dua baris dengan judul kolom: cluster_location dan Record Count.

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.

  1. 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.

  1. 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:

Opsi pemfilteran ditetapkan ke &#39;Exclude&#39;, yang mana namespace telah dipilih.

  1. Klik Save.

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

Opsi pemfilteran ditetapkan ke &#39;Include&#39;, yang mana type telah dipilih.

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

Tabel dengan dua kolom dan dua baris dengan judul kolom: namespace dan cost.

Selanjutnya, Anda akan membuat diagram lingkaran dari laporan Anda yang menampilkan rincian biaya berdasarkan namespace.

  1. Klik kanan tabel yang Anda buat dan pilih Duplicate.

  2. Tarik objek tabel duplikat tersebut ke bagian mana pun pada laporan Anda.

  3. Kemudian, klik header dari panel konfigurasi:

Kategori Table ditandai pada bagian Chart dari panel konfigurasi.

  1. Dari opsi yang ada, klik ikon pie chart:

Beberapa kotak menampilkan berbagai jenis diagram, dan diagram lingkaran ditandai.

Diagram lingkaran yang dihasilkan akan terlihat seperti ini:

Empat baris data tabel ditampilkan dalam format diagram lingkaran.

Berikutnya, Anda akan menambahkan diagram donat yang akan menampilkan rincian biaya berdasarkan jenis resource.

  1. Dari toolbar di bagian atas, klik Add a chart dan pilih 23497d0573f8232a.png (Donut) untuk membuat diagram donat.

  2. 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
  1. Klik Add a Filter dan pilih 2 filter yang Anda terapkan pada diagram sebelumnya. Diagram donat yang dihasilkan akan terlihat seperti ini:

Diagram lingkaran menampilkan dua baris data yang tersisa setelah filter diterapkan.

  1. Untuk menambahkan rincian berdasarkan namespace, dari toolbar di bagian atas, klik Add a control dan pilih Drop-down list.

  2. Tarik ke sebelah diagram donat Anda dan konfigurasikan isinya sebagai berikut:

  • Data Range Dimension: usage_start_time
  • Control field: namespace
  • Metric: None
  1. Klik Add a filter.

  2. Pilih unallocated (namespace filter) dari daftar.

  3. 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.

  4. Klik kanan dan pilih Group untuk mengikat keduanya menjadi satu grup:

Bentuk kotak di sekitar objek dan pilihan Group disorot pada menu klik kanan

  1. Untuk pratinjau laporan Anda, klik View pada toolbar di bagian atas.

Di mode tampilan, Anda dapat menyesuaikan tampilan diagram donat Anda terhadap namespace tertentu:

Tabel dengan tiga kolom dengan dua diagram lingkaran, masing-masing berisi data yang berbeda.

  1. 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 2024 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.

Konten ini tidak tersedia untuk saat ini

Kami akan memberi tahu Anda melalui email saat konten tersedia

Bagus!

Kami akan menghubungi Anda melalui email saat konten tersedia