全部产品
Search
文档中心

Container Compute Service:Tambahkan anotasi untuk mengonfigurasi server DNS kustom

更新时间:Jul 02, 2025

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 Default dan sesuaikan layanan DNS untuk seluruh kluster ACS menggunakan acs-profile.

  • Skenario 2: Gunakan kebijakan DNS ClusterFirst dengan 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 Default tanpa 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 None serta mengatur bidang dnsConfig dalam spesifikasi pod untuk menentukan server DNS yang dikelola sendiri. Untuk informasi lebih lanjut, lihat Skenario 2: Sesuaikan pengaturan DNS untuk pod.

Pengenalan konfigurasi

Penting

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":["20.1.xx.xx","30.1.xx.xx"],"searches":["xx.com","yy.com"],"options":["ndots:2","edns0"]}

servers

[]String

["20.1.xx.xx","30.1.xx.xx"]

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

["xx.com","yy.com"]

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

["ndots:2","edns0"]

Opsi resolusi DNS. Opsi tersebut dapat berupa beberapa pasangan kunci-nilai. Opsi yang umum digunakan adalah:

  • ndots: menentukan jumlah minimum titik (.) yang harus dimiliki nama server DNS agar dianggap sebagai nama domain absolut. Jika tidak, DNS mencoba menyelesaikan nama domain di domain pencarian.

  • edns0: mengaktifkan ekstensi EDNS0 untuk mendukung paket UDP yang lebih besar dan meningkatkan keamanan.

  • timeout: menentukan periode waktu habis untuk kueri DNS.

  • attempts: menentukan jumlah percobaan kueri DNS.

Penting

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:

  1. 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: Default
  2. Sebarkan aplikasi:

    kubectl apply -f deploy.yaml
  3. Periksa hasilnya:

    kubectl  exec  <pod name>  cat /etc/resolv.conf

    Hasil 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\"]}"
          }
        }
      }
    ]