Memecahkan masalah pembuatan atau update cluster

Halaman ini menunjukkan cara menyelesaikan masalah terkait penginstalan atau upgrade GKE di AWS.

Jika Anda memerlukan bantuan lainnya, hubungi Cloud Customer Care.

Kegagalan pembuatan cluster

Saat Anda membuat permintaan untuk membuat cluster, GKE di AWS akan menjalankan serangkaian pengujian pra-penerbangan terlebih dahulu untuk memverifikasi permintaan tersebut. Jika pembuatan cluster gagal, hal ini dapat disebabkan karena salah satu pengujian pra-peluncuran ini gagal atau karena langkah dalam proses pembuatan cluster itu sendiri tidak selesai.

Jika pengujian pra-peluncuran gagal, cluster Anda tidak akan membuat resource apa pun, dan menampilkan informasi tentang error secara langsung kepada Anda. Misalnya, jika Anda mencoba membuat cluster dengan nama invalid%%%name, pengujian pre-flight untuk nama cluster yang valid akan gagal dan permintaan akan menampilkan error berikut:

ERROR: (gcloud.container.aws.clusters.create) INVALID_ARGUMENT: must be
between 1-63 characters, valid characters are /[a-z][0-9]-/, should start with a
letter, and end with a letter or a number: "invalid%%%name",
field: aws_cluster_id

Pembuatan cluster juga dapat gagal setelah pengujian pra-penerbangan lulus. Proses ini dapat terjadi beberapa menit setelah pembuatan cluster dimulai, setelah GKE di AWS membuat resource di Google Cloud dan AWS. Dalam hal ini, resource AWS akan ada di project Google Cloud Anda dengan status yang ditetapkan ke ERROR.

Untuk mendapatkan detail tentang kegagalan, jalankan perintah berikut:

gcloud container aws clusters describe CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \
    --format "value(state, errors)"

Ganti kode berikut:

  • CLUSTER_NAME dengan nama cluster yang statusnya sedang Anda kueri
  • GOOGLE_CLOUD_LOCATION dengan nama region Google Cloud yang mengelola cluster AWS ini

Atau, Anda bisa mendapatkan detail tentang kegagalan pembuatan dengan menjelaskan resource Operation yang terkait dengan panggilan API buat cluster.

gcloud container aws operations describe OPERATION_ID

Ganti OPERATION_ID dengan ID operasi yang membuat cluster. Jika tidak memiliki ID operasi untuk permintaan pembuatan cluster, Anda dapat mengambilnya dengan perintah berikut:

gcloud container aws operations list \
    --location GOOGLE_CLOUD_LOCATION

Gunakan stempel waktu atau informasi terkait untuk mengidentifikasi operasi pembuatan cluster yang diminati.

Misalnya, jika pembuatan cluster Anda gagal karena peran AWS IAM yang tidak diberi izin tidak memadai, perintah ini dan hasilnya akan menyerupai contoh berikut:

gcloud container aws operations describe b6a3d042-8c30-4524-9a99-6ffcdc24b370 \
  --location GOOGLE_CLOUD_LOCATION

Output-nya mirip dengan berikut ini:

done: true
error:
  code: 9
  message: 'could not set deregistration_delay timeout for the target group: AccessDenied
    User: arn:aws:sts::0123456789:assumed-role/foo-1p-dev-oneplatform/multicloud-service-agent
    is not authorized to perform: elasticloadbalancing:ModifyTargetGroupAttributes
    on resource: arn:aws:elasticloadbalancing:us-west-2:0123456789:targetgroup/gke-4nrk57tlyjva-cp-tcp443/74b57728e7a3d5b9
    because no identity-based policy allows the elasticloadbalancing:ModifyTargetGroupAttributes
    action'
metadata:
  '@type': type.googleapis.com/google.cloud.gkemulticloud.v1.OperationMetadata
  createTime: '2021-12-02T17:47:31.516995Z'
  endTime: '2021-12-02T18:03:12.590148Z'
  statusDetail: Cluster is being deployed
  target: projects/123456789/locations/us-west1/awsClusters/aws-prod1
name: projects/123456789/locations/us-west1/operations/b6a3d042-8c30-4524-9a99-6ffcdc24b370

Operasi atau pembuatan cluster gagal dengan error otorisasi

Error yang menunjukkan kegagalan otorisasi biasanya menunjukkan bahwa salah satu dari dua peran AWS IAM yang Anda tentukan selama perintah pembuatan cluster dibuat dengan tidak benar. Misalnya, jika peran API tidak menyertakan izin elasticloadbalancing:ModifyTargetGroupAttributes, pembuatan cluster akan gagal dengan pesan error yang menyerupai berikut ini:

