全部产品
Search
文档中心

Container Service for Kubernetes:Peningkatan otomatis untuk CoreDNS yang tidak dikelola

更新时间:Nov 11, 2025

Topik ini menjelaskan pemeriksaan dan pengoptimalan pra-peningkatan untuk CoreDNS, serta langkah-langkah untuk melakukan peningkatan otomatis.

Prasyarat

Sambungkan ke kluster Anda menggunakan alat kubectl. Untuk informasi selengkapnya, lihat Sambungkan ke kluster menggunakan kubectl.

Proses peningkatan CoreDNS

  • Saat peningkatan CoreDNS, ACK memperbarui deployment CoreDNS menggunakan mode RollingUpgrade. Dalam mode ini, Pod lama hanya dihapus setelah Pod CoreDNS baru berjalan. Jumlah Pod CoreDNS tetap tidak berubah setelah peningkatan. Namun, jika Pod lama masih memproses permintaan resolusi DNS selama peningkatan, permintaan tersebut mungkin gagal. Untuk memastikan ketersediaan layanan DNS di kluster Anda, Anda dapat menggunakan komponen NodeLocal DNSCache. Untuk informasi selengkapnya, lihat Gunakan komponen NodeLocal DNSCache.

  • Jika sebelumnya Anda menyesuaikan templat YAML dengan mengubah bidang seperti toleransi, permintaan sumber daya memori dan CPU, serta batasannya, penyesuaian tersebut akan ditimpa. Dalam kasus ini, Anda harus melakukan peningkatan CoreDNS secara manual atau menerapkan kembali penyesuaian Anda ke templat YAML setelah peningkatan otomatis selesai. Untuk informasi selengkapnya tentang cara melakukan peningkatan manual, lihat Tingkatkan CoreDNS yang tidak dikelola secara manual.

  • Jika Anda menggunakan IPVS sebagai mode load balancing kube-proxy, timeout atau kegagalan resolusi DNS di seluruh kluster mungkin terjadi dalam waktu lima menit setelah peningkatan CoreDNS selesai. Untuk mengurangi dampak bug IPVS ini, Anda dapat menggunakan salah satu metode berikut:

  • Proses peningkatan memerlukan waktu sekitar 2 menit. Waktu aktual yang dibutuhkan dapat bervariasi tergantung pada jumlah replika CoreDNS di kluster. Peningkatan menggunakan kebijakan terminasi graceful di mana replika lama tidak langsung dihentikan. Hal ini memastikan bahwa resolusi DNS untuk aplikasi tidak terpengaruh. Jika peningkatan gagal, sistem secara otomatis melakukan rollback dalam waktu 10 menit.

Aktifkan plugin ready

