Ivan
Ivan
Ivan
пока не могу найти, что именно
Oleksandr
Maksim
Maksim
Если ковырнуть механизмы работы DNS и кублета то всё ещё проще становится
Oleksandr
резолв конф внутри глянуть
Maksim
--cluster-dns stringSlice Comma-separated list of DNS server IP address. This value is used for containers DNS server in case of Pods with "dnsPolicy=ClusterFirst". Note: all DNS servers appearing in the list MUST serve the same set of records otherwise name resolution within the cluster may not work correctly. There is no guarantee as to which DNS server may be contacted for name resolution.
—cluster-domain string Domain for this cluster. If set, kubelet will configure all containers to search this domain in addition to the host's search domains
Maksim
Всё проще
Maksim
Ключи от kubelet
Maksim
первый отвечает за прописывание nameserver в resolv.conf второй за search в resolv.conf (второе формирует short names)
Ivan
Maksim
видимо да
Сразу так бы и написал) что работает только fqdn, а вот short names не канает
Maksim
Вон выше пилюля
Ivan
Maksim
проверяй ключи kubelet —cluster-dns и —cluster-domain
Ivan
Ivan
посмотрел. отличия в днс-имени
Вот, второй лукап у тебя по полному имени, а теперь попробуй короткий по service-name.namespace. В твоем примере nginx-svc.nginx
Ivan
если не работает, как выше писали смотри настройки
Ivan
и резолв внутри пода
Ivan
Ivan
и резолв внутри пода
root@rasc-3732246749-h813n:/# cat /etc/resolv.conf
nameserver 10.3.0.254
options ndots:5
Ivan
айпишник сответствует сервисному айпи куб-днс
Ivan
Ivan
—cluster-domain = cluster.local
Ivan
не то=)
Maksim
да нет то
Maksim
этого должно быть достаточно, что бы кубелет делал нужные записи в resolv.conf
Maksim
сделай kubectl exec rasc-3732246749-h813n — cat /etc/resolv.conf
Volodymyr
делаю нагрузоное, микросервисы, синхронный REST
http: TLS handshake error from 172.20.3.3:31861: EOF
Error syncing deployment stage/my-microservice: Operation cannot be fulfilled on deployments.extensions "my-microservice": the object has been modified; please apply your changes to the latest version and try again
Сталкивались? Перегрузка по сети?
Anton
нагрузочное в сторону kube-api?
Maksim
не вижу search....попробуй перезапустит кублет, и пересоздать под
Ivan
да, кстати, возможно я правил его руками... сейчас рестартану
Ivan
нет, тоже самое.
search не добавляется
Maksim
что ты сделал?
Ivan
о! а в соседнем поде есть:
kubectl -n rasc exec -it rasc-mc-3979153417-5sj00 bash
memcache@rasc-mc-3979153417-5sj00:/$ cat /etc/resolv.conf
nameserver 10.3.0.254
search rasc.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
Maksim
resolv изменяется в момент создания пода кублетом
Maksim
если под не пересоздавался то там ничего не появится
Maksim
значит смотри кублет, который создал данный под
Maksim
мб его нужно рестартануть (он не подтягивает настройки сам)
Ivan
нет, всё норм. в соседнем поде есть сёрч. а в тот я назначал резолв кастомный при деплое... можно не обращать на него внимание
Ivan
Maksim
?
Logan
как на эту тему шутила Ольга Павлова, когда у нее ЛитРес книжку украл - действительно, а зачем добру пропадать?
Maksim
Ivan
?
kubectl -n rasc exec -it rasc-mc-3979153417-5sj00 bash
memcache@rasc-mc-3979153417-5sj00:/$ cat /etc/resolv.conf
nameserver 10.3.0.254
search rasc.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
Maksim
А что nslookup дает?
Maksim
ну судя по записи my-svc утебя должно работать
Ivan
у меня в этом контейнере нет нслукапа(((
и поставить нельзя - он стартует от непривелигированного юзера
bebebe
kubectl cp
Ivan
memcache@rasc-mc-3979153417-5sj00:/$ ping rasc
ping: rasc: Temporary failure in name resolution
Ivan
memcache@rasc-mc-3979153417-5sj00:/$ ping rasc.rasc.pod.cluster.local
ping: rasc.rasc.pod.cluster.local: No address associated with hostname
Ivan
а вот так резолвит:
memcache@rasc-mc-3979153417-5sj00:/$ ping rasc-svc.rasc.svc.cluster.local
PING rasc-svc.rasc.svc.cluster.local (10.3.186.23) 56(84) bytes of data.
From 10.1.29.1 (10.1.29.1) icmp_seq=1 Packet filtered
From 10.1.29.1 (10.1.29.1) icmp_seq=2 Packet filtered
но почему то шлёт на шлюз
Maksim
rasc-svc.rasc
Maksim
rasc.rasc
Maksim
Стоп ты ищишь под?
Maksim
так у пода другое имя
Maksim
у тебя должно работать ping rasc-svc
Maksim
потому как у под вот такое имя
Maksim
pod-ip-address.my-namespace.pod.cluster.local
Maksim
ну или через аннотации
Ivan
у тебя должно работать ping rasc-svc
memcache@rasc-mc-3979153417-5sj00:/$ ping rasc.rasc
ping: rasc.rasc: Name or service not known
PING rasc-svc.rasc.svc.cluster.local (10.3.186.23) 56(84) bytes of data.
From 10.1.29.1 (10.1.29.1) icmp_seq=1 Packet filtered
From 10.1.29.1 (10.1.29.1) icmp_seq=2 Packet filtered
и оно работает
Ivan
Maksim
напиши ping rasc-svc.rasc
Maksim
и всё заработает
Ivan
memcache@rasc-mc-3979153417-5sj00:/$ ping rasc-svc.rasc
PING rasc-svc.rasc.svc.cluster.local (10.3.186.23) 56(84) bytes of data.
From 10.1.29.1 (10.1.29.1) icmp_seq=1 Packet filtered
From 10.1.29.1 (10.1.29.1) icmp_seq=2 Packet filtered
Maksim
Никогда не заморачивался, связь между подами всегда делал через сервис, потому что он статичный, а поды динамичные + сервис обеспечивает отказоустойчивость, если под больше одного
Maksim
https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pods
Maksim
Ну вот короткие имена работают)
Ivan
да, это читал
Maksim
у тебя под то не rasc, а rasc-mc-3979153417-5sj00
Maksim
Нет, имя пода не статичное