Memecahkan masalah dengan cluster dan node Amazon EKS - Amazon EKS

View a markdown version of this page

Memecahkan masalah dengan cluster dan node Amazon EKS - Amazon EKS

Bantu meningkatkan halaman ini

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Untuk berkontribusi pada panduan pengguna ini, pilih GitHub tautan Edit halaman ini di yang terletak di panel kanan setiap halaman.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memecahkan masalah dengan cluster dan node Amazon EKS

Bab ini mencakup beberapa kesalahan umum yang mungkin dapat Anda temui saat menggunakan Amazon EKS dan cara yang dilakukan untuk mengatasinya. Jika Anda perlu memecahkan masalah area Amazon EKS tertentu, lihat Add-Ons topik terpisahMenyelesaikan masalah IAM,Memecahkan masalah Amazon EKS Connector, dan Pemec ahan Masalah untuk ADOT menggunakan EKS.

Untuk informasi pemecahan masalah lainnya, lihat konten Pusat Pengetahuan tentang Layanan Amazon Elastic Kubernetes di Re:Post. AWS

Kapasitas tidak mencukupi

Jika Anda menerima kesalahan berikut saat mencoba membuat cluster Amazon EKS, maka salah satu Zona Ketersediaan yang Anda tentukan tidak memiliki kapasitas yang cukup untuk mendukung cluster.

Cannot create cluster 'example-cluster' because region-1d, the targeted Availability Zone, does not currently have sufficient capacity to support the cluster. Retry and choose from these Availability Zones: region-1a, region-1b, region-1c

Mencoba lagi membuat klaster Anda dengan subnet di klaster VPC yang meng-host di Availability Zone dikembalikan oleh pesan kesalahan ini.

Ada Zona Ketersediaan yang tidak dapat berada di kluster. Bandingkan Zona Ketersediaan tempat subnet Anda berada dengan daftar Zona Ketersediaan dalam persyaratan dan pertim bangan Subnet.

Simpul gagal untuk bergabung dengan klaster

Ada beberapa alasan umum yang mencegah simpul bergabung dengan klaster:

  • Jika node adalah node yang dikelola, Amazon EKS menambahkan entri ke aws-auth ConfigMap saat Anda membuat grup node. Jika entri dihapus atau dimodifikasi, maka Anda perlu menambahkannya kembali. Untuk informasi lebih lanjut, masukkan eksctl create iamidentitymapping --help di terminal Anda. Anda dapat melihat aws-auth ConfigMap entr my-cluster i Anda saat ini dengan mengganti perintah berikut dengan nama cluster Anda dan kemudian menjalankan perintah yang dimodifikasi:eksctl get iamidentitymapping --cluster my-cluster . ARN peran yang Anda tentukan tidak dapat menyertakan jalur selain/. Misalnya, jika nama peran Anda adalahdevelopment/apps/my-role, Anda harus mengubahnya menjadi my-role saat menentukan ARN untuk peran tersebut. Pastikan Anda menentukan peran node IAM ARN (bukan profil instance ARN).

    Jika node dikelola sendiri, dan Anda belum membuat entri akses untuk ARN peran IAM node, maka jalankan perintah yang sama yang terdaftar untuk node terkelola. Jika Anda telah membuat entri akses untuk ARN untuk peran IAM node Anda, maka itu mungkin tidak dikonfigurasi dengan benar di entri akses. Pastikan bahwa peran IAM node ARN (bukan profil instance ARN) ditentukan sebagai ARN utama dalam entri atau aws-auth ConfigMap entri akses Anda. Untuk informasi selengkapnya tentang entri akses, lihatBerikan akses kepada pengguna IAM ke Kubernetes dengan entri akses EKS.

  • AWS CloudFormation Template ClusterName di node Anda tidak persis sama dengan nama cluster yang Anda inginkan untuk bergabung dengan node Anda. Meneruskan nilai yang salah ke bidang ini menghasilkan konfigurasi /var/lib/kubelet/kubeconfig file node yang salah, dan node tidak akan bergabung dengan cluster.

  • Simpul tidak ditandai sebagai dimiliki oleh klaster. Simpul Anda harus memiliki tanda berikut yang diterapkan untuk mereka, di mana my-cluster diganti dengan nama klaster Anda.

    Kunci Nilai

    kubernetes.io/cluster/my-cluster

    owned

  • Simpul mungkin tidak dapat mengakses klaster menggunakan alamat IP publik. Pastikan bahwa simpul yang di-deploy di subnet publik memiliki alamat IP publik. Jika tidak, Anda dapat mengaitkan alamat IP Elastic ke node setelah diluncurkan. Untuk informasi selengkapnya, lihat Mengaitkan alamat IP Elastis dengan instans berjalan atau antarmuka jaringan. Jika subnet publik tidak diatur secara otomatis untuk menetapkan alamat IP publik ke instans yang di-deploy untuk itu, maka kami merekomendasikan untuk mengaktifkan pengaturan tersebut. Untuk informasi selengkapnya, tinjau Memodifikasi atribut pengalamatan IPv4 publik untuk subnet Anda. Jika simpul di-deploy ke subnet privat, maka subnet harus memiliki rute ke gateway NAT yang memiliki alamat IP publik yang ditugaskan untuk itu.

  • T AWS itik akhir STS untuk Wil AWS ayah tempat Anda menerapkan node tidak diaktifkan untuk akun Anda. Untuk mengaktifkan wilayah, lihat Meng aktifkan dan menonaktifkan AWS STS di Wil AWS ayah.

  • Node tidak memiliki entri DNS pribadi, sehingga kubelet log berisi node "" not found kesalahan. Pastikan bahwa VPC tempat node dibuat memiliki nilai yang ditetapkan untuk domain-name dan domain-name-servers seperti Options dalam aDHCP options set. Nilai defaultnya adalah domain-name:<region>.compute.internal dan domain-name-servers:AmazonProvidedDNS. Untuk informasi selengkapnya, lihat Set opsi DHCP di Panduan Pengguna Amazon VPC.

  • Jika node dalam grup node terkelola tidak terhubung ke cluster dalam waktu 15 menit, masalah kesehatan "NodeCreationFailure" akan dipancarkan dan status konsol akan diatur keCreate failed. Untuk AMI Windows yang memiliki waktu peluncuran lambat, masalah ini dapat diselesaikan menggunakan peluncuran cepat.

