更新时间:2024-08-17 GMT+08:00
CoreDNS配置一致性检查异常处理
检查项内容
检查当前CoreDNS关键配置Corefile是否同Helm Release记录存在差异,差异的部分可能在插件升级时被覆盖,影响集群内部域名解析。
解决方案
您可在明确差异配置后,单独升级CoreDNS插件。
- 配置Kubectl命令,具体请参见通过kubectl连接集群。
- 获取当前生效的Corefile。
kubectl get cm -nkube-system coredns -o jsonpath='{.data.Corefile}' > corefile_now.txt cat corefile_now.txt
- 获取Helm Release记录中的Corefile。
latest_release=`kubectl get secret -nkube-system -l owner=helm -l name=cceaddon-coredns --sort-by=.metadata.creationTimestamp | awk 'END{print $1}'` kubectl get secret -nkube-system $latest_release -o jsonpath='{.data.release}' | base64 -d | base64 -d | gzip -d | python -m json.tool | python -c " from __future__ import print_function import json,sys,re,yaml; manifests = json.load(sys.stdin)['manifest'] files = re.split('(?:^|\s*\n)---\s*',manifests) for file in files: if 'coredns/templates/configmap.yaml' in file and 'Corefile' in file: corefile = yaml.safe_load(file)['data']['Corefile'] print(corefile,end='') exit(0); print('error') exit(1); " > corefile_record.txt cat corefile_record.txt
- 对比2和3的输出差异。
diff corefile_now.txt corefile_record.txt -y;
图1 查看输出差异
- 返回CCE控制台,单击集群名称进入集群控制台,前往“插件中心”,选择CoreDNS插件单击“升级”。
若要保留差异部分配置,您可采用以下方法之一:
- (推荐)将“parameterSyncStrategy”参数配置为“inherit”,差异配置将自动继承,由系统自动解析、识别与继承差异参数。
- 将“parameterSyncStrategy”参数配置为“force”,您需手动填写差异配置,详情请参考CoreDNS域名解析。
- 单击“确定”,等待插件升级完毕,检查CoreDNS各实例均可用,且Corefile符合预期。
kubectl get cm -nkube-system coredns -o jsonpath='{.data.Corefile}'
- 编辑CoreDNS插件配置的“parameterSyncStrategy”参数,重置为“ensureConsistent”,继续开启配置一致性校验。
同时建议您后续通过CCE插件管理的参数配置功能修改Corefile配置,避免产生差异。