Bir ACK eklentisi işlemi başarısız olduğunda döndürülen her hata kodunun nedenini ve çözümünü bulun.
Hata kodu referansı
|
Hata kodu |
Açıklama |
|
AddonOperationFailed.ResourceExists |
Eklentinin gerektirdiği bir kaynak kümede zaten mevcut |
|
AddonOperationFailed.ReleaseNameInUse |
Eklentiyle aynı ada sahip bir Helm sürümü zaten mevcut |
|
AddonOperationFailed.WaitForAddonReadyTimeout |
Güncelleme isteği gönderildikten sonra eklenti podları Ready durumuna ulaşamıyor |
|
AddonOperationFailed.APIServerUnreachable |
ACK, Kubernetes API sunucusuna erişemiyor |
|
AddonOperationFailed.ResourceNotFound |
Eklentinin gerektirdiği kaynaklar bulunamıyor |
|
AddonOperationFailed.TillerUnreachable |
Helm V2 Tiller erişilemez durumda |
|
AddonOperationFailed.FailedCallingWebhook |
Bir eklenti kaynağı için mutating webhook çağrılamıyor |
|
AddonOperationFailed.UserForbidden |
Tiller, gerekli rol tabanlı erişim denetimi (RBAC) izinlerine sahip değil |
|
AddonOperationFailed.TillerNotFound |
Kümede çalışan bir Tiller podu yok |
|
AddonOperationFailed.ErrPatchingClusterRoleBinding |
Eklentinin gerektirdiği bir ClusterRoleBinding mevcut ancak yapılandırma çakışması var |
|
AddonOperationFailed.ErrApplyingPatch |
Eklentinin YAML bildirimleri sürümler arasında uyumsuz |
AddonOperationFailed.ResourceExists
Belirtiler
Konsolda aşağıdakine benzer bir hata görüntülenir:
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
Neden
Eklentinin gerektirdiği bir kaynak kümede zaten mevcuttur. Yaygın nedenler şunlardır:
Farklı bir yöntemle başka bir sürüm (örneğin açık kaynak sürümü) yüklenmiştir.
Eklenti Helm V2 ile yüklenmiş ve Helm V3'e geçiş öncesinde kaynakları kaldırılmamıştır.
Manuel olarak aynı ada sahip bir kaynak oluşturulmuştur.
Çözüm
Hata mesajında belirtilen çakışan kaynakları silin ve ardından işlemi yeniden deneyin.
Aşağıdaki bölümlerde belirli eklentiler için komutlar listelenmiştir.
arms-prometheus
arms-prometheus genellikle arms-prom ad alanında yüklenir. Kaynaklarını silin ve ardından arms-prometheus'u yeniden yükleyin.
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
Silme işlemi iş yüklerini etkilemez. Silme ve güncelleme işlemleri arasında pod eklemeyin. Eklerseniz, DNS önbelleğini yeniden enjekte etmek için güncellemeden sonra bu podları silip yeniden oluşturun.
kubectl delete MutatingWebhookConfiguration ack-node-local-dns-admission-controller
Kaynak silindikten sonra ack-node-local-dns'i güncelleyin.
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
Kaynaklar silindikten sonra arms-cmonitor'u yükleyin veya güncelleyin.
AddonOperationFailed.ReleaseNameInUse
Neden
Aynı ada sahip bir Helm sürümü zaten mevcut olduğundan yükleme veya güncelleme engellenir. Yaygın nedenler şunlardır:
Farklı bir yöntemle başka bir sürüm yüklenmiştir.
Önceki bir yükleme denemesinden kalan bir Helm sürümü bulunmaktadır.
Çözüm
ACK konsolu üzerinden oturum açın. Sol gezinme bölmesinde Clusters seçeneğine tıklayın.
Clusters sayfasında hedef kümenin adına tıklayın. Sol bölmede Applications > Helm seçeneğini belirleyin.
Eklentinin Helm sürümünü bulun. Actions sütununda Delete seçeneğine tıklayın. İletişim kutusunda Clear Release Records seçeneğini işaretleyin ve OK seçeneğine tıklayın.
Eklentiyi yükleyin veya güncelleyin.
AddonOperationFailed.WaitForAddonReadyTimeout
Neden
Güncelleme gönderildikten sonra eklenti podları zaman aşımı süresi içinde Ready durumuna ulaşamaz.
Sorun giderme
ACK konsolu üzerinden oturum açın. Sol gezinme bölmesinde Clusters seçeneğine tıklayın.
Clusters sayfasında hedef kümenin adına tıklayın. Sol bölmede Operations > Event Center seçeneğini belirleyin.
Events (Cluster Resource Events) sekmesinde Level değerini Warning olarak ayarlayın, eklentinin dağıtıldığı ad alanını seçin ve Type değerini Pod olarak ayarlayın. Nedeni belirlemek için olay ayrıntılarını inceleyin.
Yaygın nedenler ve çözümler
Neden 1: Podlar planlanamıyor (FailedScheduling)
Küme düğümleri eklenti podlarının planlama gereksinimlerini karşılamıyor. Olay ayrıntılarında şu mesajları kontrol edin:
|
Olay mesajı |
Neden |
Çözüm |
|
|
Düğümlerde yeterli kaynak yok |
Gereksiz podları silin, kümeye düğüm ekleyin veya düğüm yapılandırmalarını yükseltin |
|
|
Düğüm taint'leri eklenti podları tarafından tolere edilmiyor |
|
|
|
Anti-affinity kuralları karşılanamıyor |
Planlama sorununu çözdükten sonra eklenti güncellemesini yeniden deneyin.
Neden 2: Pod sandbox oluşturulamıyor (FailedCreatePodSandBox)
Ağ eklentisi podlara IP adresleri atayamıyor. Olay ayrıntılarını kontrol edin:
Mesaj
vSwitch have insufficient IPiçeriyorsa Terway modunda yeni pod vSwitch'leri ekleyin.Mesaj
transport: Error while dialingiçeriyorsa küme ağ eklentisini kontrol etmek için pod sorunlarını giderin.
AddonOperationFailed.APIServerUnreachable
Neden
ACK, Kubernetes API sunucusuna ulaşamıyor. Bu durum genellikle API sunucusunu dışa açan Server Load Balancer (SLB) örneğinin yanlış yapılandırılmasından kaynaklanır.
Çözüm
AddonOperationFailed.ResourceNotFound
Neden
Gerekli eklenti kaynakları eksik; büyük olasılıkla harici olarak silinmiş veya değiştirilmiş olup yerinde güncellemeyi engelliyor.
Çözüm
Eklentiyi kaldırın ve en son sürümü yükleyin.
AddonOperationFailed.TillerUnreachable
Neden
Eklenti, Tiller'a bağımlı olan Helm V2 kullanır. Tiller bir hatayla karşılaşmış ve erişilemez durumdadır.
Çözüm
ACK konsolu üzerinden oturum açın. Sol gezinme bölmesinde Clusters seçeneğine tıklayın.
Clusters sayfasında hedef kümenin adına tıklayın. Sol bölmede Workloads > Pods seçeneğini belirleyin.
kube-systemad alanını seçin. tiller podunu bulup silin. Sistem podu otomatik olarak yeniden oluşturur.Tiller podu Ready durumuna ulaştığında eklenti işlemini yeniden deneyin.
AddonOperationFailed.FailedCallingWebhook
Belirtiler
Konsolda aşağıdakine benzer bir hata görüntülenir:
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"
Neden
Bir eklenti kaynağı için mutating webhook çağrılamıyor ve bu durum güncellemeleri engelliyor.
Çözüm
Hata mesajında belirtilen başarısız webhook'u düzeltin ve ardından eklenti güncellemesini yeniden deneyin.
Örnekte, cattle-system ad alanındaki rancher-webhook webhook'u kullanılamıyor.
AddonOperationFailed.UserForbidden
Neden
Küme Helm V2 kullanır ancak Tiller, kaynakları yönetmek için gerekli RBAC izinlerine sahip değildir. Bu durum bileşen işlemlerini engeller.
Çözüm
Tiller'a gerekli RBAC izinlerini verin. Bkz. Rol tabanlı erişim denetimi.
AddonOperationFailed.TillerNotFound
Neden
Küme Helm V2 kullanır ancak çalışan bir Tiller podu yoktur.
Çözüm
kube-system ad alanındaki tiller-deploy podunun sorunlarını giderin. Pod normal çalışmaya başladıktan sonra eklenti işlemini yeniden deneyin. Bkz. Pod sorunlarını giderme.
AddonOperationFailed.ErrPatchingClusterRoleBinding
Neden
Eklentinin gerektirdiği bir ClusterRoleBinding mevcut ancak yapılandırma çakışması var. Bu durum genellikle ayrı olarak yüklenen açık kaynak sürümünden kaynaklanır.
Çözüm
Açık kaynak bileşen sürümünü kaldırın:
ACK konsolu üzerinden oturum açın. Sol gezinme bölmesinde Clusters seçeneğine tıklayın.
Clusters sayfasında hedef kümenin adına tıklayın. Sol bölmede Applications > Helm seçeneğini belirleyin.
Eklentinin Helm sürümünü bulun. Actions sütununda Delete seçeneğine tıklayın. İletişim kutusunda Clear Release Records seçeneğini işaretleyin ve OK seçeneğine tıklayın.
Eklentiyi yükleyin veya güncelleyin.
AddonOperationFailed.ErrApplyingPatch
Belirtiler
Konsolda aşağıdakine benzer bir hata görüntülenir:
spec.template.spec.initContainers[1].name: Duplicate value: "install-cni"
Neden
Yüklenen sürümün YAML bildirimleri hedef sürümle uyumlu değildir. Yaygın nedenler şunlardır:
Farklı bir yöntemle başka bir sürüm (örneğin açık kaynak sürümü) yüklenmiştir.
Eklentinin YAML bildirimleri manuel olarak değiştirilmiştir.
Şu anda yüklü olan sürüm artık desteklenmemektedir.
Çözüm
Hata mesajına göre bileşenin YAML bildirimlerini değiştirin. Yardım almak için bir destek talebi oluşturun.
Örnek: Flannel konteyner adı çakışması
Desteklenmeyen bir Flannel sürümü yüklendiyse güncelleme şu hata ile başarısız olabilir:
spec.template.spec.initContainers[1].name: Duplicate value: "install-cni"
Flannel DaemonSet bildirimini düzenleyin:
kubectl -n kube-system edit ds kube-flannel-ds
spec.template.spec.containers altındaki install-cni konteynerini bulun ve silin (örnekte 7–21. satırlar):
containers:
- name: kube-flannel
image: registry-vpc.{{.Region}}.aliyuncs.com/acs/flannel:{{.ImageVersion}}
command: [ "/opt/bin/flanneld", "--ip-masq", "--kube-subnet-mgr" ]
...
# Irrelevant lines are not shown. Delete comment lines 7 to 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/
# Irrelevant lines are not shown. Delete comment lines 7 to 21.
name: flannel-cfg
...
Bu satırları silmek çalışan iş yüklerini kesintiye uğratmaz. Otomatik olarak rolling update başlatılır. İşlem tamamlandıktan sonra Flannel'i ACK konsolundan güncelleyin. Bkz. Bileşenler.