Skip to content

Отладка сетевых соединений и диагностика DNS в Kubernetes

Способы отладки соединенией Conntrack:

1. Просмотр активных соединений для конкретного IP-адреса:

conntrack -L -d 10.32.0.1

2. Просмотр журналов ядра, связанных с Conntrack:

journalctl -k | grep "nf_conntrack"

3. Изменение максимального числа отслеживаемых соединений:

sysctl -w net.netfilter.nf_conntrack_max=<NEW-NUMBER-MORE-PREVIOUS>

4. Запуск пода для отладки сети:

kubectl run -it      --image=amouat/network-utils testnet bash
kubectl run -it --rm --image amouat/network-utils testnet -- bash

Способы отладки разрешения DNS в кластере:

1. Запуск пода для проверки DNS разрешения:

kubectl run -it --rm --image busybox -- nslookup kubernetes.default

2. Развернуть контейнер отладки https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/

  • Использовать dig nsenter on host : получаем PID sudo apt install dnsutils -y
  • Получите список контейнеров в пространстве имен k8s.io: sudo ctr --namespace k8s.io containers ls
  • Получите задачи для контейнера: sudo ctr --namespace k8s.io tasks ps <container-id>
  • Получите информацию о контейнере и найдите PID: sudo ctr --namespace k8s.io containers info <container-id> | grep pid
  • Получите IP-адрес службы kube-dns: kubectl get service -n kube-system kube-dns
  • Используйте nsenter для запуска dig в пространстве имен контейнера: ```sudo nsenter -t -n dig kubernetes.default.svc.cluster.local @
    ## Пример развертывания пода с утилитами для отладки DNS
    Создайте под dnsutils с помощью следующей манифестации:
    
    kubectl apply -f - <<EOF apiVersion: v1 kind: Pod metadata: name: dnsutils namespace: default spec: containers:
  • name: dnsutils image: registry.k8s.io/e2e-test-images/jessie-dnsutils:1.3 command:
    • sleep
    • "infinity" imagePullPolicy: IfNotPresent restartPolicy: Always EOF ``` Этот под будет содержать утилиты для отладки DNS и будет постоянно запущен, что позволит вам выполнять любые необходимые команды для диагностики DNS.