全部产品
Search
文档中心

Container Service for Kubernetes:Pemecahan Masalah Komponen

更新时间:Jul 06, 2025

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 ini

Pesan 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-system
  • ack-node-local-dns

    Untuk ack-node-local-dns, jalankan perintah berikut untuk menghapus sumber daya terkait dan kemudian perbarui ack-node-local-dns lagi.

    Penting

    Bisnis 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-controller
  • arms-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:

  1. Masuk ke konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.

  2. Di halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel sebelah kiri, pilih Applications > Helm.

  3. 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.

  4. 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:

  1. Masuk ke konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.

  2. Di halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel sebelah kiri, pilih Operations > Event Center.

  3. 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:

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:

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:

  1. Masuk ke konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.

  2. Di halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel sebelah kiri, pilih Workloads > Pods.

  3. Pilih namespace kube-system. Temukan dan hapus pod tiller. Kemudian, tunggu sistem untuk membuat ulang pod.

  4. 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:

  1. Masuk ke konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Di halaman Clusters, cari kluster yang diinginkan dan klik nama kluster tersebut. Di panel kiri, pilih Applications > Helm.

  3. 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.

  4. 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.