Temukan penyebab dan solusi untuk setiap kode kesalahan yang dikembalikan saat operasi add-on ACK gagal.
Referensi kode kesalahan
| Error code | Description |
|---|---|
| AddonOperationFailed.ResourceExists | Resource yang dibutuhkan oleh add-on sudah ada di kluster |
| AddonOperationFailed.ReleaseNameInUse | Helm release dengan nama yang sama seperti add-on sudah ada |
| AddonOperationFailed.WaitForAddonReadyTimeout | Pod add-on tidak dapat mencapai status Ready setelah permintaan pembaruan diajukan |
| AddonOperationFailed.APIServerUnreachable | ACK tidak dapat mengakses Kubernetes API server |
| AddonOperationFailed.ResourceNotFound | Resource yang dibutuhkan oleh add-on tidak ditemukan |
| AddonOperationFailed.TillerUnreachable | Helm V2 Tiller tidak dapat diakses |
| AddonOperationFailed.FailedCallingWebhook | Webhook mutasi untuk resource add-on tidak dapat dipanggil |
| AddonOperationFailed.UserForbidden | Tiller tidak memiliki izin Kontrol akses berbasis peran (RBAC) yang diperlukan |
| AddonOperationFailed.TillerNotFound | Tidak ada pod Tiller yang sedang berjalan di kluster |
| AddonOperationFailed.ErrPatchingClusterRoleBinding | ClusterRoleBinding yang dibutuhkan oleh add-on sudah ada tetapi memiliki konfigurasi yang bertentangan |
| AddonOperationFailed.ErrApplyingPatch | Manifes YAML add-on tidak kompatibel antar versi |
AddonOperationFailed.ResourceExists
Gejala
Konsol menampilkan kesalahan serupa:
Addon status not match, failed upgrade helm addon arms-cmonitor for cluster c3cf94b952cd34b54b71b10b7********, err: rendered manifests contain a resource that already exists. Unable to continue with update: ConfigMap "otel-collector-config" in namespace "arms-prom" exists and cannot be imported into the current release
Penyebab
Resource yang dibutuhkan oleh add-on sudah ada di kluster. Penyebab umum:
-
Versi lain (misalnya versi open-source) diinstal dengan metode berbeda.
-
Add-on diinstal dengan Helm V2, dan resource-nya tidak dihapus sebelum migrasi ke Helm V3.
-
Resource dengan nama yang sama dibuat secara manual.
Solusi
Hapus resource yang bertentangan dari pesan kesalahan, lalu coba ulang operasi tersebut.
Bagian berikut mencantumkan perintah untuk add-on tertentu.
arms-prometheus
arms-prometheus biasanya diinstal di namespace arms-prom. Hapus resource-nya, lalu instal ulang arms-prometheus.
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-system
ack-node-local-dns
Beban kerja tidak terpengaruh oleh penghapusan ini. Jangan menambahkan pod antara penghapusan dan pembaruan. Jika Anda melakukannya, hapus dan buat ulang pod tersebut setelah pembaruan agar cache DNS dimasukkan kembali.
kubectl delete MutatingWebhookConfiguration ack-node-local-dns-admission-controller
Setelah resource dihapus, perbarui ack-node-local-dns.
arms-cmonitor
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
Setelah resource dihapus, instal atau perbarui arms-cmonitor.
AddonOperationFailed.ReleaseNameInUse
Penyebab
Helm release dengan nama yang sama sudah ada, sehingga mencegah instalasi atau pembaruan. Penyebab umum:
-
Versi lain diinstal dengan metode berbeda.
-
Sisa Helm release dari upaya instalasi sebelumnya masih tersisa.
Solusi
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Pada halaman Clusters, klik nama kluster target. Di panel kiri, pilih Applications > Helm.
-
Temukan Helm release add-on tersebut. Pada kolom Actions, klik Delete. Di kotak dialog, pilih Clear Release Records lalu klik OK.
-
Instal atau perbarui add-on tersebut.
AddonOperationFailed.WaitForAddonReadyTimeout
Penyebab
Pod add-on tidak dapat mencapai status Ready dalam periode timeout setelah pembaruan diajukan.
Troubleshooting
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Pada halaman Clusters, klik nama kluster target. Di panel kiri, pilih Operations > Event Center.
-
Pada tab Events (Cluster Resource Events), atur Level ke Warning, pilih namespace tempat add-on dideploy, dan atur Type ke Pods. Tinjau detail event untuk mengidentifikasi penyebabnya.
Penyebab dan solusi umum
Penyebab 1: Pod tidak dapat dijadwalkan (FailedScheduling)
Node kluster tidak memenuhi persyaratan penjadwalan untuk pod add-on. Periksa detail event untuk pesan berikut:
| Event message | Cause | Solution |
|---|---|---|
Insufficient memory atau Insufficient cpu |
Node kekurangan sumber daya | Hapus pod yang tidak diperlukan, tambahkan node ke kluster, atau tingkatkan konfigurasi node |
the pod didn't tolerate |
Pod add-on tidak mentoleransi taint pada node | Hapus taint dari node |
didn't match pod anti-affinity rules |
Aturan anti-afinitas pod tidak dapat dipenuhi | Tambahkan node ke kluster |
Setelah menyelesaikan masalah penjadwalan, coba ulang pembaruan add-on.
Penyebab 2: Sandbox pod tidak dapat dibuat (FailedCreatePodSandBox)
Plugin jaringan tidak dapat mengalokasikan alamat IP ke pod. Periksa detail event:
-
Jika pesan berisi
vSwitch have insufficient IP, tambahkan vSwitch pod baru dalam mode Terway. -
Jika pesan berisi
transport: Error while dialing, lakukan troubleshooting pada pod untuk memeriksa plugin jaringan kluster.
AddonOperationFailed.APIServerUnreachable
Penyebab
ACK tidak dapat menjangkau Kubernetes API server, biasanya karena instans Server Load Balancer (SLB) yang mengekspos API server dikonfigurasi salah.
Solusi
AddonOperationFailed.ResourceNotFound
Penyebab
Resource add-on yang diperlukan hilang—kemungkinan dihapus atau dimodifikasi secara eksternal—sehingga mencegah pembaruan in-place.
Solusi
Uninstall add-on tersebut dan instal versi terbaru.
AddonOperationFailed.TillerUnreachable
Penyebab
Add-on menggunakan Helm V2, yang bergantung pada Tiller. Tiller mengalami kesalahan dan tidak dapat diakses.
Solusi
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Pada halaman Clusters, klik nama kluster target. Di panel kiri, pilih Workloads > Pods.
-
Pilih namespace
kube-system. Temukan dan hapus pod tiller. Sistem akan membuat ulang pod tersebut secara otomatis. -
Setelah pod Tiller mencapai status Ready, coba ulang operasi add-on.
AddonOperationFailed.FailedCallingWebhook
Gejala
Konsol menampilkan kesalahan serupa:
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"
Penyebab
Webhook mutasi untuk resource add-on tidak dapat dipanggil, sehingga memblokir pembaruan.
Solusi
Perbaiki webhook yang gagal sebagaimana tercantum dalam pesan kesalahan, lalu coba ulang pembaruan add-on.
Pada contoh tersebut, webhook rancher-webhook di namespace cattle-system tidak tersedia.
AddonOperationFailed.UserForbidden
Penyebab
Kluster menggunakan Helm V2, tetapi Tiller tidak memiliki izin RBAC untuk mengelola resource, sehingga mencegah operasi komponen.
Solusi
Berikan izin RBAC yang diperlukan kepada Tiller. Lihat Role-based access control.
AddonOperationFailed.TillerNotFound
Penyebab
Kluster menggunakan Helm V2, tetapi tidak ada pod Tiller yang berjalan.
Solusi
Lakukan troubleshooting pada pod tiller-deploy di namespace kube-system. Setelah pod berjalan normal, coba ulang operasi add-on. Lihat Troubleshoot pod issues.
AddonOperationFailed.ErrPatchingClusterRoleBinding
Penyebab
ClusterRoleBinding yang dibutuhkan oleh add-on sudah ada tetapi memiliki konfigurasi yang bertentangan, biasanya disebabkan oleh instalasi versi open-source secara terpisah.
Solusi
Uninstall versi komponen open-source tersebut:
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Pada halaman Clusters, klik nama kluster target. Di panel kiri, pilih Applications > Helm.
-
Temukan Helm release add-on tersebut. Pada kolom Actions, klik Delete. Di kotak dialog, pilih Clear Release Records lalu klik OK.
-
Instal atau perbarui add-on tersebut.
AddonOperationFailed.ErrApplyingPatch
Gejala
Konsol menampilkan kesalahan serupa:
spec.template.spec.initContainers[1].name: Duplicate value: "install-cni"
Penyebab
Manifes YAML versi yang terinstal tidak kompatibel dengan versi target. Penyebab umum:
-
Versi lain (misalnya versi open-source) diinstal dengan metode berbeda.
-
Manifes YAML add-on dimodifikasi secara manual.
-
Versi yang saat ini terinstal sudah tidak didukung lagi.
Solusi
Modifikasi manifes YAML komponen berdasarkan pesan kesalahan. Untuk bantuan lebih lanjut, kirim tiket.
Contoh: Konflik nama kontainer Flannel
Jika versi Flannel yang sudah tidak digunakan lagi diinstal, pembaruan dapat gagal dengan:
spec.template.spec.initContainers[1].name: Duplicate value: "install-cni"
Edit manifes DaemonSet Flannel:
kubectl -n kube-system edit ds kube-flannel-ds
Temukan kontainer install-cni di bawah spec.template.spec.containers dan hapus bagian tersebut (baris 7–21 pada contoh):
containers:
- name: kube-flannel
image: registry-vpc.{{.Region}}.aliyuncs.com/acs/flannel:{{.ImageVersion}}
command: [ "/opt/bin/flanneld", "--ip-masq", "--kube-subnet-mgr" ]
...
# Baris yang 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 yang tidak relevan tidak ditampilkan. Hapus baris komentar 7 hingga 21.
name: flannel-cfg
...
Menghapus baris-baris ini tidak mengganggu beban kerja yang sedang berjalan. Pembaruan rolling akan dimulai secara otomatis. Setelah selesai, perbarui Flannel dari Konsol ACK. Lihat Manage components.