ERROR: (gcloud.container.aws.clusters.create) could not set
deregistration_delay timeout for the target group: AccessDenied User:
arn:aws:sts::0123456789:assumed-role/cloudshell-user-dev-api-role/multicloud-
service-agent is not authorized to perform:
elasticloadbalancing:ModifyTargetGroupAttributes on resource:
arn:aws:elasticloadbalancing:us-east-1:0123456789:targetgroup/gke-u6au6c65e4iq-
cp-tcp443/be4c0f8d872bb60e because no identity-based policy allows the
elasticloadbalancing:ModifyTargetGroupAttributes action

Meskipun cluster tampaknya berhasil dibuat, peran IAM yang salah ditetapkan dapat menyebabkan kegagalan selama operasi cluster di kemudian hari, seperti saat menggunakan perintah seperti kubectl logs.

Untuk mengatasi error otorisasi tersebut, pastikan bahwa kebijakan yang terkait dengan dua peran IAM yang Anda tentukan selama pembuatan cluster sudah benar. Secara khusus, pastikan cocok dengan deskripsi di bagian Membuat peran IAM AWS, lalu hapus dan buat ulang cluster. Deskripsi peran individual tersedia dalam Peran API dan Peran bidang kontrol.

Operasi atau pembuatan cluster gagal pada tahap health check

Terkadang, pembuatan cluster gagal selama health check dengan status Operasi yang terlihat seperti berikut:

done: true
error:
  code: 4
  message: Operation failed
metadata:
  '@type': type.googleapis.com/google.cloud.gkemulticloud.v1.OperationMetadata
  createTime: '2022-06-29T18:26:39.739574Z'
  endTime: '2022-06-29T18:54:45.632136Z'
  errorDetail: Operation failed
  statusDetail: Health-checking cluster
  target: projects/123456789/locations/us-west1/awsClusters/aws-prod1
name: projects/123456789/locations/us-west1/operations/8a7a3b7f-242d-4fff-b518-f361d41c6597

Kegagalan ini mungkin karena peran IAM tidak ada atau peran IAM yang ditetapkan salah. Anda dapat menggunakan AWS CloudTrail untuk mengekspos masalah IAM.

Contoh:

  • Jika peran API tidak menyertakan izin kms:GenerateDataKeyWithoutPlaintext untuk kunci KMS volume utama bidang kontrol, Anda akan melihat peristiwa berikut:

    "eventName": "AttachVolume",
    "errorCode": "Client.InvalidVolume.NotFound",
    "errorMessage": "The volume 'vol-0ff75940ce333aebb' does not exist.",
    

    dan

    "errorCode": "AccessDenied",
    "errorMessage": "User: arn:aws:sts::0123456789:assumed-role/foo-1p-dev-oneplatform/multicloud-service-agent is not authorized to perform: kms:GenerateDataKeyWithoutPlaintext on resource: arn:aws:kms:us-west1:0123456789:key/57a61a45-d9c1-4038-9021-8eb08ba339ba because no identity-based policy allows the kms:GenerateDataKeyWithoutPlaintext action",
    
  • Jika peran bidang kontrol tidak menyertakan izin kms:CreateGrant untuk kunci KMS volume utama bidang kontrol, Anda akan melihat peristiwa berikut:

    "eventName": "AttachVolume",
    "errorCode": "Client.CustomerKeyHasBeenRevoked",
    "errorMessage": "Volume vol-0d022beb769c8e33b cannot be attached. The encrypted volume was unable to access the KMS key.",
    

    dan

    "errorCode": "AccessDenied",
    "errorMessage": "User: arn:aws:sts::0123456789:assumed-role/foo-controlplane/i-0a11fae03eb0b08c1 is not authorized to perform: kms:CreateGrant on resource: arn:aws:kms:us-west1:0123456789:key/57a61a45-d9c1-4038-9021-8eb08ba339ba because no identity-based policy allows the kms:CreateGrant action",
    
  • Jika Anda tidak memberikan peran tertaut layanan bernama AWSServiceRoleForAutoScaling dengan izin kms:CreateGrant untuk menggunakan kunci KMS volume root bidang kontrol, Anda akan melihat peristiwa berikut:

    "errorCode": "AccessDenied",
    "errorMessage": "User: arn:aws:sts::0123456789:assumed-role/AWSServiceRoleForAutoScaling/AutoScaling is not authorized to perform: kms:CreateGrant on resource: arn:aws:kms:us-west1:0123456789:key/c77a3a26-bc91-4434-bac0-0aa963cb0c31 because no identity-based policy allows the kms:CreateGrant action",
    
  • Jika Anda tidak memberikan peran tertaut layanan bernama AWSServiceRoleForAutoScaling dengan izin kms:GenerateDataKeyWithoutPlaintext untuk menggunakan kunci KMS volume root bidang kontrol, Anda akan melihat peristiwa berikut:

    "errorCode": "AccessDenied",
    "errorMessage": "User: arn:aws:sts::0123456789:assumed-role/AWSServiceRoleForAutoScaling/AutoScaling is not authorized to perform: kms:GenerateDataKeyWithoutPlaintext on resource: arn:aws:kms:us-west1:0123456789:key/c77a3a26-bc91-4434-bac0-0aa963cb0c31 because no identity-based policy allows the kms:CreateGrant action",
    

