Невозможно изменить тип: ClusterIP для ввода: LoadBalancer для kube-dns в kubernetes

Когда я бегу kubectl get svc -n kube-system это говорит мне:

NAME       TYPE        CLUSTER-IP   EXTERNAL-IP    PORT(S)        AGE
kube-dns   ClusterIP   xx.xx.xx.xx   <none>       53/UDP,53/TCP   13h

Но когда я пытаюсь kubectl edit svc/kube-dns -n kube-system:

ошибка: сервис "куб-днс" недействителен

Копия ваших изменений была сохранена в "/tmp/kubectl-edit-4p5gn.yaml"

ошибка: редактирование отменено, действительные изменения не сохранены.

Я не могу изменить его на LoadBalancer... какие-нибудь идеи?

Я также пытался создать новый Kube-DNS, но я не могу получить внешний IP-адрес; он застрял в состоянии ожидания.

kind: Service
metadata:
  name: kubedns-bkp
  namespace: kube-system
  labels:
    k8s-app: kube-dns
spec:
  type: LoadBalancer
  ports:
  - port: 53
    protocol: UDP
  selector:
    k8s-app: kube-dns

kubectl get svc -n kube-system доклады:

NAME            TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
kubedns-bkp     LoadBalancer   xx.xx.xx.xx     <pending>     53:32115/UDP    5h

Примечание: я создал кластер k8s с интеграцией ELB, для других сервисов я успешно получаю внешние IP-адреса.

1 ответ

Решение

Итак, две вещи здесь:

  1. Поскольку они сообщали вам об ошибках валидации yaml, которые вы решили не передавать нам, никто не может изменить type: существующего Service; Вы должны создать новый или удалить существующий и воссоздать его.
  2. Тем не менее, я настоятельно рекомендую не удалять kube-dnsService - вы можете создать новый Service из type: LoadBalancer и указать на то же selector: как kube-dns использует. Таким образом, любой, кто хочет использовать сервис с балансировкой нагрузки, может, но вещи в кластере, которые зависят от kube-dns быть ClusterIP с (вероятно), что существующее значение xx.xx.xx.xx может продолжаться как прежде.
Другие вопросы по тегам