Невозможно изменить тип: 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 ответ
Решение
Итак, две вещи здесь:
- Поскольку они сообщали вам об ошибках валидации yaml, которые вы решили не передавать нам, никто не может изменить
type:
существующегоService
; Вы должны создать новый или удалить существующий и воссоздать его. - Тем не менее, я настоятельно рекомендую не удалять
kube-dns
Service
- вы можете создать новыйService
изtype: LoadBalancer
и указать на то жеselector:
какkube-dns
использует. Таким образом, любой, кто хочет использовать сервис с балансировкой нагрузки, может, но вещи в кластере, которые зависят отkube-dns
бытьClusterIP
с (вероятно), что существующее значение xx.xx.xx.xx может продолжаться как прежде.