Jika terjadi kesalahan saat menginstal, memperbarui, atau memodifikasi komponen di konsol Container Service for Kubernetes (ACK), kode kesalahan akan ditampilkan. Anda dapat mencari kode kesalahan dalam topik ini untuk melihat detail, penyebab, dan solusi terkait kesalahan tersebut. Topik ini mencantumkan kode kesalahan yang mungkin muncul selama pengelolaan komponen beserta penjelasan penyebab dan solusinya.
AddonOperationFailed.ResourceExists
Penyebab
Komponen tidak dapat langsung diinstal karena sumber daya tertentu yang diperlukan sudah ada di kluster. Kode kesalahan ini dapat muncul dalam skenario berikut:
Anda telah menginstal versi lain, seperti versi open source, dari komponen menggunakan metode lain.
Anda telah menginstal komponen menggunakan Helm V2, dan komponen tersebut belum dimigrasi atau dihapus sebelum Anda memperbarui Helm ke V3.
Anda telah membuat sumber daya dengan nama yang sama dengan sumber daya yang diperlukan oleh komponen di kluster.
Solusi
Hapus sumber daya yang menyebabkan masalah. Anda dapat melihat sumber daya yang bermasalah dalam pesan kesalahan. Contoh:
Status Addon tidak sesuai, gagal meningkatkan helm addon arms-cmonitor untuk kluster c3cf94b952cd34b54b71b10b7********, err: rendered manifests contain a resource that already exists. Tidak dapat melanjutkan dengan pembaruan: ConfigMap "otel-collector-config" di namespace "arms-prom" sudah ada dan tidak dapat diimpor ke rilis saat iniPesan kesalahan menunjukkan bahwa Anda harus menghapus otel-collector-config ConfigMap di namespace arms-prom.
Berikut adalah contoh cara memperbaiki masalah ini untuk beberapa komponen:
arms-prometheus
Untuk arms-prometheus, hapus namespace tempat arms-prometheus diinstal. Umumnya, arms-prometheus diinstal di namespace arms-prom. Jalankan perintah berikut untuk menghapus sumber daya terkait. Kemudian, instal atau perbarui arms-prometheus lagi.
kubectl delete ClusterRole arms-kube-state-metrics kubectl delete ClusterRole arms-node-exporter kubectl delete ClusterRole arms-prom-ack-arms-prometheus-role kubectl delete ClusterRole arms-prometheus-oper3 kubectl delete ClusterRole arms-prometheus-ack-arms-prometheus-role kubectl delete ClusterRole arms-pilot-prom-k8s kubectl delete ClusterRoleBinding arms-node-exporter kubectl delete ClusterRoleBinding arms-prom-ack-arms-prometheus-role-binding kubectl delete ClusterRoleBinding arms-prometheus-oper-bind2 kubectl delete ClusterRoleBinding kube-state-metrics kubectl delete ClusterRoleBinding arms-pilot-prom-k8s kubectl delete ClusterRoleBinding arms-prometheus-ack-arms-prometheus-role-binding kubectl delete Role arms-pilot-prom-spec-ns-k8s kubectl delete Role arms-pilot-prom-spec-ns-k8s -n kube-system kubectl delete RoleBinding arms-pilot-prom-spec-ns-k8s kubectl delete RoleBinding arms-pilot-prom-spec-ns-k8s -n kube-systemack-node-local-dns
Untuk ack-node-local-dns, jalankan perintah berikut untuk menghapus sumber daya terkait dan kemudian perbarui ack-node-local-dns lagi.
PentingBisnis Anda tidak terpengaruh setelah sumber daya ini dihapus. Namun, kami sarankan agar Anda tidak menambahkan pod baru selama periode waktu setelah sumber daya ini dihapus dan sebelum komponen diperbarui. Jika Anda menambahkan pod baru selama periode ini, kami sarankan agar Anda menghapus dan membuat ulang pod tersebut setelah komponen diperbarui untuk menyuntikkan cache DNS ke pod lagi.
kubectl delete MutatingWebhookConfiguration ack-node-local-dns-admission-controllerarms-cmonitor
Untuk arms-cmonitor, jalankan perintah berikut untuk menghapus sumber daya terkait dan kemudian instal atau perbarui arms-cmonitor lagi.
kubectl delete ConfigMap otel-collector-config -n arms-prom kubectl delete ClusterRoleBinding arms-prom-cmonitor-role-binding kubectl delete ClusterRoleBinding arms-prom-cmonitor-install-init-role-binding kubectl delete ClusterRole arms-prom-cmonitor-role kubectl delete ClusterRole arms-prom-cmonitor-install-init-role kubectl delete ServiceAccount cmonitor-sa-install-init -n kube-system
AddonOperationFailed.ReleaseNameInUse
Penyebab
Rilis Helm bernama komponen sudah ada di kluster. Akibatnya, Anda tidak dapat langsung menginstal atau memperbarui komponen menggunakan Helm. Kode kesalahan ini dapat muncul dalam skenario berikut:
Anda telah menginstal versi lain, seperti versi open source, dari komponen menggunakan metode lain.
Rilis Helm sisa bernama komponen masih ada.
Solusi
Lakukan langkah-langkah berikut untuk menghapus rilis Helm yang ada di kluster:
Masuk ke konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel sebelah kiri, pilih .
Di halaman Helm, temukan rilis Helm sisa yang bernama komponen. Klik Delete di kolom Actions. Di kotak dialog Hapus, pilih Clear Release Records dan klik OK.
Setelah rilis Helm dihapus, instal atau perbarui komponen.
AddonOperationFailed.WaitForAddonReadyTimeout
Penyebab
Permintaan pembaruan untuk komponen telah disubmit tetapi pod komponen tidak dapat mencapai status Ready. Akibatnya, komponen tidak dapat diperbarui.
Pemecahan Masalah
Lakukan langkah-langkah berikut untuk memecahkan masalah bahwa pod komponen tidak dapat mencapai status Ready:
Masuk ke konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel sebelah kiri, pilih .
Di tab Events (Cluster Resource Events), pilih Peringatan dari daftar drop-down Level, pilih namespace tempat komponen diterapkan, dan pilih Pod dari daftar drop-down Type. Kemudian, Anda dapat melihat insiden yang terkait dengan komponen.
Anda dapat menganalisis detail insiden untuk mengidentifikasi penyebabnya. Bagian Penyebab Umum dan Solusi berikut menjelaskan penyebab umum dan solusi untuk masalah ini.
Penyebab Umum dan Solusi
Cause 1: The component pods cannot be scheduled
Isi insiden: FailedScheduling
Deskripsi insiden: Node di kluster tidak memenuhi persyaratan untuk menampung pod komponen karena alasan berikut. Anda dapat menemukan penyebabnya berdasarkan detail insiden:
Resource CPU dan memori yang tersedia di node tidak cukup untuk menampung pod komponen. Dalam hal ini, Insufficient memory atau Insufficient cpu termasuk dalam detail insiden.
Node memiliki taint yang tidak ditoleransi oleh pod komponen. Dalam hal ini, the pod didn't tolerate termasuk dalam detail insiden.
Node tidak cukup untuk memenuhi aturan anti-affinity pod komponen. Dalam hal ini, didn't match pod anti-affinity rules termasuk dalam detail insiden.
Solusi: Lakukan operasi berikut untuk memenuhi persyaratan penjadwalan pod komponen. Kemudian, perbarui komponen lagi:
Untuk menghapus taint yang tidak diperlukan untuk node, lihat Kelola taint.
Untuk menghapus pod yang tidak lagi diperlukan, lihat Kelola pod.
Untuk menambahkan node ke kluster, lihat Buat pool node.
Untuk meningkatkan node di kluster, lihat Tingkatkan konfigurasi node pekerja.
Cause 2: The component pods cannot be created
Isi insiden: FailedCreatePodSandBox
Deskripsi insiden: Pod sandbox gagal dibuat. Penyebab umum untuk masalah ini adalah plug-in jaringan tidak dapat mengalokasikan alamat IP ke pod.
Solusi:
Jika vSwitch have insufficient IP termasuk dalam detail insiden, tambahkan pod vSwitch baru dalam mode Terway.
Jika transport: Error while dialing termasuk dalam detail insiden, pemecahan masalah pod untuk memeriksa apakah plug-in jaringan kluster bekerja seperti yang diharapkan.
AddonOperationFailed.APIServerUnreachable
Penyebab
ACK tidak dapat mengakses server API Kubernetes dari kluster. Penyebabnya mungkin Server Load Balancer (SLB) instance yang digunakan untuk mengekspos server API Kubernetes tidak bekerja seperti yang diharapkan atau instance SLB tidak dikonfigurasi dengan benar.
Solusi
Untuk informasi lebih lanjut tentang cara memecahkan masalah ini, lihat Pengecualian permintaan server API terjadi saat Anda mengakses sumber daya kluster.
AddonOperationFailed.ResourceNotFound
Penyebab
Sistem tidak dapat menemukan sumber daya yang diperlukan oleh komponen dan komponen tidak dapat langsung diperbarui. Penyebabnya mungkin sumber daya telah dimodifikasi atau dihapus.
Solusi
Copot komponen dan kemudian instal versi terbaru dari komponen.
AddonOperationFailed.TillerUnreachable
Penyebab
Komponen diinstal menggunakan Helm V2 dan instalasi atau pembaruan komponen bergantung pada Tiller. Tiller mengalami kesalahan dan tidak dapat diakses. Akibatnya, Anda tidak dapat melakukan operasi pada komponen.
Solusi
Lakukan langkah-langkah berikut untuk memulai ulang Tiller:
Masuk ke konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel sebelah kiri, pilih .
Pilih namespace kube-system. Temukan dan hapus pod tiller. Kemudian, tunggu sistem untuk membuat ulang pod.
Setelah pod Tiller mencapai status Ready, lakukan operasi lagi.
AddonOperationFailed.FailedCallingWebhook
Penyebab
Webhook mutasi dibuat untuk sumber daya tertentu yang diperlukan oleh komponen dan webhook tidak dapat dipanggil. Akibatnya, sumber daya ini tidak dapat diperbarui.
Solusi
Pemecahan masalah webhook dan perbaiki masalahnya. Kemudian, perbarui komponen lagi. Anda dapat melihat webhook yang tidak dapat dipanggil dalam pesan kesalahan. Contoh:
failed to create: Internal error occurred: failed calling webhook "rancher.cattle.io": failed to call webhook: Post "https://rancher-webhook.cattle-system.svc:443/v1/webhook/mutation?timeout=10s": no endpoints available for service "rancher-webhook"Pesan kesalahan di atas menunjukkan bahwa webhook rancher-webhook tidak dapat diakses.
AddonOperationFailed.UserForbidden
Penyebab
Kluster menggunakan Helm V2, namun Tiller tidak memiliki izin kontrol akses berbasis peran (RBAC) untuk menanyakan atau memperbarui sumber daya. Akibatnya, komponen tidak dapat diinstal atau diperbarui.
Solusi
Berikan izin RBAC yang diperlukan kepada Tiller. Untuk informasi lebih lanjut, lihat Role-Based Access Control.
AddonOperationFailed.TillerNotFound
Penyebab
Kluster menggunakan Helm V2 tetapi tidak ada pod Tiller yang berjalan normal di kluster. Akibatnya, Anda tidak dapat mengelola komponen menggunakan Helm.
Solusi
Pemecahan masalah pod tiller-deploy di namespace kube-system. Kelola komponen setelah pod tiller-deploy berjalan normal. Untuk informasi lebih lanjut tentang cara memecahkan masalah pod, lihat Pemecahan Masalah Pod.
AddonOperationFailed.ErrPatchingClusterRoleBinding
Penyebab
ClusterRoleBinding yang diperlukan oleh komponen sudah ada di kluster. Namun, konfigurasi ClusterRoleBinding berbeda dari konfigurasi yang diperlukan oleh komponen. Akibatnya, komponen tidak dapat diperbarui. Penyebabnya mungkin versi open source dari komponen diinstal di kluster.
Solusi
Ikuti langkah-langkah berikut untuk mencopot versi open source yang telah diinstal di kluster:
Masuk ke konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, cari kluster yang diinginkan dan klik nama kluster tersebut. Di panel kiri, pilih .
Di halaman Helm, temukan rilis Helm bernama komponen. Klik Delete pada kolom Actions. Di kotak dialog Hapus, pilih opsi Clear Release Records lalu klik OK.
Setelah rilis Helm berhasil dihapus, instal atau perbarui komponen yang diperlukan.
AddonOperationFailed.ErrApplyingPatch
Penyebab
Template YAML versi komponen sebelumnya tidak kompatibel dengan versi baru, sehingga komponen tidak dapat diperbarui. Masalah ini dapat terjadi dalam skenario berikut:
Anda telah menginstal versi lain, seperti versi open source, dari komponen di kluster menggunakan metode lain.
Anda telah memodifikasi template YAML komponen.
Versi sebelumnya dari komponen sudah tidak digunakan lagi.
Solusi
Anda perlu memodifikasi template YAML komponen yang diinstal di kluster sesuai dengan pesan kesalahan. Untuk informasi lebih lanjut, submit a ticket.
Contoh
Sebagai contoh, versi Flannel yang sudah tidak digunakan lagi diinstal di kluster, sehingga pembaruan komponen gagal karena konflik nama kontainer. Pesan kesalahan berikut dikembalikan:
spec.template.spec.initContainers[1].name: Nilai Duplikat: \"install-cni\"Untuk memperbaiki masalah ini, jalankan perintah kubectl -n kube-system edit ds kube-flannel-ds untuk memodifikasi template YAML Flannel. Hapus definisi container bernama install-cni pada bidang spec.template.spec.containers. Dalam contoh ini, hapus baris komentar 7 hingga 21.
containers:
- name: kube-flannel
image: registry-vpc.{{.Region}}.aliyuncs.com/acs/flannel:{{.ImageVersion}}
command: [ "/opt/bin/flanneld", "--ip-masq", "--kube-subnet-mgr" ]
...
# Baris tidak relevan tidak ditampilkan. Hapus baris komentar 7 hingga 21.
# - command:
# - /bin/sh
# - -c
# - set -e -x; cp -f /etc/kube-flannel/cni-conf.json /etc/cni/net.d/10-flannel.conf;
# while true; do sleep 3600; done
# image: registry-vpc.cn-beijing.aliyuncs.com/acs/flannel:v0.11.0.1-g6e46593e-aliyun
# imagePullPolicy: IfNotPresent
# name: install-cni
# resources: {}
# terminationMessagePath: /dev/termination-log
# terminationMessagePolicy: File
# volumeMounts:
# - mountPath: /etc/cni/net.d
# name: cni
# - mountPath: /etc/kube-flannel/
# Baris tidak relevan tidak ditampilkan. Hapus baris komentar 7 hingga 21.
name: flannel-cfg
...
Menghapus baris tersebut tidak akan menyebabkan gangguan layanan. Setelah baris dihapus, pembaruan bergulir otomatis akan dilakukan untuk kontainer tempat Flannel diterapkan. Setelah pembaruan selesai, Anda dapat memperbarui Flannel di konsol ACK. Untuk informasi lebih lanjut, lihat Kelola komponen.