无法更改类型:ClusterIP 以键入:用于 kubernetes 中的 kube-dns 的 LoadBalancer

unable to chage type: ClusterIP to type: LoadBalancer for kube-dns in 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:

error: services "kube-dns" is invalid

A copy of your changes has been stored to "/tmp/kubectl-edit-4p5gn.yaml"

error: Edit cancelled, no valid changes were saved.

我无法将其更改为 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

注意:我已经创建了带有 ELB 集成的 k8s 集群,对于其他服务,我成功获得了外部 IP。

所以,这里有两件事:

  1. 正如他们在您选择不与我们分享的 yaml 验证错误中所建议的那样,无法更改现有 Servicetype:;你必须创建一个新的,或者删除现有的并重新创建它。
  2. 但是,我强烈,强烈,强烈 建议不要删除 kube-dns Service -- 非常欢迎您创建一个新的 Servicetype: LoadBalancer 并将其指向与 kube-dns 正在使用的 selector: 相同的位置。这样任何希望使用负载均衡服务的人都可以,但是集群中依赖于 kube-dns 的东西是 ClusterIP 并且(可能)现有的 xx.xx.xx.xx 值可以像以前一样继续.