Когда я создаю развертывание в Kubernetes (в частности, Amazon EKS), оно раскручивает N модулей:
worker-node-dddf68987-67fsq 192.168.149.142
worker-node-dddf68987-f77ks 192.168.155.15
worker-node-dddf68987-zndn4 192.168.232.226
И эти модули могут быть разрешены в DNS как (например) 192-168-232-226.my-namespace.pod.cluster.local
.
Но они не разрешаются как (например) worker-node-dddf68987-zndn4.my-namespace.pod.cluster.local
. Почему бы и нет?
В каждом ответе, который я видел, говорится что-то вроде "ну, на самом деле, вы действительно хотите посмотреть сервис ". Я не .
Моя мотивация такова: при соединении узлов Erlang в кластер имя узла должно совпадать с точно на обоих концах, и я бы предпочитаю, чтобы имя моего узла было worker-node@worker-node-dddf68987-zndn4
, а не worker-node@192.168.232.226
.
. Я могу установить имя узла «сервер», используя hostname -f
, но если это имя не может быть обнаружено в DNS, «клиент» узел не может подключиться к нему.
Я знаю, что с помощью StatefulSet я могу навсегда связать имя с модулем. Это не то, что я хочу. Мои узлы не имеют никакого состояния. Я не возражаю, что имя меняется - я использую libcluster, который будет автоматически иметь дело с членством в кластере Erlang. Я просто хочу, чтобы имена были читабельными.
В сторону: поиск по пунктирному IP - это, по сути, взлом:
# ping 1-1-1-1.default.pod.cluster.local
PING 1-1-1-1.default.pod.cluster.local (1.1.1.1) 56(84) bytes of data.
64 bytes from one.one.one.one (1.1.1.1): icmp_seq=1 ttl=52 time=1.97 ms