Если ваш контейнер docker находится за пределами кластера kubernetes, то вам не удастся получить доступ к службе ClusterIP
.
Как можно догадаться по ее названию, службы типа ClusterIP
доступны только из кластера .
Под внутри кластера Я имею в виду любой ресурс, управляемый Kubernetes.
Автономный docker контейнер, работающий внутри виртуальной машины, которая является частью вашего кластера K8S не является ресурсом, управляемым K8S.
Итак, для достижения желаемого у вас будут следующие возможности:
- Установить
hostPort
внутри вашего стручка. Это не рекомендуется и указывается как плохая практика в do c. Сохраняйте это использование для очень конкретного c случая. - Переключите службу на
NodePort
вместо ClusterIP
. Таким образом, вы сможете получить к нему доступ, используя IP-адрес узла + порт узла. - Используйте тип обслуживания
LoadBalancer
, но это решение требует некоторой настройки и не является простым. - Используйте
Ingress
вместе с IngressController
, но так же, как и с балансировщиком нагрузки, это решение нуждается в некоторой конфигурации и не так просто.
В зависимости от того, что вы делаете, и если это критично или нет, вам придется выбрать одно из этих решений.
- 1 & 2 для debug / dev
- 3 & 4 для prod, но вам придется работать с администратором k8s