Halaman ini menunjukkan cara menyelidiki dan menyelesaikan masalah terkait logging GKE.
Jika Anda memerlukan bantuan tambahan, hubungi Cloud Customer Care.Log cluster tidak ada di Cloud Logging
Memastikan logging diaktifkan dalam project
Cantumkan layanan yang diaktifkan:
gcloud services list --enabled --filter="NAME=logging.googleapis.com"
Output berikut menunjukkan bahwa logging diaktifkan untuk project ini:
NAME TITLE logging.googleapis.com Cloud Logging API
Opsional: Periksa log di Logs Viewer untuk mengetahui siapa yang menonaktifkan API dan kapan mereka menonaktifkan API:
protoPayload.methodName="google.api.serviceusage.v1.ServiceUsage.DisableService" protoPayload.response.services="logging.googleapis.com"
Jika logging dinonaktifkan, aktifkan logging:
gcloud services enable logging.googleapis.com
Memastikan logging diaktifkan di cluster
Cantumkan cluster:
gcloud container clusters list \ --project=PROJECT_ID \ '--format=value(name,loggingConfig.componentConfig.enableComponents)' \ --sort-by=name | column -t
Ganti kode berikut:
PROJECT_ID
: ID project Google Cloud Anda.
Outputnya mirip dengan yang berikut ini:
cluster-1 SYSTEM_COMPONENTS cluster-2 SYSTEM_COMPONENTS;WORKLOADS cluster-3
Jika nilai cluster Anda kosong, logging akan dinonaktifkan. Misalnya,
cluster-3
dalam output ini menonaktifkan logging.Aktifkan logging cluster jika ditetapkan ke
NONE
:gcloud container clusters update CLUSTER_NAME \ --logging=SYSTEM,WORKLOAD \ --location=COMPUTE_LOCATION
Ganti kode berikut:
CLUSTER_NAME
: nama cluster Anda.COMPUTE_LOCATION
: Lokasi Compute Engine untuk cluster Anda.
Memastikan node di node pool memiliki cakupan akses Cloud Logging
Salah satu cakupan berikut diperlukan bagi node untuk menulis log ke Cloud Logging:
https://www.googleapis.com/auth/logging.write
https://www.googleapis.com/auth/cloud-platform
https://www.googleapis.com/auth/logging.admin
Periksa cakupan yang dikonfigurasi pada setiap node pool di cluster:
gcloud container node-pools list --cluster=CLUSTER_NAME \ --format="table(name,config.oauthScopes)" \ --location COMPUTE_LOCATION
Ganti kode berikut:
CLUSTER_NAME
: nama cluster Anda.COMPUTE_LOCATION
: Lokasi Compute Engine untuk cluster Anda.
Migrasikan workload Anda dari node pool lama ke node pool yang baru dibuat dan pantau progresnya.
Buat node pool baru dengan cakupan logging yang benar:
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --location=COMPUTE_LOCATION \ --scopes="gke-default"
Ganti kode berikut:
CLUSTER_NAME
: nama cluster Anda.COMPUTE_LOCATION
: Lokasi Compute Engine untuk cluster Anda.
Memastikan bahwa akun layanan node pool memiliki peran dengan izin IAM yang benar
Akun layanan harus memiliki peran yang berisi izin logging.logEntries.create
untuk membuat log.
Temukan akun layanan untuk setiap node pool:
gcloud container node-pools list \ --cluster=CLUSTER_NAME \ --format="table(name,config.serviceAccount)" \ --location=COMPUTE_LOCATION
Ganti kode berikut:
CLUSTER_NAME
: nama cluster Anda.COMPUTE_LOCATION
: Lokasi Compute Engine untuk cluster Anda.
Outputnya mirip dengan hal berikut ini:
NAME SERVICE_ACCOUNT default-pool gke-cluster-sa@developer.gserviceaccount.com
Jika node pool menggunakan akun layanan Compute Engine default, Anda dapat mendeskripsikannya menggunakan perintah berikut. Sebagai praktik terbaik, gunakan akun layanan kustom dengan hak istimewa minimal untuk node pool Anda. Akun layanan Compute Engine default berisi lebih dari izin minimum yang diperlukan untuk menjalankan cluster Anda.
gcloud compute project-info describe --format="table(defaultServiceAccount)"
Pastikan peran IAM memiliki izin yang memadai.
Lihat izin yang terdapat dalam peran yang diberikan ke akun layanan tertentu:
gcloud projects get-iam-policy PROJECT_ID \ --flatten="bindings[]" \ --filter="bindings.members=serviceAccount:SERVICE_ACCOUNT" \ --format="table[box](bindings.role)"
Berikan peran yang berisi izin
logging.logEntries.create
ke akun layanan. Anda dapat menggunakan peran yang telah ditetapkan atau membuat peran khusus.
Memverifikasi bahwa kuota API penulisan Cloud Logging belum tercapai
Pastikan Anda belum mencapai kuota penulisan API untuk Cloud Logging.
Buka halaman Quotas di Konsol Google Cloud.
Filter tabel berdasarkan "Cloud Logging API".
Pastikan Anda belum mencapai batas kuota.
Men-debug masalah logging GKE dengan gcpdiag
Jika Anda tidak memiliki atau mendapatkan log yang tidak lengkap dari cluster GKE, gunakan alatgcpdiag
untuk memecahkan masalah.
gcpdiag
adalah alat open source. Ini bukan produk Google Cloud yang didukung secara resmi.
Anda dapat menggunakan alat gcpdiag
untuk membantu mengidentifikasi dan memperbaiki masalah project Google Cloud. Untuk mengetahui informasi selengkapnya, lihat
project gcpdiag di GitHub.
- Logging Tingkat Project: Memastikan bahwa project Google Cloud yang menghosting cluster GKE telah mengaktifkan Cloud Logging API.
- Logging Tingkat Cluster: Memverifikasi bahwa logging diaktifkan secara eksplisit dalam konfigurasi cluster GKE.
- Izin Node Pool: Mengonfirmasi bahwa node dalam node pool cluster telah mengaktifkan cakupan 'Cloud Logging Write', sehingga node tersebut dapat mengirim data log.
- Izin Akun Layanan: Memvalidasi bahwa akun layanan yang digunakan oleh node pool memiliki izin IAM yang diperlukan untuk berinteraksi dengan Cloud Logging. Secara khusus, peran 'roles/logging.logWriter' biasanya diperlukan.
- Kuota Tulis Cloud Logging API: Memverifikasi bahwa kuota Tulis Cloud Logging API belum terlampaui dalam jangka waktu yang ditentukan.
Konsol Google Cloud
- Selesaikan, lalu salin perintah berikut.
- Buka konsol Google Cloud dan aktifkan Cloud Shell. Buka Cloud Console
- Tempel perintah yang disalin.
- Jalankan perintah
gcpdiag
, yang mendownload image dockergcpdiag
, lalu melakukan pemeriksaan diagnostik. Jika berlaku, ikuti petunjuk output untuk memperbaiki pemeriksaan yang gagal.
gcpdiag runbook gke/logs \
--parameter project_id=PROJECT_ID \
--parameter name=GKE_NAME \
--parameter location=LOCATION
Docker
Anda dapat
menjalankan gcpdiag
menggunakan wrapper yang memulai gcpdiag
dalam
penampung Docker. Docker atau
Podman harus diinstal.
- Salin dan jalankan perintah berikut di workstation lokal Anda.
curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
- Jalankan perintah
gcpdiag
../gcpdiag runbook gke/logs \ --parameter project_id=PROJECT_ID \ --parameter name=GKE_NAME \ --parameter location=LOCATION
Lihat parameter yang tersedia untuk runbook ini.
Ganti kode berikut:
- PROJECT_ID: ID project yang berisi resource.
- GKE_NAME: Nama cluster GKE.
- LOCATION: Zona atau region cluster GKE.
Flag yang berguna:
--universe-domain
: Jika berlaku, domain Trusted Partner Sovereign Cloud yang menghosting resource--parameter
atau-p
: Parameter runbook
Untuk mengetahui daftar dan deskripsi semua flag alat gcpdiag
, lihat
petunjuk penggunaan gcpdiag
.