Halaman ini menjelaskan cara memecahkan masalah pada halaman Anthos Service Mesh di Konsol Google Cloud.
Daftar layanan tidak memiliki layanan tertentu
Jika layanan tidak ada di daftar, pastikan konfigurasi layanan Kubernetes ada di cluster Anda.
Untuk mendapatkan daftar semua layanan Kubernetes:
kubectl get services --all-namespaces
Untuk mendapatkan daftar layanan Kubernetes dalam namespace tertentu:
kubectl get services -n YOUR_NAMESPACE
Data telemetri untuk layanan tidak ada atau salah
Secara default, Cloud Monitoring dan Cloud Logging diaktifkan di project Google Cloud saat Anda menginstal Anthos Service Mesh. Untuk melaporkan data telemetri, setiap proxy file bantuan yang dimasukkan ke pod layanan akan memanggil Cloud Monitoring API dan Cloud Logging API. Setelah men-deploy workload, perlu waktu sekitar satu atau dua menit untuk menampilkan data telemetri di Google Cloud Console. Anthos Service Mesh secara otomatis menjaga dasbor layanan tetap terbaru:
Untuk metrik, proxy file bantuan memanggil Cloud Monitoring API kira-kira setiap menit.
Untuk memperbarui grafik Topologi, proxy file bantuan mengirim laporan inkremental kira-kira setiap menit dan laporan lengkap setiap sepuluh menit.
Untuk logging, proxy file bantuan memanggil Cloud Logging API kira-kira setiap sepuluh detik.
Untuk melakukan perekaman aktivitas, Anda harus mengaktifkan Cloud Trace. Rekaman aktivitas dilaporkan sesuai dengan frekuensi pengambilan sampel yang telah dikonfigurasi (biasanya, satu dari setiap 100 permintaan).
Metrik hanya ditampilkan untuk layanan HTTP di halaman Anthos Service Mesh Metrics. Jika Anda tidak melihat metrik apa pun, periksa hal berikut:
Memverifikasi bahwa proxy file bantuan telah dimasukkan
Pastikan semua pod di namespace untuk layanan aplikasi Anda telah memasukkan proxy file bantuan:
kubectl get pod -n YOUR_NAMESPACE --all
Pada contoh output dari perintah sebelumnya berikut, perhatikan bahwa
kolom READY
menunjukkan bahwa ada dua penampung untuk setiap
beban kerja: penampung utama dan container untuk proxy sidecar.
NAME READY STATUS RESTARTS AGE YOUR_WORKLOAD 2/2 Running 0 20s ...
Jika Anda tidak melihat dua penampung, periksa apakah namespace Anda memiliki
label istio-injection=enabled
, yang menunjukkan bahwa injeksi bantuan
otomatis diaktifkan:
kubectl get ns --show-labels
Contoh output:
NAME STATUS AGE LABELS default Active 35m istio-injection=enabled istio-system Active 34m istio-injection=disabled,istio-operator-managed=Reconcile
Jika Anda tidak melihat label
istio-injection=enabled
, jalankan perintah berikut untuk mengaktifkan injeksi file bantuan otomatis:kubectl label namespace YOUR_NAMESPACE istio-injection=enabled --overwrite
Jika Anda melihat label
istio-injection=enabled
, dan telah menginstal Anthos Service Mesh pada cluster Google Kubernetes Engine yang sudah ada yang memiliki beban kerja, Anda perlu memulai ulang pod yang berjalan agar proxy sidecar dimasukkan atau diupdate dengan versi Anthos Service Mesh saat ini. Lihat Memperbarui file bantuan untuk pod yang sudah ada untuk mengetahui informasi selengkapnya.
Memverifikasi nama port layanan Kubernetes
Periksa nama port layanan Kubernetes untuk memverifikasi bahwa Anthos Service Mesh menganggap layanan sebagai layanan HTTP. Agar disertakan dalam Anthos Service Mesh, port layanan harus diberi nama, dan namanya harus menyertakan protokol port, misalnya:
apiVersion: v1 kind: Service metadata: name: ratings labels: app: ratings service: ratings spec: ports: - port: 9080 name: http
Nama port layanan dapat menyertakan akhiran dalam sintaksis berikut:
name: protocol[-suffix]
dengan tanda kurung siku menunjukkan akhiran opsional yang harus diawali dengan
tanda hubung, misalnya:
kind: Service metadata: name: myservice spec: ports: - number: 3306 name: mysql - number: 80 name: http-web
Agar metrik ditampilkan di Konsol Google Cloud, port layanan harus diberi nama dengan salah satu protokol berikut: http
, http2
, atau grpc
.
Port layanan yang diberi nama dengan protokol https
diperlakukan sebagai tcp
, dan metrik tidak ditampilkan untuk layanan tersebut.
Memastikan API yang diperlukan sudah diaktifkan
Anthos Service Mesh memerlukan beberapa API untuk melaporkan dan menampilkan telemetri.
Anda dapat melihat API mana yang diaktifkan untuk project Anda menggunakan
perintah gcloud services list
, atau cukup aktifkan semua API yang diperlukan
untuk memastikan Anda mendapatkan semuanya.
Tetapkan project default untuk Google Cloud CLI:
gcloud config set project
YOUR_PROJECT_ID
Aktifkan semua API yang diperlukan:
gcloud services enable \ container.googleapis.com \ compute.googleapis.com \ monitoring.googleapis.com \ logging.googleapis.com \ meshca.googleapis.com \ meshtelemetry.googleapis.com \ meshconfig.googleapis.com \ iamcredentials.googleapis.com \ anthos.googleapis.com
Memverifikasi bahwa Akun Layanan ASM Mesh Data Plane ada
Di Konsol Google Cloud, buka halaman IAM:
Pilih project Anda.
Dalam daftar anggota, cari akun layanan dengan nama ASM Mesh Data Plane Service Account.
Jika akun layanan tidak ada, buat akun tersebut:
curl --request POST \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --data '' \ https://meshconfig.googleapis.com/v1alpha1/projects/YOUR_PROJECT_ID:initialize
Memastikan workload Anda berjalan
Di Konsol Google Cloud, buka halaman Beban Kerja GKE:
Pilih project Anda.
Tambahkan filter untuk cluster Anda. Pastikan semua workload untuk aplikasi Anda dan Anthos Service Mesh aktif dan berjalan dengan status
OK
. Beban kerja mungkin gagal karena resource terbatas (CPU, memori, dll.), sehingga Anda perlu mengupgrade cluster dengan resource yang lebih besar. Baca Mengubah ukuran cluster untuk mengetahui informasi selengkapnya.
Memverifikasi bahwa aplikasi Anda menyalurkan permintaan
Verifikasi bahwa aplikasi Anda secara akting menyalurkan permintaan. QPS mungkin rendah, tetapi seharusnya menerima traffic.
Grafik topologi kosong
Jika grafik topologi tidak menampilkan layanan Anda dan menampilkan pesan
error No data available to graph. Check your filters and try again
, periksa
hal berikut:
Memverifikasi ID mesh
Pastikan cluster memiliki label mesh_id
yang benar:
Dapatkan nomor project, yang merupakan nomor unik yang dibuat secara otomatis saat Anda membuat project.
Pastikan cluster memiliki label
mesh_id
dalam format berikut:mesh_id: proj-PROJECT_NUMBER
Perbaiki label
mesh_id
jika tidak ada atau salah. Untuk informasi selengkapnya, lihat Menambahkan atau memperbarui label untuk cluster yang ada.Tetapkan variabel lingkungan berikut:
Tetapkan ID project:
export PROJECT_ID=
YOUR_PROJECT_ID
Tetapkan nomor project:
export PROJECT_NUMBER=YOUR_PROJECT_NUMBER
Tetapkan nama cluster:
export CLUSTER_NAME=YOUR_CLUSTER_NAME
Tetapkan
CLUSTER_LOCATION
ke zona cluster atau region cluster Anda:export CLUSTER_LOCATION=YOUR_ZONE_OR_REGION
Tetapkan kumpulan beban kerja:
export WORKLOAD_POOL=${PROJECT_ID}.svc.id.goog
Setel ID mesh:
export MESH_ID="proj-${PROJECT_NUMBER}"
Deploy ulang Anthos Service Mesh dengan opsi yang sama dengan yang Anda gunakan sebelumnya.
Setiap beban kerja yang berjalan di cluster sebelum Anda menginstal Anthos Service Mesh harus mengupdate proxy sidecar agar memiliki Anthos Service Mesh terbaru.
kubectl rollout restart YOUR_DEPLOYMENT -n YOUR_NAMESPACE