Untuk mengidentifikasi dan memecahkan masalah penyebab umum yang mencegah node pekerja bergabung dengan cluster, Anda dapat menggunakan AWSSupport-TroubleshootEKSWorkerNode runbook. Untuk informasi selengkapnya, lihat AWSSupport-TroubleshootEKSWorkerNode di referensi runbook AWS System Manager Automation.

Tidak sah atau akses ditolak (kubectl)

Jika Anda menerima salah satu kesalahan berikut saat menjalankan kubectl perintah, berarti Anda belum mengon kubectl figurasi dengan benar untuk Amazon EKS atau kredentif untuk prinsipal IAM (peran atau pengguna) yang Anda gunakan jangan memetakan ke nama pengguna Kubernetes yang memiliki izin yang cukup untuk objek Kubernetes di cluster Amazon EKS Anda.

  • could not get token: AccessDenied: Access denied

  • error: You must be logged in to the server (Unauthorized)

  • error: the server doesn’t have a resource type "svc"

Ini bisa disebabkan oleh salah satu alasan berikut:

  • Cluster dibuat dengan kredenSIAL untuk satu prinsipal IAM dan kubectl dikonfigurasi untuk menggunakan kredenSIAL untuk prinsipal IAM yang berbeda. Untuk mengatasi ini, perbarui kube config file Anda untuk menggunakan kredenSIAL yang membuat cluster. Untuk informasi selengkapnya, lihat Hubungkan kubectl ke cluster EKS dengan membuat file kubeconfig.

  • Jika cluster Anda memenuhi persyaratan platform minimum di bagian prasyarat Berikan akses pengguna IAM ke Kubernetes dengan entri akses EKS, entri akses tidak ada dengan prinsipal IAM Anda. Jika ada, itu tidak memiliki nama grup Kubernetes yang diperlukan yang ditentukan untuknya, atau tidak memiliki kebijakan akses yang tepat yang terkait dengannya. Untuk informasi selengkapnya, lihat Berikan akses kepada pengguna IAM ke Kubernetes dengan entri akses EKS.

  • Jika cluster Anda tidak memenuhi persyaratan platform minimum di Berikan akses pengguna IAM ke Kubernetes dengan entri akses EKS, entri dengan prinsip IAM Anda tidak ada di. aws-auth ConfigMap Jika ada, itu tidak dipetakan ke nama grup Kubernetes yang terikat ke Kubernet Role es atau dengan izin yang diperlukan. ClusterRole Untuk informasi selengkapnya tentang objek otorisasi berbasis peran (RBAC) Kubernetes, lihat Menggunakan otorisasi RBAC dalam dokumentasi Kubernetes. Anda dapat melihat aws-auth ConfigMap entr my-cluster i Anda saat ini dengan mengganti perintah berikut dengan nama cluster Anda dan kemudian menjalankan perintah yang dimodifikasi:eksctl get iamidentitymapping --cluster my-cluster . Jika entri dengan ARN prinsipal IAM Anda tidak ada diConfigMap, masukkan eksctl create iamidentitymapping --help di terminal Anda untuk mempelajari cara membuatnya.

Jika Anda menginstal dan mengkonfigurasi AWS CLI, Anda dapat mengonfigurasi kredentif IAM yang Anda gunakan. Untuk informasi selengkapnya, lihat Mengkonfigurasi AWS CLI di Panduan Pengguna Antar AWS muka Baris Perintah. Anda juga dapat mengonfigurasi kubectl untuk menggunakan peran IAM, jika Anda mengambil peran IAM untuk mengakses objek Kubernetes di cluster Anda. Untuk informasi selengkapnya, lihat Hubungkan kubectl ke cluster EKS dengan membuat file kubeconfig.

hostname tidak cocok

Versi Python sistem Anda harus 2.7.9 atau lebih baru. Jika tidak, Anda menerima hostname doesn’t match kesalahan dengan panggilan AWS CLI ke Amazon EKS. Untuk informasi selengkapnya, lihat Apa itu kesalahan “nama host tidak cocok”? dalam Pertanyaan yang Sering Diajukan Python.

getsockopt: tidak ada rute ke host

Docker berjalan di Kisaran CIDR 172.17.0.0/16 di klaster Amazon EKS. Sebaiknya subnet VPC cluster Anda tidak tumpang tindih dengan rentang ini. Jika tidak, Anda akan menerima kesalahan berikut:

Error: : error upgrading connection: error dialing backend: dial tcp 172.17.<nn>.<nn>:10250: getsockopt: no route to host

Instans gagal bergabung dengan cluster Kubernetes

