Untuk menggunakan layanan DNS yang dikelola sendiri dalam menyelesaikan nama domain repositori gambar dan aplikasi lainnya, Anda dapat menentukan server DNS kustom dalam konfigurasi DNS pod ACS. Topik ini menjelaskan cara mengonfigurasi server DNS kustom untuk pod di kluster ACS.
Skenario
Berikut adalah skenario di mana Anda dapat menambahkan anotasi untuk mengonfigurasi server DNS kustom:
Skenario 1: Gunakan kebijakan DNS
Defaultdan sesuaikan layanan DNS untuk seluruh kluster ACS menggunakan acs-profile.Skenario 2: Gunakan kebijakan DNS
ClusterFirstdengan server DNS yang dikelola sendiri untuk menyelesaikan nama domain repositori gambar.Skenario 3: Gunakan kebijakan DNS
Default, sesuaikan layanan DNS untuk seluruh kluster ACS menggunakan acs-profile, serta gunakan server DNS yang dikelola sendiri untuk menyelesaikan nama domain repositori gambar.
Metode ini tidak berlaku untuk skenario berikut:
Gunakan server DNS dari Alibaba Cloud DNS untuk menyelesaikan nama domain aplikasi dan repositori gambar. Dalam hal ini, disarankan untuk menggunakan kebijakan DNS
Defaulttanpa server DNS kustom.Gunakan layanan DNS yang dikelola sendiri untuk menyelesaikan nama domain aplikasi dan server DNS dari Alibaba Cloud DNS untuk menyelesaikan nama domain repositori gambar. Dalam hal ini, disarankan untuk menggunakan kebijakan DNS
Noneserta mengatur bidangdnsConfigdalam spesifikasi pod untuk menentukan server DNS yang dikelola sendiri. Untuk informasi lebih lanjut, lihat Skenario 2: Sesuaikan pengaturan DNS untuk pod.
Pengenalan konfigurasi
Contoh berikut menunjukkan cara menentukan server DNS kustom dengan menambahkan anotasi. Secara umum, acs-profile digunakan alih-alih anotasi pod untuk menyesuaikan layanan DNS untuk seluruh kluster.
Anda dapat menambahkan anotasi network.alibabacloud.com/custom-dnsconfig ke metadata dalam file konfigurasi pod untuk menggunakan server DNS kustom. Nilai dari anotasi ini berada dalam format {"servers":["20.1.xx.xx","30.1.xx.xx"],"searches":["xx.com","yy.com"],"options":["ndots:2","edns0"]}, yang merupakan struktur spec.dnsConfig standar Kubernetes.
Berikut adalah konfigurasinya:
{
"servers": [
"20.1.xx.xx",
"30.1.xx.xx"
],
"searches": [
"xx.com",
"yy.com"
],
"options": [
"ndots:2",
"edns0"
]
}Tabel berikut menjelaskan bidang-bidang tersebut:
kunci | nilai | Bidang | Tipe | Contoh | Deskripsi |
network.alibabacloud.com/custom-dnsconfig |
| servers | []String |
| Alamat IP server DNS. Anda dapat menentukan paling banyak dua alamat IP. Alamat IP yang melebihi batas atas akan diabaikan secara otomatis. Selain itu, sistem secara otomatis menambahkan alamat IP server DNS Alibaba Cloud ke nilai bidang ini untuk memastikan bahwa sistem dapat bekerja seperti yang diharapkan. |
searches | []String |
| Domain pencarian. Anda dapat menentukan paling banyak 32 domain pencarian. Jika Anda memasukkan nama domain yang tidak lengkap, sistem mencoba menggunakan akhiran nama domain dalam nilai bidang searches untuk melengkapi nama domain dan kemudian menyelesaikan nama domain tersebut. | ||
options | []String |
| Opsi resolusi DNS. Opsi tersebut dapat berupa beberapa pasangan kunci-nilai. Opsi yang umum digunakan adalah:
|
Anda dapat mengonfigurasi bidang dnsPolicy untuk pod sesuai dengan kebutuhan bisnis Anda. Misalnya, untuk memenuhi persyaratan dalam Skenario 2, atur dnsPolicy menjadi ClusterFirst.
Jika pod menjadi pending dan kesalahan internal terjadi setelah Anda memodifikasi konfigurasi, periksa kembali konfigurasi tersebut.
Prosedur
Contoh berikut menggunakan aplikasi tanpa status:
Buat file bernama deploy.yaml dan tambahkan konten berikut ke file tersebut:
apiVersion: apps/v1 kind: Deployment metadata: labels: app: test name: test-default spec: replicas: 1 selector: matchLabels: app: test template: metadata: annotations: network.alibabacloud.com/custom-dnsconfig: '{"servers":["20.1.XXX.XXX","30.1.X.X"],"searches":["xx.com","yy.com"],"options":["ndots:2","edns0"]}' labels: app: test spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/acs/busybox:v1.29.2 command: ["sh","-c","i=1; while true; do echo $i; i=$((i=i+1)); sleep 1; done;"] name: busybox resources: requests: cpu: "2" memory: "8Gi" limits: cpu: "2" memory: "8Gi" dnsPolicy: DefaultSebarkan aplikasi:
kubectl apply -f deploy.yamlPeriksa hasilnya:
kubectl exec <pod name> cat /etc/resolv.confHasil yang diharapkan:
search xx.com yy.com nameserver 20.1.XXX.XXX nameserver 30.1.XXX.XXX nameserver 100.100.2.136 options ndots:6 edns
Konfigurasi kluster
Anda dapat mengonfigurasi injeksi otomatis pod dalam acs-profile untuk menyesuaikan resolusi DNS untuk seluruh kluster. Blok kode berikut menunjukkan isi dari acs-profile yang secara otomatis menyuntikkan konfigurasi DNS kustom ke semua pod di namespace default. Setelah menerapkan acs-profile, Anda tidak perlu lagi menambahkan anotasi pod. Cukup atur dnsPolicy menjadi Default. Untuk informasi lebih lanjut tentang acs-profile, lihat Konfigurasikan acs-profile untuk menyuntikkan konfigurasi pod secara otomatis.
apiVersion: v1
kind: ConfigMap
metadata:
name: acs-profile
namespace: kube-system
data:
selectors: |
[
{
"name": "selector-demo1",
"namespaceSelector": {
"matchLabels": {
"kubernetes.io/metadata.name": "default"
}
},
"effect": {
"annotations": {
"network.alibabacloud.com/custom-dnsconfig": "{\"servers\":[\"20.1.XXX.XXX\",\"30.1.X.X\"],\"searches\":[\"xx.com\",\"yy.com\"],\"options\":[\"ndots:2\",\"edns0\"]}"
}
}
}
]