Kubernetes theory
March 26, 2023

DNS Policy

Определяет где будут резолвиться DNS запросы пода.

  1. Default. Pod наследует конфигурацию разрешения имен от ноды, на которой выполняется;
  2. ClusterFirst. Запросы перенаправляются DNS сервером (CoreDNS) на другие DNS сервера, ответственные за резолв запрашиваемой в запросе зоны. Данная политика используется по-умолчанию;
  3. ClusterFirstWithHostNet. Используется для подов с указанием hostNetwork;
  4. None. Pod игнорирует настройки Kubernetes для подов. В этом случае правила необходимо указывать в спецификации.

Пример настройки пода с кастомными настройками DNS.

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
  namespace: default
  name: dns-example
spec:
  containers:
    - name: test
      image: nginx
  dnsPolicy: "None"
  dnsConfig:
    nameservers:
      - 192.0.2.1 # this is an example
    searches:
      - ns1.svc.cluster-domain.example
      - my.dns.search.suffix
    options:
      - name: ndots
        value: "2"
      - name: edns0
EOF
kubectl exec -it dns-example — cat /etc/resolv.conf
nameserver 192.0.2.1
search ns1.svc.cluster-domain.example my.dns.search.suffix
options ndots:2 edns0