Bekerja dengan add-on CoreDNS Amazon EKS - Amazon EKS

Bantu tingkatkan halaman ini

Ingin berkontribusi pada panduan pengguna ini? Gulir ke bagian bawah halaman ini dan pilih Edit halaman ini GitHub. Kontribusi Anda akan membantu membuat panduan pengguna kami lebih baik untuk semua orang.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Bekerja dengan add-on CoreDNS Amazon EKS

CoreDNSadalah server DNS yang fleksibel dan dapat diperluas yang dapat berfungsi sebagai DNS Kubernetes cluster. Saat Anda meluncurkan klaster Amazon EKS dengan setidaknya satu node, dua replika CoreDNS gambar akan di-deploy secara default, terlepas dari jumlah node yang digunakan di cluster Anda. CoreDNSPodsMenyediakan resolusi nama untuk semua Pods di cluster. CoreDNSPodsDapat diterapkan ke node Fargate jika cluster Anda menyertakan dengan namespace AWS Fargate profil yang cocok dengan namespace untuk. CoreDNS deployment Untuk informasi selengkapnyaCoreDNS, lihat Menggunakan CoreDNS untuk Penemuan Layanan di Kubernetes dokumentasi.

Tabel berikut mencantumkan versi terbaru dari jenis add-on Amazon EKS untuk setiap Kubernetes versi.

Versi Kubernetes 1.30 1.29 1.28 1.27 1.26 1.25 1.24 1.23
v1.11.1-eksbuild.9 v1.11.1-eksbuild.9 v1.10.1-eksbuild.11 v1.10.1-eksbuild.11 v1.9.3-eksbuild.15 v1.9.3-eksbuild.15 v1.9.3-eksbuild.15 v1.8.7-eksbuild.10
penting

Jika Anda mengelola sendiri add-on ini, versi dalam tabel mungkin tidak sama dengan versi yang dikelola sendiri yang tersedia. Untuk informasi selengkapnya tentang memperbarui jenis pengaya yang dikelola sendiri, lihat. Memperbarui add-on yang dikelola sendiri