Jika Anda menerima kesalahan Instances failed to join the Kubernetes cluster di Konsol Manajemen AWS, pastikan bahwa akses titik akhir pribadi cluster diaktifkan, atau bahwa Anda telah mengonfigurasi blok CIDR dengan benar untuk akses titik akhir publik. Untuk informasi selengkapnya, lihat Titik akhir server API klaster.

Kode kesalahan grup simpul terkelola

Jika grup node terkelola Anda mengalami masalah kesehatan perangkat keras, Amazon EKS mengembalikan kode kesalahan untuk membantu Anda mendiagnosis masalah. Pemeriksaan kesehatan ini tidak mendeteksi masalah perangkat lunak karena didasarkan pada pemeriksaan kesehatan Amazon EC2. Daftar berikut menjelaskan kode kesalahan.

AccessDenied

Amazon EKS atau satu atau lebih node terkelola Anda gagal melakukan otentikasi atau otorisasi dengan server API cluster Kubernetes Anda. Untuk informasi selengkapnya tentang menyelesaikan penyebab umum, lihatMemperbaiki penyebab umum AccessDenied kesalahan untuk grup node terkelola. AMI Windows pribadi juga dapat menyebabkan kode kesalahan ini di samping pesan Not authorized for images kesalahan. Untuk informasi selengkapnya, lihat Tidak diotorisasi untuk gambar.

AmiIdNotFound

Kami tidak dapat menemukan ID AMI yang terkait dengan template peluncuran Anda. Pastikan bahwa AMI ada dan dibagikan dengan akun Anda.

AutoScalingGroupNotFound

Kami tidak dapat menemukan grup Auto Scaling yang terkait dengan grup node terkelola. Anda dapat membuat ulang grup Auto Scaling dengan pengaturan yang sama untuk memulihkan.

ClusterUnreachable

Amazon EKS atau satu atau beberapa node terkelola Anda tidak dapat berkomunikasi dengan server API cluster Kubernetes Anda. Hal ini dapat terjadi jika ada gangguan jaringan atau jika waktu keluar permintaan pemrosesan server API.

Ec2SecurityGroupNotFound

Kami tidak dapat menemukan grup keamanan cluster untuk cluster. Anda harus membuat ulang klaster Anda.

Ec2SecurityGroupDeletionFailure

Kami tidak dapat menghapus grup keamanan akses jarak jauh untuk grup node terkelola Anda. Menghapus dependensi dari grup keamanan.

Ec2LaunchTemplateNotFound

Kami tidak dapat menemukan template peluncuran Amazon EC2 untuk grup node terkelola Anda. Anda harus membuat ulang grup node Anda untuk memulihkan.

Ec2LaunchTemplateVersionMismatch

Versi template peluncuran Amazon EC2 untuk grup node terkelola Anda tidak cocok dengan versi yang dibuat Amazon EKS. Anda mungkin dapat kembali ke versi yang dibuat Amazon EKS untuk memulihkan.

IamInstanceProfileNotFound

Kami tidak dapat menemukan profil instance IAM untuk grup node terkelola Anda. Anda mungkin dapat membuat ulang profil instans dengan pengaturan yang sama untuk memulihkan.

IamNodeRoleNotFound

Kami tidak dapat menemukan peran IAM untuk grup node terkelola Anda. Anda mungkin dapat membuat ulang IAM role dengan pengaturan yang sama untuk memulihkan.

AsgInstanceLaunchFailures

Grup Penskalaan Otomatis Anda mengalami kegagalan saat mencoba meluncurkan instance.

NodeCreationFailure

Instans yang Anda luncurkan tidak dapat mendaftar ke cluster Amazon EKS Anda. Penyebab umum kegagalan ini adalah tidak mencukupi IAM role simpul izin atau kurangnya akses internet keluar untuk simpul. Node Anda harus memenuhi salah satu persyaratan berikut:

InstanceLimitExceeded

AWS Akun Anda tidak dapat meluncurkan instans lagi dari jenis instans yang ditentukan. Anda mungkin dapat meminta peningkatan batas instans Amazon EC2 untuk memulihkan.

InsufficientFreeAddresses

Satu atau lebih subnet yang terkait dengan grup node terkelola Anda tidak memiliki cukup alamat IP yang tersedia untuk node baru.

InternalFailure

Kesalahan ini biasanya disebabkan oleh masalah sisi server Amazon EKS.

Penyebab paling umum kesalahan AccessDenied saat melakukan pengoperasian pada grup simpul yang terkelola adalah hilangnya eks:node-manager ClusterRole atau ClusterRoleBinding. Amazon EKS mengatur sumber daya ini di klaster Anda sebagai bagian dari orientasi dengan grup simpul yang terkelola, dan ini diperlukan untuk mengelola grup simpul.

ClusterRole mungkin berubah seiring berjalannya waktu, tetapi seharusnya terlihat serupa dengan contoh berikut:

apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: eks:node-manager rules: - apiGroups: - '' resources: - pods verbs: - get - list - watch - delete - apiGroups: - '' resources: - nodes verbs: - get - list - watch - patch - apiGroups: - '' resources: - pods/eviction verbs: - create

ClusterRoleBinding mungkin berubah seiring berjalannya waktu, tetapi seharusnya terlihat serupa dengan contoh berikut:

apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: eks:node-manager roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: eks:node-manager subjects: - apiGroup: rbac.authorization.k8s.io kind: User name: eks:node-manager

Verifikasi bahwa eks:node-manager ClusterRole ada.

