Вопрос или проблема
У меня работает minio в пространстве имен minio:
➜ kgsvcn minio
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
minio ClusterIP 172.20.182.115 <none> 9000/TCP 25m
minio-console ClusterIP 172.20.103.127 <none> 9001/TCP 25m
Мне нужно перенаправить все запросы *.minio.minio.svc.cluster.local на поды за svc minio.minio
Однако я получаю следующие ошибки:
bash-5.1# nslookup tekton-logs.minio.minio
Server: 172.20.0.10
Address: 172.20.0.10#53
*** Не удается найти tekton-logs.minio.minio.svc.cluster.local: Нет ответа
конфигурационная карта cordns
apiVersion: v1
data:
Corefile: |-
.:53 {
errors
health {
lameduck 5s
}
ready
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
fallthrough in-addr.arpa ip6.arpa
ttl 30
}
prometheus 0.0.0.0:9153
forward . /etc/resolv.conf
cache 30
loop
reload
loadbalance
}
minio.svc.cluster.local:53 {
log
whoami
errors
kubernetes minio.svc.cluster.local {
pods insecure
fallthrough
ttl 30
}
cache 30
reload
}
kind: ConfigMap
metadata:
labels:
app.kubernetes.io/instance: coredns
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: coredns
argocd.argoproj.io/instance: coredns
eks.amazonaws.com/component: coredns
helm.sh/chart: coredns-1.31.0
k8s-app: kube-dns
kubernetes.io/cluster-service: "true"
kubernetes.io/name: CoreDNS
name: coredns
namespace: kube-system
значения helm для coredns
servers:
- zones:
- zone: .
port: 53
plugins:
- name: errors
- name: health
configBlock: |-
lameduck 5s
- name: ready
- name: kubernetes
parameters: cluster.local in-addr.arpa ip6.arpa
configBlock: |-
pods insecure
fallthrough in-addr.arpa ip6.arpa
ttl 30
- name: prometheus
parameters: 0.0.0.0:9153
- name: forward
parameters: . /etc/resolv.conf
- name: cache
parameters: 30
- name: loop
- name: reload
- name: loadbalance
- zones:
- zone: minio.svc.cluster.local
port: 53
plugins:
- name: log
- name: whoami
- name: errors
- name: kubernetes
parameters: minio.svc.cluster.local
configBlock: |-
pods insecure
fallthrough
ttl 30
- name: cache
parameters: 30
- name: reload
журналы
➜ klo -l app.kubernetes.io/name=coredns -n kube-system
[INFO] 10.120.142.100:42080 - 55062 "A IN tekton-logs.minio.svc.cluster.local. udp 53 false 512" NOERROR qr,aa,rd 163 0.000243657s
[INFO] 10.120.142.100:39235 - 64661 "AAAA IN tekton-logs.minio.svc.cluster.local. udp 53 false 512" NOERROR qr,aa,rd 163 0.000297776s
[INFO] 10.120.142.100:39235 - 64401 "A IN tekton-logs.minio.svc.cluster.local. udp 53 false 512" NOERROR qr,aa,rd 163 0.000155817s
[INFO] 10.120.142.100:38826 - 37249 "A IN tekton-logs.minio.svc.cluster.local. udp 53 false 512" NOERROR qr,aa,rd 163 0.00018647s
[INFO] 10.120.142.100:38826 - 37718 "AAAA IN tekton-logs.minio.svc.cluster.local. udp 53 false 512" NOERROR qr,aa,rd 163 0.00085907s
Что я пропустил или сделал неправильно?
Ответ или решение
Проблема, с которой вы столкнулись, связана с настройкой CoreDNS и разрешением DNS для MinIO в вашем кластере Kubernetes. Вы пытаетесь разрешать DNS-запросы для *.minio.minio.svc.cluster.local
, но получаете ошибку, из-за которой разрешение домена не работает должным образом.
Причина проблемы:
- Конфигурация CoreDNS: Ваша текущая конфигурация CoreDNS может не обрабатывать DNS-запросы для
minio.svc.cluster.local
должным образом. - Зона DNS: Необходимо убедиться, что зона
minio.svc.cluster.local
правильно настроена и отвечает на запросы.
Шаги по устранению проблемы:
-
Проверьте конфигурацию CoreDNS: Убедитесь, что ваши записи в ConfigMap для CoreDNS правильно настроены:
minio.svc.cluster.local:53 { log whoami errors kubernetes minio.svc.cluster.local { pods insecure fallthrough ttl 30 } cache 30 reload }
Это означает, что CoreDNS должен обрабатывать запросы для зоны
minio.svc.cluster.local
. В случае, если MinIO Service и Pods находятся в одном неймспейсе (minio
), убедитесь, что записи ресурсов существуют. -
Проверка наличия подов: Убедитесь, что в неймспейсе
minio
существуют поды и сервисы, которые отвечают соответствующим образом. Вы можете использовать следующую команду для проверки состояния подов:kubectl get pods -n minio
Убедитесь, что поды запущены и находятся в состоянии
Running
. -
Перезапуск CoreDNS: Иногда изменения в конфигурации требуют перезапуска CoreDNS для их применения. Вы можете перезапустить CoreDNS, выполнив следующее:
kubectl rollout restart deployment coredns -n kube-system
-
Проверка логов CoreDNS: Используйте команды для проверки логов CoreDNS, чтобы убедиться, что запрашиваемое имя действительно обрабатывается:
kubectl logs -l app.kubernetes.io/name=coredns -n kube-system
Обратите внимание на наличие ошибок или предупреждений, которые могут указывать на проблему с разрешением имен.
-
Проверьте записи в Kubernetes: Вы можете вручную проверить, как Kubernetes обрабатывает службы и поды:
kubectl get svc -n minio kubectl get ep minio -n minio
Убедитесь, что сервис
minio
имеет связанные эндпоинты, при этом убедитесь, что все поды находятся в одном состоянии.
Пример запроса:
Попробуйте выполнить запрос на разрешение от имени пода:
kubectl exec -it <имя-пода> -n minio -- nslookup tekton-logs.minio.minio.svc.cluster.local
Заключение:
Если после выполнения всех вышеуказанных шагов проблема все еще сохраняется, возможно, потребуется проверить общую конфигурацию вашего кластера Kubernetes, а также сетевые настройки. Проверьте, что другие DNS-запросы функционируют корректно, чтобы исключить общие проблемы с сетевой инфраструктурой.
Удачи в решении вашей проблемы, и если возникнут дополнительные вопросы, не стесняйтесь их задавать!