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:
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 kredensial tersebut 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 konsol Google Cloud, lakukan langkah-langkah berikut:
- Pastikan semua layanan yang diperlukan telah diaktifkan.
- Pastikan 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 21s
Nama pod adalah
esp-echo-174578890-x09gl
dan memiliki dua penampung:esp
danecho
.Untuk melihat log di 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 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 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
di fileapi_config.yaml
dan simpan filedeployment.yaml
.Mulai layanan Kubernetes:
kubectl create -f deployment.yaml
Jika nama yang salah ada dalam file api_config.yaml
:
Dapatkan nama layanan yang dikonfigurasi untuk digunakan Endpoint.
Hapus layanan:
gcloud endpoints services delete SERVICE_NAME
Ganti
SERVICE_NAME
dengan 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.yaml
dan perbaiki nama host di propertiname
, lalu simpan file.Deploy konfigurasi layanan yang telah diperbarui:
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. Di 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 Endpoints
Jika Anda menetapkan rollout_strategy
ke managed
saat memulai ESP,
dan Anda perlu mengetahui ID konfigurasi yang digunakan instance
ESP, halaman status Endpoint memiliki informasi tersebut.
Untuk mengakses halaman status Endpoints:
Gunakan
ssh
untuk terhubung ke pod menggunakankubectl
:kubectl exec -ti -c CONTAINER_NAME POD_NAME bash
Ganti
CONTAINER_NAME
dengan nama penampung danPOD_NAME
dengan nama pod Anda.Instal
curl
.Masukkan:
curl http://localhost:8090/endpoints_status
Tampilannya akan terlihat seperti berikut:
"serviceConfigRollouts": { "rolloutId": "2017-08-09r27", "percentages": { "2017-08-09r26": "100" } }
Nilai dalam rolloutId
adalah ID konfigurasi layanan yang
digunakan ESP. Untuk memastikan ESP menggunakan konfigurasi yang sama dengan Endpoint, lihat Mendapatkan nama layanan dan ID konfigurasi.