kubectl describe clusterrole eks:node-manager

Jika ada, membandingkan output dengan contoh ClusterRole sebelumnya.

Verifikasi bahwa eks:node-manager ClusterRoleBinding ada.

kubectl describe clusterrolebinding eks:node-manager

Jika ada, membandingkan output dengan contoh ClusterRoleBinding sebelumnya.

Jika Anda telah mengidentifikasi yang hilang atau rusak ClusterRole atau ClusterRoleBinding sebagai penyebab AccessDenied kesalahan saat meminta operasi grup node terkelola, Anda dapat memulihkannya. Simpan isi berikut ke file bernama eks-node-manager-role.yaml.

apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: eks:node-manager rules: - apiGroups: - '' resources: - pods verbs: - get - list - watch - delete - apiGroups: - '' resources: - nodes verbs: - get - list - watch - patch - apiGroups: - '' resources: - pods/eviction verbs: - create --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: eks:node-manager roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: eks:node-manager subjects: - apiGroup: rbac.authorization.k8s.io kind: User name: eks:node-manager

Terapkan file.

kubectl apply -f eks-node-manager-role.yaml

Coba lagi mengoperasikan grup simpul untuk melihat apakah itu menyelesaikan masalah Anda.

Tidak diotorisasi untuk gambar

Salah satu penyebab potensial pesan Not authorized for images kesalahan adalah menggunakan Amazon EKS Windows AMI pribadi untuk meluncurkan grup node yang dikelola Windows. Setelah merilis AMI Windows baru, AWS membuat AMI yang lebih tua dari 4 bulan menjadi pribadi, yang membuatnya tidak lagi dapat diakses. Jika grup node terkelola menggunakan AMI Windows pribadi, pertimbangkan untuk memperbarui grup node terkelola Windows Anda. Meskipun kami tidak dapat menjamin bahwa kami dapat menyediakan akses ke AMI yang telah dibuat pribadi, Anda dapat meminta akses dengan mengajukan tiket ke AWS Dukungan. Untuk informasi selengkapnya, lihat Pat ch di Panduan Pengguna Amazon EC2.

Node berada dalam NotReady keadaan

Jika node Anda memasuki NotReady status, ini kemungkinan menunjukkan bahwa node tidak sehat dan tidak tersedia untuk menjadwalkan Pod baru. Hal ini dapat terjadi karena berbagai alasan, seperti node kekurangan sumber daya yang cukup untuk CPU, memori, atau ruang disk yang tersedia.

Untuk AMI Windows yang dioptimalkan Amazon EKS, tidak ada reservasi untuk sumber daya komputasi yang ditentukan secara default dalam kubelet konfigurasi. Untuk membantu mencegah masalah sumber daya, Anda dapat mencadangkan sumber daya komputasi untuk proses sistem kubelet dengan menyediakan nilai konfigurasi untuk kube- and/or reservasi sistem-reservasi. Anda melakukan ini menggunakan parameter -KubeletExtraArgs baris perintah dalam skrip bootstrap. Untuk informasi selengkapnya, lihat Cadangan Sumber Daya Komputasi untuk Daemon Sistem dalam dokumentasi Kubernetes dan dalam panduan pengguna ini. Parameter konfigurasi skrip bootstrap

Kolektor Log EKS

Untuk memecahkan masalah dengan node Amazon EKS, ada skrip bawaan yang tersedia di node yang terletak di/etc/eks/log-collector-script/eks-log-collector.sh. Anda dapat menggunakan skrip untuk mengumpulkan log diagnostik untuk kasus dukungan dan pemecahan masalah umum.

Menggunakan perintah berikut ini untuk menjalankan skrip di simpul Anda:

sudo bash /etc/eks/log-collector-script/eks-log-collector.sh
catatan

Jika skrip tidak ada di lokasi itu, Anda dapat mengunduh dan menjalankan skrip secara manual dengan perintah berikut:

curl -O https://amazon-eks.s3.amazonaws.com/support/log-collector-script/linux/eks-log-collector.sh sudo bash eks-log-collector.sh

Skrip mengumpulkan informasi diagnostik berikut.

$ sudo bash /etc/eks/log-collector-script/eks-log-collector.sh This is version 0.7.8. New versions can be found at https://github.com/awslabs/amazon-eks-ami/blob/main/log-collector-script/ Trying to collect common operating system logs... Trying to collect kernel logs... Trying to collect mount points and volume information... ... ... Done... your bundled logs are located in /var/log/eks_i-EXAMPLE_2025-03-25_0000-UTC_0.7.8.tar.gz

Informasi diagnostik dikumpulkan dan disimpan di:

/var/log/eks_i-EXAMPLE_2025-03-25_0000-UTC_0.7.8.tar.gz

Untuk mengambil bundel log untuk node Bottlerocket, silakan merujuk ke Bo ttlerocket Logs untuk detail lebih lanjut.

Jaringan waktu aktif kontainer belum siap

Anda mungkin mendapatkan kesalahan Container runtime network not ready dan otorisasi kesalahan yang mirip dengan berikut ini:

4191 kubelet.go:2130] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized 4191 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/kubelet.go:452: Failed to list *v1.Service: Unauthorized 4191 kubelet_node_status.go:106] Unable to register node "ip-10-40-175-122.ec2.internal" with API server: Unauthorized 4191 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/kubelet.go:452: Failed to list *v1.Service: Unauthorized

