Memecahkan masalah umum

Halaman ini menunjukkan cara menyelesaikan masalah umum terkait GKE di AWS.

Jika Anda memerlukan bantuan tambahan, hubungi Layanan Pelanggan Cloud.

Pesan error umum

Bagian berikut menjelaskan penyebab dan resolusi untuk beberapa pesan error umum.

Server tidak memiliki resource

Error seperti error: the server doesn't have a resource type "services" dapat terjadi jika cluster tidak memiliki node pool yang berjalan, atau Connect gateway tidak dapat terhubung ke node pool. Untuk memeriksa status node pool, jalankan perintah berikut:

gcloud container aws node-pools list \
    --cluster-name CLUSTER_NAME \
    --location LOCATION

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster Anda
  • LOCATION: lokasi yang mengelola cluster Anda Google Cloud

Output menyertakan status node pool cluster Anda. Jika Anda tidak memiliki node pool yang tercantum, Buat node pool.

Pengguna yang dilarang

Error berikut terjadi jika nama pengguna Anda tidak memiliki akses administrator ke cluster Anda:

Error from server (Forbidden): users "administrator@example.com" is forbidden:
User "system:serviceaccount:gke-connect:connect-agent-sa" cannot impersonate
resource "users" in API group "" at the cluster scope

Anda dapat mengonfigurasi pengguna tambahan dengan meneruskan --admin-users flag saat membuat cluster.

Jika Anda menggunakan Connect gateway dan tidak dapat terhubung ke cluster, coba langkah-langkah berikut:

  1. Dapatkan pengguna yang diizinkan untuk cluster Anda.

    gcloud container aws clusters describe CLUSTER_NAME \
        --format 'value(authorization.admin_users)'
    

    Ganti CLUSTER_NAME dengan nama cluster Anda.

    Output menyertakan nama pengguna dengan akses administrator ke cluster. Contoh:

    {'username': 'administrator@example.com'}
    
  2. Dapatkan nama pengguna yang saat ini diautentikasi dengan Google Cloud CLI.

    gcloud config get-value account
    

    Output menyertakan akun yang diautentikasi dengan Google Cloud CLI. Jika output gcloud containers aws clusters describe dan gcloud config get-value account tidak cocok, jalankan gcloud auth login dan lakukan autentikasi sebagai nama pengguna dengan akses administratif ke cluster.

Masalah dengan perintah kubectl

Bagian berikut memberikan panduan tentang cara mengatasi masalah dengan perintah kubectl yang tidak responsif atau gagal.

Perintah kubectl berhenti merespons

Jika cluster Anda menjalankan versi Kubernetes yang lebih lama dari 1.25 dan perintah kubectl tidak responsif atau waktu tunggu habis, alasan paling umum adalah Anda belum membuat node pool. Secara default, GKE di AWS menghasilkan file kubeconfig yang menggunakan Connect gateway sebagai endpoint yang dapat dijangkau internet. Agar berfungsi, Deployment gke-connect-agent harus berjalan di node pool pada cluster.

Untuk informasi diagnostik selengkapnya, jalankan perintah berikut:

kubectl cluster-info -v=9

Jika tidak ada node pool yang berjalan, Anda akan melihat permintaan ke connectgateway.googleapis.com gagal dengan error cannot find active connections for cluster 404.

Untuk cluster dengan versi Kubernetes 1.25 atau yang lebih baru, gke-connect-agent berjalan di bidang kontrol, dan node pool tidak diperlukan. Jika perintah kubectl tidak responsif, periksa log komponen bidang kontrol dengan Cloud Logging.

Perintah kubectl exec, attach, dan port-forward gagal

Perintah kubectl exec, kubectl attach, dan kubectl port-forward mungkin gagal dengan pesan error: unable to upgrade connection saat menggunakan Connect gateway. Ini adalah batasan saat menggunakan Connect gateway sebagai endpoint Server Kubernetes API.

Untuk mengatasi hal ini, gunakan kubeconfig yang menentukan endpoint pribadi cluster. Untuk mengetahui petunjuk tentang cara mengakses cluster melalui endpoint pribadinya, lihat Mengonfigurasi akses cluster untuk kubectl.

kubectl logs gagal dengan error jarak jauh: tls: internal error

Masalah ini mungkin terjadi jika Peran API Bidang Kontrol tidak memiliki izin. Misalnya, hal ini dapat terjadi jika peran AWS Anda tidak memiliki izin ec2:DescribeDhcpOptions. Dalam hal ini, permintaan penandatanganan sertifikat dari node tidak dapat disetujui, dan node pekerja tidak memiliki sertifikat yang valid.

Untuk menentukan apakah ini masalahnya, Anda dapat memeriksa apakah ada Permintaan Penandatanganan Sertifikat yang tertunda dan belum disetujui dengan perintah ini:

kubectl get csr

Untuk mengatasinya, pastikan peran AWS Anda sesuai dengan persyaratan.

Pemecahan masalah kubectl generik

Jika Anda menggunakan Connect gateway:

  • Pastikan Anda telah mengaktifkan Connect gateway di project Google Cloud Anda:

    gcloud services enable connectgateway.googleapis.com
    
  • Untuk cluster dengan versi Kubernetes yang lebih lama dari 1.25, pastikan Anda memiliki setidaknya satu node pool Linux yang berjalan dan gke-connect-agent berjalan. Untuk mengetahui detailnya, lihat Memecahkan masalah koneksi cluster.

  • Untuk cluster dengan versi Kubernetes 1.25 atau yang lebih baru, periksa gke-connect-agent log dengan Cloud Logging.

Service Kubernetes (LoadBalancer) atau Kubernetes Ingress tidak berfungsi

Jika AWS Elastic Load Balancer (ELB/NLB/ALB) Anda dibuat tetapi tidak beroperasi seperti yang diharapkan, hal ini mungkin disebabkan oleh masalah dengan pemberian tag subnet. Untuk mengetahui informasi selengkapnya, lihat Subnet load balancer.

Pod di node Arm mengalami error

Masalah berikut terjadi saat Anda men-deploy Pod pada node Arm, tetapi image container tidak dibuat untuk arsitektur Arm.

Untuk mengidentifikasi masalah, selesaikan tugas berikut:

  1. Dapatkan status Pod Anda:

    kubectl get pods
    
  2. Dapatkan log untuk Pod yang mengalami error:

    kubectl logs POD_NAME
    

    Ganti POD_NAME dengan nama Pod yang mengalami error.

    Pesan error di log Pod Anda mirip dengan pesan berikut:

    exec ./hello-app: exec format error
    

Untuk mengatasi masalah ini, pastikan image container Anda mendukung arsitektur Arm. Sebagai praktik terbaik, build beberapa image arsitektur.

Tidak dapat menghapus cluster

Jika Anda menerima error yang mirip dengan berikut saat mencoba menghapus cluster, peran GKE Multi-Cloud API Anda mungkin tidak ada:

ERROR: (gcloud.container.aws.clusters.delete) FAILED_PRECONDITION: Could not
assume role
"arn:aws:iam::ACCOUNT_NUMBER:role/gke123456-anthos-api-role"
through service account
"service-123456789@gcp-sa-gkemulticloud.iam.gserviceaccount.com".
Please make sure the role has a trust policy allowing the GCP service agent to
assume it: WebIdentityErr failed to retrieve credentials

Untuk memperbaiki masalah ini, ikuti langkah-langkah di Membuat peran GKE Multi-Cloud API. Saat Anda membuat ulang peran dengan nama dan izin yang sama, Anda dapat mencoba kembali perintah tersebut.

Langkah berikutnya