Tüm Ürünler
Search
Belge Merkezi

Container Compute Service:DNS ilkeleri ve yapılandırma

Son Güncelleme:Oct 08, 2026

Alibaba Cloud Container Compute Service (ACS) kümeleri DNS çözümlemesi için CoreDNS kullanır. Bu konu, bir küme içinde DNS'in nasıl çalıştığını ve iş yükü gereksinimlerinize uygun şekilde dnsPolicy parametresini nasıl yapılandıracağınızı açıklar.

Kümenizde DNS çözümlemesini etkinleştirin

ACS kümelerinde DNS çözümlemesi varsayılan olarak etkin değildir. Etkinleştirmek için kümeyi oluştururken CoreDNS'i seçin. CoreDNS, küme içinde kube-system ad alanında kube-dns adlı bir hizmet olarak sunulur.

kube-dns hizmetini kontrol etmek için aşağıdaki komutu çalıştırın:

kubectl get svc kube-dns -n kube-system

Beklenen çıktı:

NAME       TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)                  AGE
kube-dns   ClusterIP   172.24.0.10   <none>        53/UDP,53/TCP,9153/TCP   27d

CoreDNS etkin bir ACS kümesi oluşturma hakkında daha fazla bilgi için bkz. ACS kümesi oluşturun.

ACS kümelerinde DNS çözümlemesi nasıl çalışır?

Bir Pod başlatıldığında kubelet, iki parametre kullanarak DNS ayarlarını yapılandırır:

  • --cluster-dns=<dns-service-ip>: Küme DNS sunucusunun IP adresi

  • --cluster-domain=<default-local-domain>: Temel etki alanı adı soneki

Bu parametreler, her Pod içindeki /etc/resolv.conf dosyasının içeriğini belirler:

nameserver xx.xx.0.10
search kube-system.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
Parametre Açıklama
nameserver DNS sunucusunun IP adresi.
search DNS araması sırasında kısa adlara eklenen etki alanı sonekleri. ACS kümeleri üç sonek içerir (kube-system.svc.cluster.local, svc.cluster.local, cluster.local); bu nedenle tek bir arama en fazla dört DNS sorgusu üretebilir.
options Anahtar-değer çiftleri olarak belirtilen ek çözücü seçenekleri. Varsayılan ndots:5 değeri şunu ifade eder: Bir etki alanı adı ndots değerinden daha fazla nokta içeriyorsa tam nitelikli etki alanı adı (FQDN) olarak kabul edilir ve doğrudan çözülür; daha az nokta içeriyorsa önce search sonekleri eklenir.

DNS ilkesi seçin

Pod'un etki alanı adlarını nasıl çözeceğini denetlemek için Pod tanımında dnsPolicy ayarlayın. ACS kümeleri aşağıdaki ilkeleri destekler:

İlke Kullanılan DNS sunucusu Ne zaman kullanılır?
ClusterFirst CoreDNS (kube-dns) Kümedeki diğer hizmetlere erişmesi gereken Pod'lar için. Bu varsayılan davranıştır.
None dnsConfig ile tanımlanan Tamamen özel DNS ayarları gerektiren Pod'lar için.
Default Düğümün /etc/resolv.conf dosyası (Alibaba Cloud DNS) Küme içi hizmetlere erişmeyen Pod'lar için.
Default varsayılan DNS ilkesi değildir. dnsPolicy belirtilmezse ClusterFirst kullanılır.

Küme içi etki alanı adlarını çözmek için CoreDNS kullanın

Kümedeki diğer hizmetlerle iletişim kuran Pod'lar için dnsPolicy: ClusterFirst ayarlayın. Bu, ACS iş yükleri için varsayılan davranıştır.

apiVersion: v1
kind: Pod
metadata:
  name: alpine
  namespace: default
spec:
  containers:
  - image: alpine
    command:
      - sleep
      - "10000"
    imagePullPolicy: Always
    name: alpine
  dnsPolicy: ClusterFirst

Bir Pod için DNS ayarlarını özelleştirin

Bir Pod için DNS ayarlarını tamamen kontrol etmek üzere dnsPolicy: None ayarlayın ve bir dnsConfig bloğu sağlayın. dnsPolicy değeri None olduğunda dnsConfig içinde en az bir ad sunucusu belirtilmelidir.