Ini dapat terjadi karena salah satu alasan berikut:

  1. Anda tidak memiliki sebuah aws-auth ConfigMap di cluster Anda atau tidak menyertakan entri untuk peran IAM yang Anda gunakan untuk mengonfigurasi node Anda.

    Untuk mengatasi masalah ini, lihat entri yang ada di Anda ConfigMap dengan mengganti my-cluster perintah berikut dengan nama cluster Anda dan kemudian menjalankan perintah yang dimodifikasi:eksctl get iamidentitymapping --cluster my-cluster . Jika Anda menerima pesan kesalahan dari perintah, itu mungkin karena cluster Anda tidak memiliki aws-authConfigMap. Perintah berikut menambahkan entri keConfigMap. Jika ConfigMap tidak ada, perintah juga membuatnya. Ganti 111122223333 dengan ID AWS akun untuk peran IAM dan myAmazonEKSNodeRole dengan nama peran node Anda.

    eksctl create iamidentitymapping --cluster my-cluster \ --arn arn:aws: iam::111122223333:role/myAmazonEKSNodeRole --group system:bootstrappers,system:nodes \ --username system:node:{{EC2PrivateDNSName}}

    ARN peran yang Anda tentukan tidak dapat menyertakan jalur selain/. Misalnya, jika nama peran Anda adalahdevelopment/apps/my-role, Anda harus mengubahnya menjadi my-role saat menentukan ARN peran tersebut. Pastikan Anda menentukan peran node IAM ARN (bukan profil instance ARN).

  2. Node yang dikelola sendiri berada dalam cluster dengan versi platform pada versi minimum yang tercantum dalam prasyarat dalam topik Memberikan akses pengguna IAM ke Kubernetes dengan entri akses EKS, tetapi entri tidak terdaftar di aws-authConfigMap (lihat item sebelumnya) untuk peran IAM node atau entri akses tidak ada untuk peran tersebut. Untuk mengatasi masalah ini, lihat entr my-cluster i akses yang ada dengan mengganti perintah berikut dengan nama cluster Anda dan kemudian menjalankan perintah yang dimodifikasi:aws eks list-access-entries --cluster-name my-cluster . Perintah berikut menambahkan entri akses untuk peran IAM node. Ganti 111122223333 dengan ID AWS akun untuk peran IAM dan myAmazonEKSNodeRole dengan nama peran node Anda. Jika Anda memiliki node Windows, ganti EC2_LINUX denganEC2_Windows. Pastikan Anda menentukan peran node IAM ARN (bukan profil instance ARN).

    aws eks create-access-entry --cluster-name my-cluster --principal-arn arn:aws: iam::111122223333:role/myAmazonEKSNodeRole --type EC2_LINUX

Waktu habis handshake TLS

Ketika node tidak dapat membuat koneksi ke titik akhir server API publik, Anda mungkin melihat kesalahan yang mirip dengan kesalahan berikut.

server.go:233] failed to run Kubelet: could not init cloud provider "aws": error finding instance i-1111f2222f333e44c: "error listing AWS instances: \"RequestError: send request failed\\ncaused by: Post net/http: TLS handshake timeout\""

Proses kubelet akan terus-menerus me-respawn dan menguji titik akhir server API. Kesalahan juga dapat terjadi sementara selama prosedur yang performa update klaster bergulir di bidang kendali, seperti perubahan konfigurasi atau versi update.

Untuk mengatasi masalah itu, memeriksa tabel rute dan grup keamanan untuk memastikan bahwa lalu lintas dari simpul dapat mencapai titik akhir publik.

InvalidClientTokenId

Jika Anda menggunakan peran IAM untuk akun layanan untuk Pod atau DaemonSet diterapkan ke cluster di Wil AWS ayah China, dan belum menyetel variabel AWS_DEFAULT_REGION lingkungan dalam spesifikasi, Pod atau DaemonSet mungkin menerima kesalahan berikut:

An error occurred (InvalidClientTokenId) when calling the GetCallerIdentity operation: The security token included in the request is invalid

Untuk mengatasi masalah ini, Anda perlu menambahkan variabel AWS_DEFAULT_REGION lingkungan ke Pod atau DaemonSet spesifikasi Anda, seperti yang ditunjukkan pada contoh spesifikasi Pod berikut.

apiVersion: v1 kind: Pod metadata: name: envar-demo labels: purpose: demonstrate-envars spec: containers: - name: envar-demo-container image: gcr.io/google-samples/node-hello:1.0 env: - name: AWS_DEFAULT_REGION value: "region-code"

Grup node harus cocok dengan versi Kubernetes sebelum memutakhirkan bidang kontrol

Sebelum Anda memutakhirkan pesawat kontrol ke versi Kubernetes baru, versi minor dari node terkelola dan Fargate di cluster Anda harus sama dengan versi pesawat kontrol Anda saat ini. Amazon EKS update-cluster-version API menolak permintaan sampai Anda memutakhirkan semua node yang dikelola Amazon EKS ke versi cluster saat ini. Amazon EKS menyediakan API untuk meningkatkan node terkelola. Untuk informasi tentang memutakhirkan versi Kubernetes grup node terkelola, lihat. Memperbarui grup node terkelola untuk klaster Anda Untuk memutakhirkan versi node Fargate, hapus pod yang diwakili oleh node dan gunakan kembali pod setelah Anda memutakhirkan bidang kontrol Anda. Untuk informasi selengkapnya, lihat Perbarui klaster yang ada ke versi Kubernetes baru.

Saat meluncurkan banyak node, ada kesalahan Ter lalu Banyak Permintaan