Pertimbangan CoreDNS peningkatan penting

  • Untuk meningkatkan stabilitas dan ketersediaan CoreDNSDeployment, versi v1.9.3-eksbuild.6 dan yang lebih baru dan v1.10.1-eksbuild.3 digunakan dengan PodDisruptionBudget file. Jika Anda telah menerapkan yang sudah adaPodDisruptionBudget, pemutakhiran Anda ke versi ini mungkin gagal. Jika pemutakhiran gagal, menyelesaikan salah satu tugas berikut akan menyelesaikan masalah:

    • Saat melakukan pemutakhiran add-on Amazon EKS, pilih untuk mengganti pengaturan yang ada sebagai opsi resolusi konflik Anda. Jika Anda telah membuat pengaturan khusus lainnya keDeployment, pastikan untuk mencadangkan pengaturan Anda sebelum memutakhirkan sehingga Anda dapat menerapkan kembali pengaturan kustom Anda yang lain setelah peningkatan.

    • Hapus yang sudah ada PodDisruptionBudget dan coba upgrade lagi.

  • Dalam versi add-on EKS v1.9.3-eksbuild.3 dan yang lebih baru v1.10.1-eksbuild.6 dan yang lebih baru, CoreDNS Deployment set readinessProbe untuk menggunakan /ready endpoint. Titik akhir ini diaktifkan dalam file Corefile konfigurasi untukCoreDNS.

    Jika Anda menggunakan kustomCorefile, Anda harus menambahkan ready plugin ke konfigurasi, sehingga /ready titik akhir aktif CoreDNS untuk digunakan probe.

  • Dalam versi add-on EKS v1.9.3-eksbuild.7 dan yang lebih baru v1.10.1-eksbuild.4 dan yang lebih baru, Anda dapat mengubah file. PodDisruptionBudget Anda dapat mengedit add-on dan mengubah pengaturan ini di Pengaturan konfigurasi opsional menggunakan bidang dalam contoh berikut. Contoh ini menunjukkan defaultPodDisruptionBudget.

    { "podDisruptionBudget": { "enabled": true, "maxUnavailable": 1 } }

    Anda dapat mengatur maxUnavailable atauminAvailable, tetapi Anda tidak dapat mengatur keduanya dalam satuPodDisruptionBudget. Untuk informasi selengkapnyaPodDisruptionBudgets, lihat Menentukan a PodDisruptionBudget dalam Kubernetesdokumentasi.

    Perhatikan bahwa jika Anda menyetel enabled kefalse, PodDisruptionBudget tidak dihapus. Setelah Anda mengatur bidang inifalse, Anda harus menghapus PodDisruptionBudget objek. Demikian pula, jika Anda mengedit add-on untuk menggunakan versi add-on yang lebih lama (menurunkan versi add-on) setelah memutakhirkan ke versi dengan aPodDisruptionBudget, add-on tidak dihapus. PodDisruptionBudget Untuk menghapusPodDisruptionBudget, Anda dapat menjalankan perintah berikut:

    kubectl delete poddisruptionbudget coredns -n kube-system
  • Dalam versi add-on EKS v1.10.1-eksbuild.5 dan yang lebih baru, ubah toleransi default dari node-role.kubernetes.io/master:NoSchedule menjadi node-role.kubernetes.io/control-plane:NoSchedule mematuhi KEP 2067. Untuk informasi lebih lanjut tentang KEP 2067, lihat KEP-2067: Ganti nama label “master” kubeadm dan taint di Kubernetes Enhancement Proposals (KEPs) di. GitHub

    Dalam versi add-on EKS v1.8.7-eksbuild.8 dan yang lebih baru v1.9.3-eksbuild.9 dan yang lebih baru, kedua toleransi diatur agar kompatibel dengan setiap Kubernetes versi.

  • Dalam versi add-on EKS v1.9.3-eksbuild.11 v1.10.1-eksbuild.7 dan yang lebih baru, CoreDNS Deployment menetapkan nilai default untuktopologySpreadConstraints. Nilai default memastikan bahwa CoreDNS Pods tersebar di Availability Zone jika ada node di beberapa Availability Zone yang tersedia. Anda dapat menetapkan nilai kustom yang akan digunakan sebagai pengganti nilai default. Nilai default berikut:

    topologySpreadConstraints: - maxSkew: 1 topologyKey: topology.kubernetes.io/zone whenUnsatisfiable: ScheduleAnyway labelSelector: matchLabels: k8s-app: kube-dns

CoreDNSv 1.11 meningkatkan pertimbangan

  • Dalam versi add-on EKS v1.11.1-eksbuild.4 dan yang lebih baru, gambar kontainer didasarkan pada gambar dasar minimal yang dikelola oleh Amazon EKS Distro, yang berisi paket minimal dan tidak memiliki cangkang. Untuk informasi selengkapnya, lihat Amazon EKS Distro. Penggunaan dan pemecahan masalah CoreDNS gambar tetap sama.

Membuat add-on Amazon EKS

Buat jenis add-on Amazon EKS. Memeriksa