dnsConfig isteğe bağlıdır ve yalnızca None ile değil, herhangi bir dnsPolicy ile birlikte kullanılabilir. Mevcut ayarların üzerine ek ad sunucuları veya arama etki alanları eklemek için diğer ilkelerle birlikte kullanın.

apiVersion: v1
kind: Pod
metadata:
  name: alpine
  namespace: default
spec:
  containers:
  - image: alpine
    command:
      - sleep
      - "10000"
    imagePullPolicy: Always
    name: alpine
  dnsPolicy: None
  dnsConfig:
    nameservers: ["169.254.xx.xx"]
    searches:
    - default.svc.cluster.local
    - svc.cluster.local
    - cluster.local
    options:
    - name: ndots
      value: "2"

Pod başlatıldığında yukarıdaki yapılandırma aşağıdaki /etc/resolv.conf dosyasını oluşturur:

nameserver 169.254.xx.xx
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:2

Aşağıdaki tabloda dnsConfig alanları açıklanmaktadır:

Alan Açıklama
nameservers Pod için DNS sunucusu IP adreslerinin listesi. En fazla üç IP adresine izin verilir. dnsPolicy değeri None olduğunda en az bir adres belirtilmelidir. Yinelenen adresler kaldırılır.
searches Ana bilgisayar adı aramaları için DNS arama etki alanlarının listesi. En fazla altı etki alanına izin verilir. Bu liste, DNS ilkesinden türetilen temel listeye eklenir. Yinelenen etki alanları kaldırılır.
options Her biri zorunlu bir name ve isteğe bağlı bir value içeren çözücü seçeneklerinin listesi. Bu seçenekler, DNS ilkesi tarafından oluşturulan seçeneklerle birleştirilir. Yinelenen öğeler kaldırılır.

CoreDNS olmadan düğüm düzeyinde DNS kullanın

Pod'larınız ACS kümesindeki hiçbir hizmete erişmiyorsa dnsPolicy: Default ayarlayın. DNS çözümlemesi, düğümün /etc/resolv.conf dosyasını kullanan Alibaba Cloud DNS tarafından gerçekleştirilir ve CoreDNS devreye girmez.

apiVersion: v1
kind: Pod
metadata:
  name: alpine
  namespace: default
spec:
  containers:
  - image: alpine
    command:
      - sleep
      - "10000"
    imagePullPolicy: Always
    name: alpine
  dnsPolicy: Default

Statik ana bilgisayar adlarını IP adresleriyle eşleyin

Belirli bir Pod için statik ana bilgisayar adı-IP eşlemeleri eklemek amacıyla Pod tanımına hostAliases alanını ekleyin. Kubelet, Pod'un /etc/hosts dosyasını yönetir ve bu girdileri başlangıçta yazar.

Uyarı

Çalışan bir konteyner içindeki /etc/hosts dosyasını manuel olarak düzenlemeyin. Kubelet, bir konteyner yeniden başlatıldığında dosyanın üzerine yazar; bu nedenle manuel değişiklikler kaybolur.

Statik eşlemeleri tek bir Pod yerine kümedeki tüm Pod'lara uygulamak için CoreDNS hosts eklentisini etkinleştirin. Bkz. CoreDNS uzantılarını yapılandırın.

Aşağıdaki örnekte foo.local, bar.local ve foo.remote statik IP adreslerine eşlenir:

apiVersion: v1
kind: Pod
metadata:
  name: hostaliases-pod
spec:
  hostAliases:
  - ip: "127.0.**.**"
    hostnames:
    - "foo.local"
    - "bar.local"
  - ip: "10.1.**.**"
    hostnames:
    - "foo.remote"
  containers:
  - name: cat-hosts
    image: busybox:1.28
    command:
    - cat
    args:
    - "/etc/hosts"

Pod başlatıldıktan sonra /etc/hosts dosyası şu içeriği barındırır:

# Kubernetes-managed hosts file.
127.0.**.**	localhost
10.200.**.**	hostaliases-pod

# Entries added by HostAliases.
127.0.**.**	foo.local	bar.local
10.1.**.**	foo.remote	bar.remote

Sonraki adımlar