Jika Anda meluncurkan banyak node secara bersamaan, Anda mungkin melihat pesan kesalahan di log eksekusi data pengguna Amazon EC2 yang mengatakanToo Many Requests. Hal ini dapat terjadi karena bidang kontrol kelebihan beban dengan describeCluster panggilan. Overloading mengakibatkan throttling, node gagal menjalankan skrip bootstrap, dan node gagal bergabung dengan cluster sama sekali.

Pastikan bahwa--apiserver-endpoint,--b64-cluster-ca, dan --dns-cluster-ip argumen diteruskan ke skrip bootstrap node. Saat menyertakan argumen ini, skrip bootstrap tidak perlu melakukan describeCluster panggilan, yang membantu mencegah bidang kontrol kelebihan beban. Untuk informasi selengkapnya, lihat Menentukan AMI.

Respons kesalahan HTTP 401 tidak sah pada permintaan server API Kubernetes

Anda melihat kesalahan ini jika token akun layanan Pod telah kedaluwarsa pada cluster.

Server API Kubernetes cluster Amazon EKS Anda menolak permintaan dengan token yang lebih lama dari 90 hari. Dalam versi Kubernetes sebelumnya, token tidak memiliki kedaluwarsa. Ini berarti bahwa klien yang mengandalkan token ini harus menyegarkannya dalam waktu satu jam. Untuk mencegah server API Kubernetes menolak permintaan Anda karena token yang tidak valid, versi SDK klien Kubernetes yang digunakan oleh beban kerja Anda harus sama, atau lebih baru dari versi berikut:

  • Versi Go 0.15.7 dan yang lebih baru

  • Versi Python 12.0.0 dan yang lebih baru

  • Versi Java 9.0.0 dan yang lebih baru

  • JavaScript versi 0.10.3 dan yang lebih baru

  • masterCabang Ruby

  • Versi Haskell 0.3.0.0

  • Versi C# 7.0.5 dan yang lebih baru

Anda dapat mengidentifikasi semua Pod yang ada di cluster Anda yang menggunakan token basi. Untuk informasi selengkapnya, lihat Token akun layanan.

Versi platform Amazon EKS lebih dari dua versi di belakang versi platform saat ini

Ini dapat terjadi ketika Amazon EKS tidak dapat memperbarui versi platform cluster Anda secara otomatis. Meskipun ada banyak penyebab untuk ini, beberapa penyebab umum mengikuti. Jika salah satu dari masalah ini berlaku untuk cluster Anda, itu mungkin masih berfungsi, versi platformnya tidak akan diperbarui oleh Amazon EKS.

Masalah

Per an IAM cluster dihapus — Peran ini ditentukan saat cluster dibuat. Anda dapat melihat peran mana yang ditentukan dengan perintah berikut. Ganti my-cluster dengan nama klaster Anda.

aws eks describe-cluster --name my-cluster --query cluster.roleArn --output text | cut -d / -f 2

Contoh output adalah sebagai berikut.

eksClusterRole
Solusi

Buat peran IAM cluster baru dengan nama yang sama.

Masalah

Subnet yang ditentukan selama pembuatan cluster dihapus — Subnet yang akan digunakan dengan cluster ditentukan selama pembuatan cluster. Anda dapat melihat subnet mana yang ditentukan dengan perintah berikut. Ganti my-cluster dengan nama klaster Anda.

aws eks describe-cluster --name my-cluster --query cluster.resourcesVpcConfig.subnetIds

Contoh output adalah sebagai berikut.

[ "subnet-EXAMPLE1", "subnet-EXAMPLE2" ]
Solusi

Konfirmasikan apakah ID subnet ada di akun Anda.

vpc_id=$(aws eks describe-cluster --name my-cluster --query cluster.resourcesVpcConfig.vpcId --output text) aws ec2 describe-subnets --filters "Name=vpc-id,Values=$vpc_id" --query "Subnets[*].SubnetId"

Contoh output adalah sebagai berikut.

[ "subnet-EXAMPLE3", "subnet-EXAMPLE4" ]

Jika ID subnet yang dikembalikan dalam output tidak cocok dengan ID subnet yang ditentukan saat cluster dibuat, maka jika Anda ingin Amazon EKS memperbarui cluster, Anda perlu mengubah subnet yang digunakan oleh cluster. Ini karena jika Anda menentukan lebih dari dua subnet saat membuat cluster, Amazon EKS secara acak memilih subnet yang Anda tentukan untuk membuat antarmuka jaringan elastis baru. Antarmuka jaringan ini memungkinkan bidang kontrol untuk berkomunikasi dengan node Anda. Amazon EKS tidak akan memperbarui cluster jika subnet yang dipilihnya tidak ada. Anda tidak memiliki kendali atas subnet mana yang Anda tentukan pada pembuatan cluster yang dipilih Amazon EKS untuk membuat antarmuka jaringan baru.

Saat Anda memulai pembaruan versi Kubernetes untuk cluster Anda, pembaruan dapat gagal karena alasan yang sama.

Masalah

Grup keamanan yang ditentukan selama pembuatan cluster dihapus — Jika Anda menentukan grup keamanan selama pembuatan cluster, Anda dapat melihat ID mereka dengan perintah berikut. Ganti my-cluster dengan nama klaster Anda.

aws eks describe-cluster --name my-cluster --query cluster.resourcesVpcConfig.securityGroupIds

Contoh output adalah sebagai berikut.

[ "sg-EXAMPLE1" ]

