Dokumen ini menyajikan teknik pemecahan masalah untuk deployment Endpoint di Google Kubernetes Engine (GKE) dan Kubernetes.
Gagal di kubectl create -f gke.yaml
Jika Anda melihat pesan error Failed in kubectl create -f gke.yaml
, lakukan langkah-langkah berikut:
Izinkan
gcloud
:gcloud auth login gcloud auth application-default login
Membuat cluster. Anda dapat menggunakan perintah
gcloud
berikut, atau membuat cluster menggunakan Konsol Google Cloud.gcloud container clusters create CLUSTER_NAME
Ganti
CLUSTER_NAME
dengan nama cluster Anda.Dapatkan kredensial untuk cluster Anda dan sediakan untuk
kubectl
:gcloud container clusters get-credentials CLUSTER_NAME
Metrik dan log endpoint tidak ditampilkan
Jika Anda berhasil mengirim permintaan ke API, tetapi tidak melihat metrik atau log di halaman Endpoint > Layanan di Konsol Google Cloud, lakukan langkah-langkah berikut:
- Pastikan semua layanan yang diperlukan sudah diaktifkan.
- Periksa apakah semua izin yang diperlukan diberikan.
Mengakses log dari Extensible Service Proxy
Jika Anda perlu mengakses log Extensible Service Proxy (ESP) untuk mendiagnosis
masalah, gunakan kubectl
seperti berikut:
Mendapatkan nama pod:
kubectl get pod NAME READY STATUS RESTARTS AGE esp-echo-174578890-x09gl 2/2 Running 2 21s
Nama pod adalah
esp-echo-174578890-x09gl
dan memiliki dua penampung:esp
danecho
.Untuk melihat log dalam pod, gunakan
kubectl logs
:kubectl logs POD_NAME -c CONTAINER_NAME
Dengan
POD_NAME
danCONTAINER_NAME
ditampilkan dari perintahkubectl get pod
, di langkah sebelumnya. Contoh:kubectl logs esp-echo-174578890-x09gl -c esp
Memverifikasi nama layanan
Jika Anda melihat pesan errorFetching service config failed
, pastikan nama layanan yang Anda tentukan dalam kolom --service
pada file manifes Deployment (disebut file deployment.yaml
) cocok dengan nama host di properti name
yang ditentukan dalam file YAML konfigurasi gRPC API Anda (disebut sebagai file api_config.yaml
).
Jika nama yang salah dalam file deployment.yaml
:
Buka file
deployment.yaml
dan buka bagian yang dikonfigurasi untuk penampung ESP. Contoh:containers: - name: esp image: gcr.io/endpoints-release/endpoints-runtime:1 args: [ "--http_port=8081", "--backend=127.0.0.1:8080", "--service=SERVICE_NAME", "--rollout_strategy=managed" ]
Ubah
SERVICE_NAME
agar cocok dengan nama host yang ditentukan dalam propertiname
dalam fileapi_config.yaml
, lalu simpan filedeployment.yaml
.Mulai layanan Kubernetes:
kubectl create -f deployment.yaml
Jika nama yang salah dalam file api_config.yaml
:
Dapatkan nama layanan yang dikonfigurasi untuk digunakan oleh Endpoint.
Hapus layanan:
gcloud endpoints services delete SERVICE_NAME
Ganti
SERVICE_NAME
dengan nama dari langkah sebelumnya. Perlu waktu 30 hari untuk menghapus layanan dari Google Cloud. Anda tidak dapat menggunakan kembali nama layanan selama periode ini.Buka file
api_config.yaml
dan perbaiki nama host di propertiname
, lalu simpan file tersebut.Deploy konfigurasi layanan yang telah diupdate:
gcloud endpoints services deploy api_descriptor.pb api_config.yaml api_config_http.yaml
Tunggu hingga konfigurasi layanan berhasil di-deploy.
Mulai layanan Kubernetes:
kubectl create -f deployment.yaml
Memeriksa file konfigurasi
Gunakan
ssh
untuk terhubung ke pod menggunakankubectl
:kubectl exec -ti -c CONTAINER_NAME POD_NAME bash
Ganti
CONTAINER_NAME
dengan nama container danPOD_NAME dengan nama pod Anda. Dalam direktori
etc/nginx/endpoints/
, periksa file konfigurasi berikut untuk menemukan error:nginx.conf
- File konfigurasinginx
dengan perintah ESPservice.jso
- File konfigurasi layanan
Mengakses halaman status Endpoint
Jika Anda menetapkan rollout_strategy
ke managed
saat memulai ESP,
dan Anda perlu mencari tahu ID konfigurasi yang digunakan instance
ESP, halaman status Endpoint akan memiliki informasi tersebut.
Untuk mengakses halaman status Endpoint:
Gunakan
ssh
untuk terhubung ke pod menggunakankubectl
:kubectl exec -ti -c CONTAINER_NAME POD_NAME bash
Ganti
CONTAINER_NAME
dengan nama penampung Anda danPOD_NAME
dengan nama pod Anda.Instal
curl
.Masukkan:
curl http://localhost:8090/endpoints_status
Kode ini akan menampilkan sesuatu yang mirip seperti berikut:
"serviceConfigRollouts": { "rolloutId": "2017-08-09r27", "percentages": { "2017-08-09r26": "100" } }
Nilai dalam rolloutId
adalah ID konfigurasi layanan yang
digunakan ESP. Untuk memastikan bahwa ESP menggunakan
konfigurasi yang sama seperti Endpoint,
lihat
Mendapatkan nama layanan dan ID konfigurasi.