Jika Anda telah meningkatkan CoreDNS secara manual ke versi yang lebih baru dari 1.5.0, periksa apakah plugin ready diaktifkan dalam file konfigurasi CoreDNS. Jika plugin ready tidak diaktifkan, Anda harus mengaktifkan plugin ready sebelum melakukan peningkatan otomatis. Jika tidak, CoreDNS akan gagal memulai.

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

  2. Di halaman Clusters, klik nama kluster yang ingin Anda ubah. Di panel navigasi sebelah kiri, pilih Configurations > ConfigMaps.

  3. Di halaman ConfigMaps, atur Namespace menjadi kube-system di bagian atas halaman. Lalu, temukan coredns dan klik Edit YAML di kolom Actions.

  4. Di panel View YAML, periksa keberadaan bidang ready. Jika bidang tersebut tidak ada, tambahkan bidang ready dan klik OK.

    apiVersion: v1
    data:
     Corefile: |
      .:53 {
        errors
        health {
          lameduck 15s
        }
        ready # Jika baris ini tidak ada, tambahkan. Pastikan indentasi konsisten dengan kubernetes.
        kubernetes cluster.local in-addr.arpa ip6.arpa {
          pods verified
          fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        forward . /etc/resolv.conf {
          max_concurrent 1000
        }
        cache 30
        loop
        log
        reload
        loadbalance
      }
  5. Jalankan perintah berikut untuk memeriksa apakah konfigurasi CoreDNS dimuat ke output standar Pod CoreDNS. Konfigurasi baru akan dimuat ulang secara hot dalam waktu sekitar 30 detik.

    kubectl logs coredns-78d4b8bd88-n6wjm -n kube-system

    Output yang diharapkan berisi informasi plugin/reload, yang menunjukkan bahwa konfigurasi CoreDNS telah dimuat.

Mulai peningkatan

Anda dapat meningkatkan versi CoreDNS dari halaman Manajemen Komponen di Konsol ACK.

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

  2. Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel navigasi kiri, klik Add-ons.

  3. Di halaman Component Management, cari CoreDNS dan klik Upgrade.

Konfigurasikan timeout UDP untuk kluster IPVS

Jika kluster Anda menggunakan mode IPVS kube-proxy, kebijakan persistensi sesi IPVS dapat menyebabkan kegagalan resolusi DNS intermiten di seluruh kluster selama lima menit setelah peningkatan. Untuk mengurangi jumlah kegagalan resolusi, Anda dapat mengurangi timeout persistensi sesi UDP IPVS menjadi 10 detik. Jika kluster Anda memiliki layanan berbasis UDP, evaluasi potensi dampak operasi ini sebelum melanjutkan.

Jika kluster Anda bukan kluster IPVS, Anda dapat mengabaikan bagian ini. Untuk informasi selengkapnya tentang cara memeriksa modus proxy kube-proxy, lihat Lihat informasi kluster.

For Kubernetes 1.18 or later clusters

Using the console

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

  2. Di halaman Clusters, klik nama kluster yang ingin Anda ubah. Di panel navigasi sebelah kiri, pilih Configurations > ConfigMaps.

  3. Di halaman ConfigMaps, pilih namespace kube-system. Temukan ConfigMap kube-proxy-worker dan klik Edit YAML di kolom Actions.

  4. Di panel View YAML, tambahkan udpTimeout: 10s di bawah bidang ipvs dan klik OK.

    apiVersion: v1
    data:
      config.conf: |
        apiVersion: kubeproxy.config.k8s.io/v1alpha1
        kind: KubeProxyConfiguration
        # Bidang lain yang tidak relevan dihilangkan.
        mode: ipvs
        # Jika kunci ipvs tidak ada, tambahkan.
        ipvs:
          udpTimeout: 10s
  5. Buat ulang semua Pod bernama kube-proxy-worker.

    1. Di halaman Cluster Information, di panel navigasi kiri, pilih Workloads > DaemonSets.

    2. Di daftar DaemonSet, temukan dan klik kube-proxy-worker.

    3. Di halaman kube-proxy-worker, klik tab Pods. Di baris sebuah Pod, pilih More > Delete, lalu klik OK.

      Ulangi langkah ini untuk menghapus semua Pod. Setelah Pod dihapus, sistem akan membuat ulang secara otomatis.

  6. Verifikasi bahwa timeout UDP telah dikonfigurasi.

    1. Jalankan perintah berikut untuk menginstal ipvsadm.

      ipvsadm adalah alat manajemen untuk modul IPVS. Untuk informasi selengkapnya, lihat ipvsadm.

      sudo yum install -y ipvsadm
    2. Jalankan perintah berikut di node ECS mana pun di kluster dan periksa angka ketiga dalam output.

      sudo ipvsadm -L --timeout

      Jika angka ketiga dalam output adalah 10, timeout UDP untuk kluster IPVS berhasil diubah.

      Setelah perubahan berhasil, tunggu minimal lima menit sebelum melanjutkan ke langkah berikutnya.

Using the command line

  1. Jalankan perintah berikut untuk mengedit file konfigurasi kube-proxy-worker.

    kubectl -n kube-system edit configmap kube-proxy-worker
  2. Di file konfigurasi kube-proxy, tambahkan udpTimeout: 10s di bawah bidang ipvs. Lalu, simpan file dan keluar.

    apiVersion: v1
    data:
      config.conf: |
        apiVersion: kubeproxy.config.k8s.io/v1alpha1
        kind: KubeProxyConfiguration
        # Bidang lain yang tidak relevan dihilangkan.
        mode: ipvs
        # Jika kunci ipvs tidak ada, tambahkan.
        ipvs:
          udpTimeout: 10s
  3. Jalankan perintah berikut untuk membuat ulang semua Pod bernama kube-proxy-worker.

    1. Jalankan perintah berikut untuk melihat informasi Pod yang ada.

      kubectl -n kube-system get pod -o wide | grep kube-proxy-worker
    2. Jalankan perintah berikut untuk menghapus Pod yang ditemukan pada langkah sebelumnya. Sistem akan membuat ulang Pod bernama kube-proxy-worker secara otomatis.

      kubectl -n kube-system delete pod <kube-proxy-worker-****>
      Ganti <kube-proxy-worker-****> dengan nama Pod yang ditemukan pada langkah sebelumnya.
  4. Verifikasi bahwa timeout UDP telah dikonfigurasi.

    1. Jalankan perintah berikut untuk menginstal ipvsadm.

      ipvsadm adalah alat manajemen untuk modul IPVS. Untuk informasi selengkapnya, lihat ipvsadm.

      sudo yum install -y ipvsadm
    2. Jalankan perintah berikut di node ECS mana pun di kluster dan periksa angka ketiga dalam output.

      sudo ipvsadm -L --timeout

      Jika angka ketiga dalam output adalah 10, timeout UDP untuk kluster IPVS berhasil diubah.

      Setelah perubahan berhasil, tunggu minimal lima menit sebelum melanjutkan ke langkah berikutnya.

For Kubernetes 1.16 or earlier clusters

Komponen kube-proxy di kluster yang menjalankan versi ini tidak mendukung parameter udpTimeout. Anda dapat menggunakan Operation Orchestration Service (OOS) untuk menjalankan perintah ipvsadm secara batch di semua node kluster guna menyesuaikan konfigurasi timeout UDP. Perintahnya adalah sebagai berikut:

sudo yum install -y ipvsadm
sudo ipvsadm -L --timeout > /tmp/ipvsadm_timeout_old
sudo ipvsadm --set 900 120 10
sudo ipvsadm -L --timeout > /tmp/ipvsadm_timeout_new
diff /tmp/ipvsadm_timeout_old /tmp/ipvsadm_timeout_new

Untuk informasi selengkapnya tentang operasi batch di OOS, lihat Operasi batch instans.

Langkah selanjutnya

Setelah peningkatan selesai, Anda dapat mengoptimalkan dan mengonfigurasi CoreDNS. Untuk informasi selengkapnya, lihat Optimalkan konfigurasi CoreDNS.