Jika [] dikembalikan, maka tidak ada grup keamanan yang ditentukan saat cluster dibuat dan grup keamanan yang hilang tidak menjadi masalah. Jika grup keamanan dikembalikan, konfirmasikan bahwa grup keamanan ada di akun Anda.

Solusi

Konfirmasikan apakah grup keamanan ini ada di akun Anda.

vpc_id=$(aws eks describe-cluster --name my-cluster --query cluster.resourcesVpcConfig.vpcId --output text) aws ec2 describe-security-groups --filters "Name=vpc-id,Values=$vpc_id" --query "SecurityGroups[*].GroupId"

Contoh output adalah sebagai berikut.

[ "sg-EXAMPLE2" ]

Jika ID grup keamanan yang dikembalikan dalam output tidak cocok dengan ID grup keamanan yang ditentukan saat cluster dibuat, maka jika Anda ingin Amazon EKS memperbarui cluster, Anda perlu mengubah grup keamanan yang digunakan oleh cluster. Amazon EKS tidak akan memperbarui cluster jika ID grup keamanan yang ditentukan saat pembuatan cluster tidak ada.

Saat Anda memulai pembaruan versi Kubernetes untuk cluster Anda, pembaruan dapat gagal karena alasan yang sama.

  • Anda tidak memiliki setidaknya enam (walaupun kami sarankan 16) alamat IP yang tersedia di setiap subnet yang Anda tentukan saat membuat cluster Anda. Jika Anda tidak memiliki cukup alamat IP yang tersedia di subnet, Anda perlu membebaskan alamat IP di subnet atau Anda perlu mengubah subnet yang digunakan oleh cluster untuk menggunakan subnet dengan alamat IP yang cukup tersedia.

  • Anda mengaktifkan enkripsi rahasia saat membuat cluster dan kunci AWS KMS yang Anda tentukan telah dihapus. Jika Anda ingin Amazon EKS memperbarui cluster, Anda perlu membuat cluster baru

FAQ kesehatan cluster dan kode kesalahan dengan jalur resolusi

Amazon EKS mendeteksi masalah dengan cluster EKS Anda dan infrastruktur cluster dan menyimpannya di objek kesehatan sumber daya cluster EKS Anda. Anda dapat mendeteksi, memecahkan masalah, dan mengatasi masalah cluster lebih cepat dengan bantuan informasi kesehatan cluster. Ini memungkinkan Anda untuk membuat lingkungan aplikasi yang lebih aman dan terkini. Selain itu, mungkin tidak mungkin bagi Anda untuk meningkatkan ke versi Kubernetes yang lebih baru atau bagi Amazon EKS untuk menginstal pembaruan keamanan pada cluster yang terdegradasi sebagai akibat dari masalah dengan infrastruktur atau konfigurasi cluster yang diperlukan. Amazon EKS dapat memakan waktu 3 jam untuk mendeteksi masalah atau mendeteksi bahwa masalah telah diselesaikan.

Kesehatan cluster Amazon EKS adalah tanggung jawab bersama antara Amazon EKS dan penggunanya. Anda bertanggung jawab atas prasyarat infrastruktur peran IAM dan subnet Amazon VPC, serta infrastruktur lain yang diperlukan, yang harus disediakan terlebih dahulu. Amazon EKS mendeteksi perubahan dalam konfigurasi infrastruktur dan cluster ini.

Untuk mengakses kesehatan cluster Anda di konsol Amazon EKS, cari tabel bernama Masalah Kesehatan di tab Masalah kesehatan Cluster pada dasbor pengamatan yang diakses dari halaman detail cluster Amazon EKS. Data ini juga akan tersedia dengan memanggil DescribeCluster tindakan di EKS API, misalnya dari dalam AWS Command Line Interface.

Mengapa saya harus menggunakan fitur ini?

Anda akan mendapatkan peningkatan visibilitas ke dalam kesehatan cluster Amazon EKS Anda, dengan cepat mendiagnosis dan memperbaiki masalah apa pun, tanpa perlu menghabiskan waktu debugging atau membuka kasus AWS dukungan. Misalnya: Anda secara tidak sengaja menghapus subnet untuk cluster Amazon EKS, Amazon EKS tidak akan dapat membuat antarmuka jaringan lintas akun dan perintah AWS CLI Kubernetes seperti exec atau log. kubectl kubectl Ini akan gagal dengan kesalahan: Error from server: error dialing backend: remote error: tls: internal error. Sekarang Anda akan melihat masalah kesehatan Amazon EKS yang mengatakan:subnet-da60e280 was deleted: could not create network interface.

Bagaimana fitur ini berhubungan atau bekerja dengan AWS layanan lain?

Peran IAM dan subnet Amazon VPC adalah dua contoh infrastruktur prasyarat yang dapat mendeteksi masalah dengan kesehatan cluster. Fitur ini akan mengembalikan informasi terperinci jika sumber daya tersebut tidak dikonfigurasi dengan benar.

Apakah cluster dengan masalah kesehatan dikenakan biaya?

Ya, setiap cluster Amazon EKS ditagih dengan harga Amazon EKS standar. Fitur kesehatan cluster tersedia tanpa biaya tambahan.

Apakah fitur ini berfungsi dengan cluster Amazon EKS di AWS Outpost?

Ya, masalah cluster terdeteksi untuk cluster EKS di AWS Cloud termasuk cluster yang diperluas di AWS Outpost dan cluster lokal di AWS Outpost. Kesehatan cluster tidak mendeteksi masalah dengan Amazon EKS Anywhere atau Amazon EKS Distro (EKS-D).