Prasyarat
  1. Lihat versi add-on mana yang diinstal pada cluster Anda.

    kubectl describe deployment coredns --namespace kube-system | grep coredns: | cut -d : -f 3

    Contoh output adalah sebagai berikut.

    v1.10.1-eksbuild.11
  2. Lihat jenis add-on yang diinstal pada cluster Anda. Bergantung pada alat yang digunakan untuk membuat klaster, saat ini Anda mungkin tidak menginstal jenis add-on Amazon EKS di cluster Anda. Ganti my-cluster dengan nama klaster Anda.

    aws eks describe-addon --cluster-name my-cluster --addon-name coredns --query addon.addonVersion --output text

    Jika nomor versi dikembalikan, Anda memiliki jenis add-on Amazon EKS yang diinstal pada cluster Anda dan tidak perlu menyelesaikan langkah-langkah yang tersisa dalam prosedur ini. Jika kesalahan dikembalikan, Anda tidak memiliki jenis add-on Amazon EKS yang diinstal pada cluster Anda. Selesaikan langkah-langkah yang tersisa dari prosedur ini untuk menginstalnya.

  3. Simpan konfigurasi add-on yang Anda instal saat ini.

    kubectl get deployment coredns -n kube-system -o yaml > aws-k8s-coredns-old.yaml
  4. Buat add-on menggunakan. AWS CLI Jika Anda ingin menggunakan AWS Management Console atau eksctl untuk membuat add-on, lihat Membuat add-on dan tentukan nama coredns add-on. Salin perintah yang mengikuti ke perangkat Anda. Buat modifikasi berikut pada perintah, sesuai kebutuhan, dan kemudian jalankan perintah yang dimodifikasi.

    • Ganti my-cluster dengan nama klaster Anda.

    • Ganti v1.11.1-eksbuild.9 dengan versi terbaru yang tercantum dalam tabel versi terbaru untuk versi cluster Anda.

    aws eks create-addon --cluster-name my-cluster --addon-name coredns --addon-version v1.11.1-eksbuild.9

    Jika Anda telah menerapkan pengaturan khusus ke add-on saat ini yang bertentangan dengan pengaturan default add-on Amazon EKS, pembuatan mungkin gagal. Jika pembuatan gagal, Anda menerima kesalahan yang dapat membantu Anda menyelesaikan masalah. Atau, Anda dapat menambahkan --resolve-conflicts OVERWRITE ke perintah sebelumnya. Ini memungkinkan add-on untuk menimpa pengaturan kustom yang ada. Setelah Anda membuat add-on, Anda dapat memperbaruinya dengan pengaturan khusus Anda.

  5. Konfirmasikan bahwa versi terbaru add-on untuk Kubernetes versi klaster Anda telah ditambahkan ke klaster Anda. Ganti my-cluster dengan nama klaster Anda.

    aws eks describe-addon --cluster-name my-cluster --addon-name coredns --query addon.addonVersion --output text

    Mungkin perlu beberapa detik untuk menyelesaikan pembuatan add-on.

    Contoh output adalah sebagai berikut.

    v1.11.1-eksbuild.9
  6. Jika Anda membuat pengaturan khusus untuk add-on asli Anda, sebelum Anda membuat add-on Amazon EKS, gunakan konfigurasi yang Anda simpan di langkah sebelumnya untuk memperbarui add-on Amazon EKS dengan pengaturan khusus Anda.

Memperbarui add-on Amazon EKS

