Dokumen ini menyajikan teknik pemecahan masalah untuk deployment Endpoints 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:
Memberikan otorisasi pada
gcloud:gcloud auth login gcloud auth application-default loginMembuat cluster. Anda dapat menggunakan perintah
gcloudberikut, atau membuat cluster menggunakan konsolGoogle Cloud .gcloud container clusters create CLUSTER_NAME
Ganti
CLUSTER_NAMEdengan 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 Endpoints > Services di Google Cloud console, lakukan langkah-langkah berikut:
- Periksa apakah semua layanan yang diperlukan telah diaktifkan.
- Periksa apakah semua izin yang diperlukan telah diberikan.
Mengakses log dari Extensible Service Proxy
Jika Anda perlu mengakses log Extensible Service Proxy (ESP) untuk mendiagnosis
masalah, gunakan kubectl sebagai berikut:
Dapatkan nama pod:
kubectl get pod NAME READY STATUS RESTARTS AGE esp-echo-174578890-x09gl 2/2 Running 2 21sNama pod adalah
esp-echo-174578890-x09gldan memiliki dua container:espdanecho.Untuk melihat log di pod, gunakan
kubectl logs:kubectl logs POD_NAME -c CONTAINER_NAME
Dengan
POD_NAMEdanCONTAINER_NAMEditampilkan dari perintahkubectl get podpada 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 di kolom --service dalam file manifes Deployment (disebut sebagai file deployment.yaml) cocok dengan nama host di properti name yang ditentukan dalam file YAML konfigurasi gRPC API (disebut sebagai file api_config.yaml).
Jika nama yang salah ada di file deployment.yaml:
Buka file
deployment.yaml, lalu 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_NAMEagar cocok dengan nama host yang ditentukan dalam propertinamedi fileapi_config.yaml, lalu simpan filedeployment.yaml.Mulai layanan Kubernetes:
kubectl create -f deployment.yaml
Jika nama yang salah ada di file api_config.yaml:
Dapatkan nama layanan yang dikonfigurasi untuk digunakan oleh Endpoints.
Hapus layanan:
gcloud endpoints services delete SERVICE_NAME
Ganti
SERVICE_NAMEdengan nama dari langkah sebelumnya. Perlu waktu 30 hari agar layanan dihapus dari Google Cloud. Anda tidak dapat menggunakan kembali nama layanan selama waktu ini.Buka file
api_config.yamldan perbaiki nama host di propertiname, lalu simpan file.Deploy konfigurasi layanan yang diperbarui:
gcloud endpoints services deploy api_descriptor.pb api_config.yaml api_config_http.yamlTunggu hingga konfigurasi layanan berhasil di-deploy.
Mulai layanan Kubernetes:
kubectl create -f deployment.yaml
Memeriksa file konfigurasi
Gunakan
sshuntuk terhubung ke pod menggunakankubectl:kubectl exec -ti -c CONTAINER_NAME POD_NAME bash
Ganti
CONTAINER_NAMEdengan nama container Anda danPOD_NAME dengan nama pod Anda. Di direktori
etc/nginx/endpoints/, periksa apakah ada error dalam file konfigurasi berikut:nginx.conf- File konfigurasinginxdengan direktif ESPservice.jso- File konfigurasi layanan
Mengakses halaman status Endpoint
Jika Anda menyetel rollout_strategy ke managed saat memulai ESP,
dan Anda perlu mengetahui ID konfigurasi yang digunakan oleh instance
ESP, halaman status Endpoints memiliki informasi tersebut.
Untuk mengakses halaman status Endpoint:
Gunakan
sshuntuk terhubung ke pod menggunakankubectl:kubectl exec -ti -c CONTAINER_NAME POD_NAME bash
Ganti
CONTAINER_NAMEdengan nama container Anda danPOD_NAMEdengan nama pod Anda.Instal
curl.Masukkan:
curl http://localhost:8090/endpoints_statusTab tersebut menampilkan sesuatu yang mirip dengan berikut ini:
"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 dengan Endpoints,
lihat
Mendapatkan nama layanan dan ID konfigurasi.