Menunggu node untuk bergabung ke cluster

Jika Anda menerima error berikut saat membuat node pool, pastikan VPC Anda tidak menyertakan blok CIDR IPv4 sekunder terkait.

errorDetail: Operation failed
statusDetail: Waiting for nodes to join the cluster (0 out of 1 are ready)

Untuk memperbaiki masalah ini, buat grup keamanan yang mencakup semua blok CIDR, lalu tambahkan grup tersebut ke cluster Anda. Untuk informasi selengkapnya, lihat Node pool dalam blok CIDR Sekunder VPC.

Mendapatkan log sistem instance

Jika bidang kontrol atau instance kumpulan node tidak dimulai, Anda dapat memeriksa log sistemnya. Untuk memeriksa log sistem, lakukan langkah berikut:

  1. Buka konsol Instance AWS EC2.
  2. Klik Instances.
  3. Temukan instance menurut nama. GKE di AWS biasanya membuat instance bernama CLUSTER_NAME-cp untuk node bidang kontrol atau CLUSTER_NAME-np untuk node kumpulan node.
  4. Pilih Tindakan -> Pantau dan Pecahkan Masalah -> Dapatkan Log Sistem. Log sistem instance akan muncul.

Kegagalan update cluster

Saat Anda mengupdate cluster, sama seperti saat Anda membuat cluster baru, GKE di AWS akan menjalankan serangkaian uji pra-penerbangan terlebih dahulu untuk memverifikasi permintaan tersebut. Jika update cluster gagal, hal ini dapat disebabkan karena salah satu pengujian pra-peluncuran tersebut gagal, atau karena langkah dalam proses update cluster itu sendiri tidak selesai.

Jika pengujian pra-peluncuran gagal, cluster Anda tidak akan memperbarui resource apa pun, dan menampilkan informasi tentang error secara langsung kepada Anda. Misalnya, jika Anda mencoba memperbarui cluster untuk menggunakan pasangan kunci SSH dengan nama test_ec2_keypair, pengujian sebelum beroperasi akan mencoba mengambil pasangan kunci EC2 dan gagal, serta permintaan menampilkan error berikut:

ERROR: (gcloud.container.aws.clusters.update) INVALID_ARGUMENT: key pair
"test_ec2_keypair" not found,
field: aws_cluster.control_plane.ssh_config.ec2_key_pair

Update cluster juga dapat gagal setelah pengujian pra-penerbangan lulus. Proses ini dapat terjadi beberapa menit setelah update cluster dimulai, dan status resource AWS di project Google Cloud Anda ditetapkan ke DEGRADED.

Untuk mendapatkan detail tentang kegagalan dan operasi terkait, ikuti langkah-langkah yang dijelaskan dalam kegagalan pembuatan cluster.

Update cluster gagal saat memperbarui tag bidang kontrol

AWS update API mendukung pembaruan tag bidang kontrol. Untuk memperbarui tag, Anda memerlukan cluster dengan Kubernetes versi 1.24 atau yang lebih baru. Anda juga harus memastikan peran IAM AWS memiliki izin yang sesuai seperti yang tercantum di halaman cluster update untuk memperbarui tag bidang kontrol.

Error yang menunjukkan kegagalan autentikasi biasanya mengindikasikan bahwa Anda tidak menambahkan beberapa izin IAM. Misalnya, jika peran API tidak menyertakan izin ec2:DeleteTags, update cluster untuk tag mungkin akan gagal dengan pesan error yang menyerupai berikut ini (<encoded_auth_failure_message> disamarkan agar lebih singkat):

ERROR: (gcloud.container.aws.clusters.update) could not delete tags:
UnauthorizedOperation You are not authorized to perform this operation.
Encoded authorization failure message: <encoded_auth_failure_message>

Untuk men-debug pesan kegagalan yang dienkode sebelumnya, Anda dapat mengirim permintaan ke decode-authorization-message API AWS STS seperti yang ditunjukkan pada perintah berikut:

aws sts decode-authorization-message --encoded-message
<encoded_auth_failure_message> --query DecodedMessage --output
text | jq '.' | less

Outputnya mirip dengan hal berikut ini:

...
"principal": {
  "id": "AROAXMEL2SCNPG6RCJ72B:iam-session",
  "arn": "arn:aws:sts::1234567890:assumed-role/iam_role/iam-session"
},
"action": "ec2:DeleteTags",
"resource": "arn:aws:ec2:us-west-2:1234567890:security-group-rule/sgr-00bdbaef24a92df62",
...

Respons sebelumnya menunjukkan bahwa Anda tidak dapat melakukan tindakan ec2:DeleteTags pada resource aturan grup keamanan EC2 di cluster AWS. Update Peran API Anda dan kirim ulang permintaan API update untuk memperbarui tag bidang kontrol.

Langkah selanjutnya