Perbarui jenis add-on Amazon EKS. Jika Anda belum menambahkan jenis add-on Amazon EKS ke klaster Anda, tambahkan atau lihatMemperbarui add-on yang dikelola sendiri, alih-alih menyelesaikan prosedur ini.

  1. Lihat versi add-on mana yang diinstal pada cluster Anda. Ganti my-cluster dengan nama klaster Anda.

    aws eks describe-addon --cluster-name my-cluster --addon-name coredns --query "addon.addonVersion" --output text

    Contoh output adalah sebagai berikut.

    v1.10.1-eksbuild.11

    Jika versi yang dikembalikan sama dengan versi untuk versi cluster Anda di tabel versi terbaru, maka Anda sudah menginstal versi terbaru di cluster Anda dan tidak perlu menyelesaikan sisa prosedur ini. Kubernetes Jika Anda menerima kesalahan, alih-alih nomor versi dalam output Anda, maka Anda tidak memiliki jenis add-on Amazon EKS yang diinstal pada cluster Anda. Anda perlu membuat add-on sebelum Anda dapat memperbaruinya dengan prosedur ini.

  2. Simpan konfigurasi add-on yang Anda instal saat ini.

    kubectl get deployment coredns -n kube-system -o yaml > aws-k8s-coredns-old.yaml
  3. Perbarui add-on Anda menggunakan. AWS CLI Jika Anda ingin menggunakan AWS Management Console atau eksctl memperbarui add-on, lihatMemperbarui add-on. Salin perintah yang mengikuti ke perangkat Anda. Buat modifikasi berikut pada perintah, sesuai kebutuhan, dan kemudian jalankan perintah yang dimodifikasi.

    • Ganti my-cluster dengan nama klaster Anda.

    • Ganti v1.11.1-eksbuild.9 dengan versi terbaru yang tercantum dalam tabel versi terbaru untuk versi cluster Anda.

    • Opsi --resolve-conflicts PRESERVE mempertahankan nilai konfigurasi yang ada untuk add-on. Jika Anda telah menetapkan nilai kustom untuk pengaturan add-on, dan Anda tidak menggunakan opsi ini, Amazon EKS menimpa nilai Anda dengan nilai defaultnya. Jika Anda menggunakan opsi ini, kami sarankan untuk menguji setiap bidang dan perubahan nilai pada klaster non-produksi sebelum memperbarui add-on pada cluster produksi Anda. Jika Anda mengubah nilai ini menjadiOVERWRITE, semua pengaturan diubah ke nilai default Amazon EKS. Jika Anda telah menetapkan nilai kustom untuk setelan apa pun, nilai tersebut mungkin akan ditimpa dengan nilai default Amazon EKS. Jika Anda mengubah nilai ininone, Amazon EKS tidak mengubah nilai pengaturan apa pun, tetapi pembaruan mungkin gagal. Jika pembaruan gagal, Anda menerima pesan galat untuk membantu menyelesaikan konflik.

    • Jika Anda tidak memperbarui pengaturan konfigurasi, hapus --configuration-values '{"replicaCount":3}'dari perintah. Jika Anda memperbarui pengaturan konfigurasi, ganti “ReplicaCount” :3 dengan pengaturan yang ingin Anda atur. Dalam contoh ini, jumlah replika CoreDNS diatur ke3. Nilai yang Anda tentukan harus valid untuk skema konfigurasi. Jika Anda tidak tahu skema konfigurasi, jalankanaws eks describe-addon-configuration --addon-name coredns --addon-version v1.11.1-eksbuild.9, ganti v1.11.1-eksbuild.9 dengan nomor versi add-on yang ingin Anda lihat konfigurasinya. Skema dikembalikan dalam output. Jika Anda memiliki konfigurasi kustom yang ada, ingin menghapus semuanya, dan mengatur nilai untuk semua pengaturan kembali ke default Amazon EKS, hapus “ReplicaCount” :3 dari perintah, sehingga Anda kosong. {} Untuk informasi selengkapnya tentang CoreDNS setelan, lihat Menyesuaikan Layanan DNS di dokumentasi. Kubernetes

      aws eks update-addon --cluster-name my-cluster --addon-name coredns --addon-version v1.11.1-eksbuild.9 \ --resolve-conflicts PRESERVE --configuration-values '{"replicaCount":3}'

      Mungkin perlu beberapa detik untuk pembaruan selesai.

  4. Konfirmasikan bahwa versi add-on telah diperbarui. Ganti my-cluster dengan nama klaster Anda.

    aws eks describe-addon --cluster-name my-cluster --addon-name coredns

    Mungkin perlu beberapa detik untuk pembaruan selesai.

    Contoh output adalah sebagai berikut.

    { "addon": { "addonName": "coredns", "clusterName": "my-cluster", "status": "ACTIVE", "addonVersion": "v1.11.1-eksbuild.9", "health": { "issues": [] }, "addonArn": "arn:aws:eks:region:111122223333:addon/my-cluster/coredns/d2c34f06-1111-2222-1eb0-24f64ce37fa4", "createdAt": "2023-03-01T16:41:32.442000+00:00", "modifiedAt": "2023-03-01T18:16:54.332000+00:00", "tags": {}, "configurationValues": "{\"replicaCount\":3}" } }

Memperbarui add-on yang dikelola sendiri

penting

