我们在GKE上有2个簇:dev
和production
。我试图在dev
群集上运行此命令:
gcloud beta container clusters update "dev" --update-addons=NodeLocalDNS=ENABLED
一切顺利,node-local-dns pod运行,并且一切正常,第二天早上,我决定在production
群集上运行相同的命令,而node-local-dns无法运行,并且我注意到,两个PILLAR__LOCAL__DNS yaml中的和PILLAR__DNS__SERVER并没有更改为正确的IP,我尝试在config yaml中更改这些变量,但是GKE始终使用PILLAR__DNS__SERVER变量将其覆盖为yaml ...
集群之间的唯一区别是,dev
在1.15.9-gke.24
上运行,而生产1.15.11-gke.1
。
显然1.15.11-gke.1
版本有错误。
我首先在1.15.11-gke.1
上重新创建它,并可以确认node-local-dns
Pods
处于CrashLoopBackOff
状态:
node-local-dns-28xxt 0/1 CrashLoopBackOff 5 5m9s
node-local-dns-msn9s 0/1 CrashLoopBackOff 6 8m17s
node-local-dns-z2jlz 0/1 CrashLoopBackOff 6 10m
当我检查日志时:
$ kubectl logs -n kube-system node-local-dns-msn9s
2020/04/07 21:01:52 [FATAL] Error parsing flags - Invalid localip specified - "__PILLAR__LOCAL__DNS__", Exiting
升级到1.15.11-gke.3
帮助。首先,您需要先升级主节点,然后再升级节点池。看起来在此版本上,所有内容运行正常且流畅:
$ kubectl get daemonsets -n kube-system node-local-dns
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
node-local-dns 3 3 3 3 3 addon.gke.io/node-local-dns-ds-ready=true 44m
$ kubectl get pods -n kube-system -l k8s-app=node-local-dns
NAME READY STATUS RESTARTS AGE
node-local-dns-8pjr5 1/1 Running 0 11m
node-local-dns-tmx75 1/1 Running 0 19m
node-local-dns-zcjzt 1/1 Running 0 19m
关于手动修复此特定守护程序yaml
文件,我不推荐使用,因为您可以确定GKE's auto-repair和auto-upgrade功能将迟早要覆盖它。
我希望它会有所帮助。