DNS issues in GCE & k8s

7/10/2017

i use google k8s as a service with preemptible instances. i faced with problem when google preempt one of node which serving kube-dns pod i get 5-7 mins failures in all another pods with "Cannot resolve" error. I tried run second kube-dns pod but sometime both dns is running on the same node and i get failures again. I tried define nodeSelector for kube-dns pod but got error

Pod "kube-dns-2185667875-8b42l" is invalid: spec: Forbidden: pod updates may not change fields other than `containers[*].image` or `spec.activeDeadlineSeconds`

There is a possibility to run dns pods on different nodes redundantly? Maybe there are any best practice?

-- Hills of Eternity
dns
google-compute-engine
google-kubernetes-engine
kubernetes

1 Answer

7/10/2017

You can not modify POD like this, you need to modify your Deployment. Also you might want to look into pod anti-affinity to separate your pods in the same deployment in a way that will never schedule them on the same node. Alternatively, you can also switch from Deployment to DaemonSet to get exactly one pod running per node in cluster.

-- Radek 'Goblin' Pieczonka
Source: StackOverflow