Langkah-langkah dan log berikut berguna untuk memecahkan masalah terkait dukungan VM Anthos Service Mesh.
Men-debug VM
Jika Anda melihat bahwa instance VM berjalan tetapi tidak dapat dijangkau dari mesh, lakukan langkah-langkah berikut pada instance VM.
Verifikasi agen
Periksa kondisi proxy envoy:
curl localhost:15000/ready -v
Memeriksa log error envoy
less /var/log/envoy/envoy.err.log
Periksa apakah ada
service-proxy-agent
error:journalctl -u service-proxy-agent
Periksa
syslog
dalam log Kemampuan Observabilitas Google Cloud untuk instance atau pada VM di bagian/var/log/syslog
untuk Debian, dan/var/log/messages
untuk Centos.
Memverifikasi kondisi proxy
Untuk men-debug konfigurasi proxy, jalankan perintah berikut di VM:
curl localhost:15000/config_dump > config.out
Salin file tersebut dan jalankan perintah berikut:
istioctl proxy-config [cluster|route|listener] --file config.out
Error token tidak valid
Anda mungkin melihat error yang serupa dengan berikut ini dalam log error envoy:
E0217 17:59:17.206995798 2411 oauth2_credentials.cc:152] Call to http server ended with error 500 [{
"error": "invalid_target",
"error_description": "federated token response does not have access token. {\"error\":\"invalid_grant\",\"error_description\":\"JWT expired.\"}",
"error_uri": ""
}].
Dalam hal ini, periksa apakah masa berlaku token di /var/run/secrets/tokens/istio-token
pada VM telah berakhir dan pastikan nilai exp
(epoch detik) belum berlalu:
cat /var/run/secrets/tokens/istio-token | cut -d '.' -f2 | base64 -d | python -m json.tool
{
...
"azp": "...",
"email": "example-service-account@developer.gserviceaccount.com",
"email_verified": true,
"exp": 1613995395,
"google": {
"compute_engine": {
"instance_creation_timestamp": 1613775765,
"instance_id": "5678",
"instance_name": "vm-instance-03-0mqh",
"project_id": "...",
"project_number": 1234,
"zone": "us-central1-c"
}
},
"iat": ...,
"iss": "https://accounts.google.com",
"sub": "..."
}
Info peringatan distribusi OS tidak didukung
Dalam memverifikasi agen, jika Anda melihat pesan peringatan yang mirip dengan berikut ini di log service-proxy-agent:
E0217 17:59:17.206995798 2021-04-09T21:21:29.6091Z service-proxy-agent Warn
Detected image is unsupported: [Ubuntu|Fedora|Suse]. Envoy may not work correctly.
Artinya, distribusi Linux Anda mungkin tidak didukung, yang dapat menyebabkan proxy Anda memiliki perilaku yang tidak terduga.
Men-debug cluster
Gunakan langkah-langkah berikut untuk memecahkan masalah cluster Anda.
Memastikan bahwa pendaftaran otomatis berfungsi
Periksa
WorkloadEntry
yang dibuat secara otomatis olehistiod
:kubectl get workloadentry -n WORKLOAD_NAMESPACE
Selain itu, Anda dapat memeriksa keberadaan Kubernetes Object Browser.
Jika tidak ada, periksa error dalam log
istiod
, yang akan tersedia untuk Anda di Kemampuan Observasi Google Cloud. Atau, Anda dapat mengambilnya secara langsung:kubectl -n istio-system get pods -l app=istiod
Output yang diharapkan mirip dengan:
NAME READY STATUS RESTARTS AGE istiod-asm-190-1-7f6699cfb-5mzxw 1/1 Running 0 5d13h istiod-asm-190-1-7f6699cfb-pgvpf 1/1 Running 0 5d13h
Tetapkan variabel lingkungan pod dan gunakan untuk mengekspor log:
export ISTIO_POD=istiod-asm-190-1-7f6699cfb-5mzxw kubectl logs -n istio-system ${ISTIO_POD} | grep -i 'auto-register\|WorkloadEntry'
Memeriksa proxy yang terhubung
Anda dapat menggunakan perintah proxy-status
untuk menampilkan semua proxy yang terhubung, termasuk proxy untuk VM:
istioctl proxy-status
Output akan menampilkan proxy yang terhubung yang mirip dengan:
NAME CDS LDS EDS RDS ISTIOD VERSION
details-v1-5f449bdbb9-bhl8d.default SYNCED SYNCED SYNCED SYNCED istiod-asm-190-1-7f6699cfb-5mzxw 1.9.0-asm.1
httpbin-779c54bf49-647vd.default SYNCED SYNCED SYNCED SYNCED istiod-asm-190-1-7f6699cfb-pgvpf 1.9.0-asm.1
istio-eastwestgateway-5b6d4ddd9d-5rzx2.istio-system SYNCED SYNCED SYNCED NOT SENT istiod-asm-190-1-7f6699cfb-pgvpf 1.9.0-asm.1
istio-ingressgateway-66b6ddd7cb-ctb6b.istio-system SYNCED SYNCED SYNCED SYNCED istiod-asm-190-1-7f6699cfb-pgvpf 1.9.0-asm.1
istio-ingressgateway-66b6ddd7cb-vk4bb.istio-system SYNCED SYNCED SYNCED SYNCED istiod-asm-190-1-7f6699cfb-5mzxw 1.9.0-asm.1
vm-instance-03-39b3.496270428946 SYNCED SYNCED SYNCED SYNCED istiod-asm-190-1-7f6699cfb-pgvpf 1.9.0
vm-instance-03-nh5k.496270428946 SYNCED SYNCED SYNCED SYNCED istiod-asm-190-1-7f6699cfb-pgvpf 1.9.0
vm-instance-03-s4nl.496270428946 SYNCED SYNCED SYNCED SYNCED istiod-asm-190-1-7f6699cfb-5mzxw 1.9.0
Untuk mengetahui informasi selengkapnya tentang opsi perintah, lihat istioctl proxy-config.
Memeriksa konfigurasi workload identity
Periksa status mesh
untuk mengetahui potensi error dalam cluster Anda. Perhatikan bahwa versi gcloud terbaru diperlukan. Untuk mengetahui informasi selengkapnya, lihat
update ke versi terbaru.
gcloud alpha container hub mesh describe --project=PROJECT_ID
Konfigurasi yang valid akan memiliki kode status OK
untuk cluster anggota:
createTime: '2021-06-15T21:56:10.221032150Z'
featureState:
detailsByMembership:
projects/<your project number>/locations/global/memberships/<your cluster name>:
code: OK
description: Revision(s) ready for use: istiod-asm-195-2.
updateTime: 2021-06-15T21:56:10.221032402Z
lifecycleState: ENABLED
name: projects/<your project name>/locations/global/features/servicemesh
servicemeshFeatureSpec: {}
updateTime: '2021-06-15T21:56:10.221032402Z'
Jika VM tidak dikonfigurasi dengan benar, kode status akan menjadi WARNING
dengan detail tambahan dalam deskripsi:
createTime: '2021-06-15T22:56:10.227167202Z'
featureState:
detailsByMembership:
projects/<your project number>/locations/global/memberships/<your cluster name>:
code: WARNING
description: |-
Revision(s) ready for use: istiod-asm-195-2.
WorkloadGroup <namespace>/<workloadgroup name> missing ServiceAccount field, please see https://cloud.google.com/service-mesh/v1.11/docs/troubleshooting/troubleshoot-vms#verify_the_workloadgroup_is_set_up_correctly.
servicemeshFeatureState: {}
updateTime: '2021-06-15T22:56:00.220164192Z'
lifecycleState: ENABLED
name: projects/<your project name>/locations/global/features/servicemesh
servicemeshFeatureSpec: {}
updateTime: '2021-06-15T22:56:10.227167402Z'
Memverifikasi bahwa penyedia identitas disiapkan dengan benar
Periksa kolom resource IdentityProvider
:
kubectl describe identityprovider
Pastikan kolom memenuhi persyaratan berikut:
- Kolom
serviceAccount
disetel kerequest.auth.claims["email"]
- Kolom
issuerURI
disetel kehttps://accounts.google.com
(saat ini kami hanya mendukung google sebagai publisherURI) Kolom
name
penyedia di bagian metadata harus disetel kegoogle
, yang merupakan satu-satunya penyedia yang saat ini didukung.Contoh CR
IdentityProvider
yang valid:apiVersion: security.cloud.google.com/v1alpha1 kind: IdentityProvider metadata: name: google spec: authentication: oidc: issuerUri: https://accounts.google.com serviceAccount: request.auth.claims["email"]
Memastikan WorkloadGroup
disiapkan dengan benar
Periksa WorkloadGroup
:
kubectl get workloadgroup -n WORKLOAD_NAMESPACE
Pastikan hasilnya memenuhi persyaratan berikut:
- Kolom
serviceAccount
ditetapkan dengan benar, misalnya373206437219-compute@developer.gserviceaccount.com
dengan akun yang sama dengan akun layanan yang digunakan oleh instance VM security.cloud.google.com/IdentityProvider
pada kolom anotasi ditetapkan, misalnya,security.cloud.google.com/IdentityProvider: google
Grup beban kerja merujuk ke
IdentityProvider
yang valid, yang dapat diverifikasi dengan memeriksa penyedia identitas yang ada:kubectl describe identityprovider
Output harus berupa daftar penyedia yang ada seperti ini:
NAME AGE google 39m
Periksa kolom
security.cloud.google.com/IdentityProvider
diWorkloadGroup
apakah penyedia ada dalam daftar penyedia yang sudah ada.Contoh CR
WorkloadGroup
yang valid:apiVersion: networking.istio.io/v1alpha3 kind: WorkloadGroup metadata: name: wg-a namespace: foo spec: metadata: annotations: security.cloud.google.com/IdentityProvider: google labels: app: wg-a template: ports: grpc: 3550 http: 8080 serviceAccount: 373206437219-compute@developer.gserviceaccount.com
Ditemukan Error Internal
Jika Anda menerima pesan Internal Error Found
, lihat Mendapatkan dukungan.
Panduan pemecahan masalah Istio VM
Untuk langkah-langkah pemecahan masalah lainnya, lihat Men-debug Mesin Virtual.