Могу ли я гарантировать, что служба "kubernetes" сохранит согласованный IP-адрес ClusterIP после создания кластера, даже если я попытаюсь изменить или воссоздать его? - PullRequest
0 голосов
/ 09 июля 2020

Некоторые из наших модулей получают доступ к Kubernetes API через службу «kubernetes». Мы находимся в процессе применения сетевых политик, которые разрешают доступ к K8S API, но единственный способ, который мы нашли для достижения sh, - это запросить ClusterIP службы «kubernetes» и включить его как ipBlock в правило выхода в сетевой политике.

В частности, это значение:

kubectl get services kubernetes --namespace default -o jsonpath='{.spec.clusterIP}'

Возможно ли для Service ClusterIP "kubernetes" изменить значение, отличное от того, с помощью которого он был инициализирован при создании кластера? Если это так, есть вероятность, что наша конфигурация сломается. Мы надеемся, что это невозможно, но мы ищем официальную подтверждающую документацию.

1 Ответ

2 голосов
/ 10 июля 2020

Короткий ответ: нет.

Подробнее:

  • Вы не можете изменить / отредактировать clusterIP, потому что он неизменяемый ... поэтому kubectl edit не будет работать для это поле.

  • IP-адрес сервисного кластера можно легко изменить на kubectl delete -f svc.yaml, затем снова kubectl apply -f svc.yaml.

  • Следовательно, никогда полагается на IP-адрес службы, поскольку службы предназначены для обращения через DNS:

    • Используйте service-name, если коммуникатор находится в том же пространстве имен
    • Используйте service-name.service-namespace, если коммуникатор находится внутри или за пределами того же пространства имен.
    • Используйте service-name.service-namespace.svc.cluster.local для FQDN.
...