When I run kubectl get svc -n kube-system
it tells me:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP xx.xx.xx.xx <none> 53/UDP,53/TCP 13h
But when I try to 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.
I am unable to change it to a LoadBalancer...any ideas?
I also tried to create a new kube-dns also but I am unable to get an external-ip; it stays stuck in pending state.
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
reports:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubedns-bkp LoadBalancer xx.xx.xx.xx <pending> 53:32115/UDP 5h
Note: I have created k8s cluster with ELB integration, for other services I successfully get external IPs.
So, two things here:
type:
of an existing Service
; you have to create a new one, or delete the existing one and recreate it.kube-dns
Service
-- you are more than welcome to create a new Service
of type: LoadBalancer
and point it at the same selector:
as kube-dns
is using. That way anyone who wishes to use the load balanced service can, but the things in the cluster who depend on kube-dns
being a ClusterIP
with (likely) that existing xx.xx.xx.xx value can continue as before.