Perbarui CoreDNS secara manual ketika opsi Upgrade tidak tersedia di halaman Add-ons Konsol ACK.
Prasyarat
Anda memerlukan:
Catatan pembaruan
Jika kube-proxy menggunakan mode IP Virtual Server (IPVS), semua kueri DNS mungkin gagal atau timeout selama sekitar 5 menit setelah pembaruan CoreDNS. Hindari hal ini dengan salah satu metode berikut:
Ubah timeout sesi UDP IPVS dalam konfigurasi kube-proxy. Lihat Konfigurasikan timeout UDP untuk kluster IPVS.
Gunakan NodeLocal DNSCache untuk mengoptimalkan resolusi DNS.
Pembaruan membutuhkan waktu sekitar 2 menit, tergantung pada jumlah replika CoreDNS. Replika yang ada tidak dihentikan, sehingga resolusi layanan tidak terpengaruh.
Periksa versi CoreDNS
Konsol
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Di halaman Deployments, atur Namespace ke kube-system dan periksa versi CoreDNS di kolom Image.

kubectl
Periksa versi CoreDNS:
kubectl get deployment coredns -n kube-system -o jsonpath="{.spec.template.spec.containers[0].image}"Output yang diharapkan:
registry-vpc.cn-hangzhou.aliyuncs.com/acs/coredns:1.6.2 # Versi 1.6.2 digunakan dalam contoh ini.Konfirmasi versi pembaruan
Tabel berikut mencantumkan versi CoreDNS yang kompatibel dengan setiap rentang versi Kubernetes. Gunakan versi kompatibel terbaru.
Rentang versi Kubernetes | Versi CoreDNS |
1.11 hingga 1.16 | 1.6.2 (tidak didukung lagi) |
1.14.8 hingga 1.22 | 1.6.7 (tidak didukung lagi) dan 1.7.0 |
1.20.4 dan yang lebih baru | 1.8.4 dan 1.9.3 Penting v1.8.4 dan v1.9.3 memiliki beberapa versi minor, seperti |
1.21 dan yang lebih baru | 1.11.3 |
Perbarui secara manual
Konsol
(Opsional) Ganti bidang
proxydengan bidangforward.Plugin Proxy telah ditinggalkan di CoreDNS v1.6.2. Jika melakukan peningkatan dari versi sebelumnya, ubah konfigurasi CoreDNS sebagai berikut.
Ubah versi image CoreDNS.
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Di halaman Deployments, atur Namespace ke kube-system. Temukan coredns dan pilih di kolom Actions.
Di kotak dialog Edit YAML, ubah nomor versi di bidang
imagedan klik Update.
Di dialog edit YAML, temukan konfigurasi Deployment CoreDNS dan pastikan versi image di bidang
image(misalnya,1.6.2). Cuplikan YAML penting:labelSelector: matchExpressions: - key: k8s-app operator: In values: - kube-dns topologyKey: kubernetes.io/hostname weight: 100 containers: - args: - '-conf' - /etc/coredns/Corefile image: 'registry-vpc.cn-hangzhou.aliyuncs.com/acs/coredns:1.6.2' imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 5 httpGet: ...
-
Verifikasi pembaruan.
Periksa versi CoreDNS:
kubectl get deployment coredns -n kube-system -o jsonpath="{.spec.template.spec.containers[0].image}"Output yang diharapkan:
registry-cn-shanghai-vpc.ack.aliyuncs.com/acs/coredns:v1.9.3.10-5e7ba42d-aliyunPeriksa apakah semua Pod CoreDNS berada dalam status Running:
kubectl get pods -n kube-system | grep corednsOutput yang diharapkan:
coredns-78d4b8****-6g62w 1/1 Running 0 9d coredns-78d4b8****-n6wjm 1/1 Running 0 9d
kubectl
(Opsional) Ganti bidang
proxydengan bidangforward.Plugin Proxy telah ditinggalkan di CoreDNS v1.6.2. Jika melakukan peningkatan dari versi sebelumnya, ubah konfigurasi CoreDNS sebagai berikut.
Ubah nomor versi di bidang
imagepada Deployment CoreDNS, lalu simpan dan keluar:kubectl edit deployment/coredns -n kube-systemVerifikasi pembaruan.
Periksa versi CoreDNS:
kubectl get deployment coredns -n kube-system -o jsonpath="{.spec.template.spec.containers[0].image}"Output yang diharapkan:
registry-cn-shanghai-vpc.ack.aliyuncs.com/acs/coredns:v1.9.3.10-5e7ba42d-aliyunPeriksa apakah semua Pod CoreDNS berada dalam status Running:
kubectl get pods -n kube-system | grep corednsOutput yang diharapkan:
coredns-78d4b8****-6g62w 1/1 Running 0 9d coredns-78d4b8****-n6wjm 1/1 Running 0 9d
Konfigurasikan timeout UDP untuk kluster IPVS
Jika kluster Anda menggunakan kube-proxy dalam mode IPVS, kurangi timeout persistensi sesi UDP IPVS menjadi 10 detik untuk membatasi kegagalan DNS setelah peningkatan.
Jika kluster Anda memiliki layanan berbasis UDP, evaluasi dampak pengurangan timeout UDP sebelum melanjutkan.
Kubernetes 1.18 atau yang lebih baru
Menggunakan konsol
-
Masuk ke Konsol ACK, lalu klik Clusters di panel navigasi kiri.
-
Di halaman Clusters, klik nama kluster. Pilih Configurations > ConfigMaps di panel navigasi kiri.
-
Di halaman ConfigMaps, pilih namespace kube-system, temukan kube-proxy-worker, dan klik Edit YAML di kolom Actions.
-
Di panel Edit YAML, tambahkan
udpTimeout: 10sdi bawah bidangipvsdan 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 -
Buat ulang semua Pod kube-proxy-worker.
-
Di halaman detail kluster, pilih Workloads > DaemonSets di panel navigasi kiri.
-
Di daftar DaemonSet, klik kube-proxy-worker.
-
Di halaman kube-proxy-worker, klik tab Pods. Untuk setiap Pod, pilih More > Delete dan klik OK. Sistem akan membuat ulang Pod tersebut secara otomatis.
-
-
Verifikasi konfigurasi timeout UDP.
-
Instal
ipvsadm:sudo yum install -y ipvsadm -
Di salah satu node ECS dalam kluster, jalankan:
sudo ipvsadm -L --timeoutJika angka ketiga dalam output adalah
10, timeout UDP telah dikonfigurasi dengan benar.Important: Setelah mengonfigurasi timeout, tunggu minimal lima menit sebelum meningkatkan CoreDNS.
-
Menggunakan command line
-
Edit ConfigMap kube-proxy-worker:
kubectl -n kube-system edit configmap kube-proxy-worker -
Tambahkan
udpTimeout: 10sdi bawah bidangipvs, lalu simpan 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 -
Buat ulang semua Pod kube-proxy-worker.
-
Daftar Pod kube-proxy-worker:
kubectl -n kube-system get pod -o wide | grep kube-proxy-worker -
Hapus setiap Pod. Sistem akan membuat ulang Pod tersebut secara otomatis.
kubectl -n kube-system delete pod <kube-proxy-worker-****>Ganti
<kube-proxy-worker-****>dengan nama Pod dari langkah sebelumnya.
-
-
Verifikasi konfigurasi timeout UDP.
-
Instal
ipvsadm:sudo yum install -y ipvsadm -
Di salah satu node ECS dalam kluster, jalankan:
sudo ipvsadm -L --timeoutJika angka ketiga dalam output adalah
10, timeout UDP telah dikonfigurasi dengan benar.Important: Setelah mengonfigurasi timeout, tunggu minimal lima menit sebelum meningkatkan CoreDNS.
-
Kubernetes 1.16 atau yang lebih lama
kube-proxy di kluster yang menjalankan Kubernetes 1.16 atau yang lebih lama tidak mendukung parameter udpTimeout. Gunakan Operation Orchestration Service (OOS) untuk menjalankan perintah ipvsadm ini secara batch di semua node kluster:
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
Lihat Operasi batch instans untuk menjalankan operasi batch di OOS.
Langkah selanjutnya
Setelah pembaruan, optimalkan konfigurasi CoreDNS untuk workload Anda.