Dapatkah saya mendapatkan pemberitahuan ketika masalah baru terdeteksi?

Ya. AWS mengirimkan email dan pemberitahuan Dasbor Kesehatan Pribadi saat masalah kesehatan cluster baru terdeteksi.

Apakah konsol memberi saya peringatan untuk masalah kesehatan?

Ya, setiap cluster dengan masalah kesehatan akan menyertakan spanduk di bagian atas konsol.

Dua kolom pertama adalah apa yang diperlukan untuk nilai respons API. Bidang ketiga dari ClusterIssue objek Kesehatan adalah ResourceIds, yang pengembaliannya tergantung pada jenis masalah.

Kode Pesan ResourceIds Cluster Dapat Dipulihkan?

SUBNET_TIDAK_DITEMUKAN

Kami tidak dapat menemukan satu atau lebih subnet yang saat ini terkait dengan cluster Anda. Panggil Amazon EKS update-cluster-config API untuk memperbarui subnet.

ID subnet

Ya

GRUP_KEAMANAN_TIDAK_DITEMUKAN

Kami tidak dapat menemukan satu atau beberapa grup keamanan yang saat ini terkait dengan cluster Anda. Panggil Amazon EKS update-cluster-config API untuk memperbarui grup keamanan.

ID grup keamanan

Ya

IP_TIDAK_TERSEDIA

Satu atau lebih subnet yang terkait dengan cluster Anda tidak memiliki cukup alamat IP yang tersedia untuk Amazon EKS untuk melakukan operasi manajemen cluster. Kosongkan alamat di subnet, atau kaitkan subnet yang berbeda ke cluster Anda menggunakan Amazon EKS update-cluster-config API.

ID subnet

Ya

VPC_TIDAK_DITEMUKAN

Kami tidak dapat menemukan VPC yang terkait dengan cluster Anda. Anda harus menghapus dan membuat ulang cluster Anda.

ID VPC

Tidak

MENGASUMSI_ROLE_AKSES_DITOLAK

Cluster Anda tidak menggunakan peran terkait layanan Amazon EKS. Kami tidak dapat mengambil peran yang terkait dengan cluster Anda untuk melakukan operasi manajemen Amazon EKS yang diperlukan. Periksa apakah peran ada dan memiliki kebijakan kepercayaan yang diperlukan.

Peran IAM cluster

Ya

IZIN_AKSES_DITOLAK

Cluster Anda tidak menggunakan peran terkait layanan Amazon EKS. Peran yang terkait dengan cluster Anda tidak memberikan izin yang cukup bagi Amazon EKS untuk melakukan operasi manajemen yang diperlukan. Periksa kebijakan yang dilampirkan ke peran cluster dan apakah ada kebijakan penolakan terpisah yang diterapkan.

Peran IAM cluster

Ya

ASUMSI_ROLE_ACCESS_DENIED_USING_SLR

Kami tidak dapat mengasumsikan peran terkait layanan manajemen cluster Amazon EKS. Periksa apakah peran ada dan memiliki kebijakan kepercayaan yang diperlukan.

Peran terkait layanan Amazon EKS

Ya

IZIN_AKSES_DITANGKAN_MENGGUNAKAN_SLR

Peran terkait layanan manajemen cluster Amazon EKS tidak memberikan izin yang cukup bagi Amazon EKS untuk melakukan operasi manajemen yang diperlukan. Periksa kebijakan yang dilampirkan ke peran cluster dan apakah ada kebijakan penolakan terpisah yang diterapkan.

Peran terkait layanan Amazon EKS

Ya

OPT_IN_REQUIRED

Akun Anda tidak memiliki langganan layanan Amazon EC2. Perbarui langganan akun Anda di halaman pengaturan akun Anda.

N/A

Ya

STS_REGIONAL_ENDPOINT_DISABLED

Titik akhir regional STS dinonaktifkan. Aktifkan titik akhir untuk Amazon EKS untuk melakukan operasi manajemen cluster yang diperlukan.

N/A

Ya

KMS_KEY_DINONAKTIFKAN

K AWS unci KMS yang terkait dengan cluster Anda dinonaktifkan. Re-enable kunci untuk memulihkan cluster Anda.

Kunci KMS ARN

Ya

KMS_KUNCI_TIDAK_DITEMUKAN

Kami tidak dapat menemukan kunci AWS KMS yang terkait dengan cluster Anda. Anda harus menghapus dan membuat ulang cluster.

Kunci KMS ARN

Tidak

KMS_GRANT_DICABUT

Hibah untuk K AWS unci KMS yang terkait dengan cluster Anda dicabut. Anda harus menghapus dan membuat ulang cluster.

Kunci KMS ARN

Tidak

ETCD_DB_SIZE_

Cluster Amazon EKS Anda telah melampaui batas ukuran database etcd. etcd adalah penyimpanan data nilai kunci yang berjalan di bidang kontrol Kubernetes dan mempertahankan konfigurasi dan status cluster Anda. Untuk mencegah cluster Anda memasuki status terdegradasi, harap kurangi ukuran database etcd dengan menghapus objek Kubernetes yang tidak perlu. Untuk panduan mengidentifikasi dan membersihkan objek yang berkontribusi terhadap ukuran database, lihat M engelola ukuran database etcd di cluster Amazon EKS. Jika Anda terus mengalami masalah setelah pembersihan, silakan hubungi AWS Dukungan.

Cluster ARN

Ya