Sebaiknya tambahkan jenis add-on Amazon EKS ke klaster Anda alih-alih menggunakan jenis add-on yang dikelola sendiri. Jika Anda tidak terbiasa dengan perbedaan antara jenis, lihatAdd-on Amazon EKS. Untuk informasi selengkapnya tentang menambahkan add-on Amazon EKS ke klaster Anda, lihatMembuat add-on. Jika Anda tidak dapat menggunakan add-on Amazon EKS, kami mendorong Anda untuk mengirimkan masalah tentang mengapa Anda tidak dapat ke repositori peta jalan GitHub Containers.

  1. Konfirmasikan bahwa Anda memiliki jenis add-on yang dikelola sendiri yang diinstal pada klaster Anda. Ganti my-cluster dengan nama klaster Anda.

    aws eks describe-addon --cluster-name my-cluster --addon-name coredns --query addon.addonVersion --output text

    Jika pesan kesalahan dikembalikan, Anda memiliki jenis add-on yang dikelola sendiri yang diinstal pada klaster Anda. Selesaikan langkah-langkah yang tersisa dalam prosedur ini. Jika nomor versi dikembalikan, Anda memiliki jenis add-on Amazon EKS yang diinstal pada cluster Anda. Untuk memperbarui jenis add-on Amazon EKS, gunakan prosedur diMemperbarui add-on Amazon EKS, daripada menggunakan prosedur ini. Jika Anda tidak terbiasa dengan perbedaan antara jenis add-on, lihatAdd-on Amazon EKS.

  2. Lihat versi gambar kontainer mana yang saat ini diinstal di cluster Anda.

    kubectl describe deployment coredns -n kube-system | grep Image | cut -d ":" -f 3

    Contoh output adalah sebagai berikut.

    v1.8.7-eksbuild.2
  3. Jika CoreDNS versi Anda saat ini v1.5.0 atau lebih baru, tetapi lebih awal dari versi yang tercantum dalam tabel CoreDNSversi, lewati langkah ini. Jika versi Anda saat ini lebih awal dari1.5.0, maka Anda perlu memodifikasi ConfigMap for CoreDNS untuk menggunakan add-on penerusan, bukan add-on proxy.

    1. Buka configmap dengan perintah berikut.

      kubectl edit configmap coredns -n kube-system
    2. Ganti proxy di baris berikut dengan forward. Simpan file dan keluar dari editor.

      proxy . /etc/resolv.conf
  4. Jika Anda awalnya menerapkan cluster Anda pada Kubernetes 1.17 atau sebelumnya, Anda mungkin perlu menghapus baris yang dihentikan dari manifes AndaCoreDNS.

    penting

    Anda harus menyelesaikan langkah ini sebelum memperbarui ke CoreDNS versi1.7.0, tetapi disarankan agar Anda menyelesaikan langkah ini bahkan jika Anda memperbarui ke versi sebelumnya.

    1. Periksa untuk melihat apakah CoreDNS manifes Anda memiliki garis.

      kubectl get configmap coredns -n kube-system -o jsonpath='{$.data.Corefile}' | grep upstream

      Jika tidak ada output yang dikembalikan, manifes Anda tidak memiliki baris dan Anda dapat melompat ke langkah berikutnya untuk memperbaruiCoreDNS. Jika output dikembalikan, maka Anda harus menghapus baris.

    2. Edit ConfigMap dengan perintah berikut, hapus baris dalam file yang memiliki kata upstream di dalamnya. Jangan ubah apa pun di dalam file. Setelah baris dihapus, simpan perubahannya.

      kubectl edit configmap coredns -n kube-system -o yaml
  5. Ambil versi CoreDNS gambar Anda saat ini:

    kubectl describe deployment coredns -n kube-system | grep Image

    Contoh output adalah sebagai berikut.

    602401143452.dkr.ecr.region-code.amazonaws.com/eks/coredns:v1.8.7-eksbuild.2
  6. Jika Anda memperbarui ke CoreDNS 1.8.3 atau lebih baru, maka Anda perlu menambahkan endpointslices izin ke file system:coredns Kubernetesclusterrole.

    kubectl edit clusterrole system:coredns -n kube-system

    Tambahkan baris berikut di bawah baris izin yang ada di rules bagian file.

    [...] - apiGroups: - discovery.k8s.io resources: - endpointslices verbs: - list - watch [...]
  7. Perbarui CoreDNS add-on dengan mengganti 602401143452 dan region-code dengan nilai dari output yang dikembalikan pada langkah sebelumnya. Ganti v1.11.1-eksbuild.9dengan CoreDNS versi yang tercantum dalam tabel versi terbaru untuk Kubernetes versi Anda.

    kubectl set image deployment.apps/coredns -n kube-system coredns=602401143452.dkr.ecr.region-code.amazonaws.com/eks/coredns:v1.11.1-eksbuild.9

    Contoh output adalah sebagai berikut.

    deployment.apps/coredns image updated
  8. Periksa lagi versi gambar kontainer untuk mengonfirmasi bahwa itu diperbarui ke versi yang Anda tentukan pada langkah sebelumnya.

    kubectl describe deployment coredns -n kube-system | grep Image | cut -d ":" -f 3

    Contoh output adalah sebagai berikut.

    v1.11.1-eksbuild.9