1.首先在kube-system 命名空间创建configmap,添加自定义host解析
kubectl create configmap -n kube-system kubedns-host
#
#create configmap 指明创建的类型
# -n 指定命名空间
# kubedns-host 自定义的configmap 命名。(建议统一使用kubedns-host,方便维护)
2.查看是否创建成功
kubectl get configmaps -n kube-system
如果出现刚才创建的命名的configmap资源,则可进入下一步。
3.编辑添加自定义host解析
kubectl edit configmaps -n kube-system kubedns-host
在apiVersion: v1下添加如下格式数据:
data:
dnshost: |-
ip地址 域名
最终效果如图:
保存退出(注意格式对齐,不要使用tab缩进)
4.修改kube-system 命名空间下 kube-dns 的deployment资源
最快的方式 :
kubectl edit deployments -n kube-system kube-dns
用搜索的方式,找到volumes
#1. # 键盘输入:/configMap 回车
#2. 在volumes下添加以下数据:(注意格式对齐)
- configMap:
defaultMode: 420
name: kubedns-host
optional: true
name: kubedns-host
#3. 找到dnsmasq容器的args配置项,添加以下数据:
- --addn-hosts=/dns/dnshost
#4. 保存退出
5.杀掉原有的kube-dns pod,让它按新配置重启
先查看原来容器的名字
kubectl get po -n kube-system
例图:
干掉这两个:
kubectl delete po -n kube-system [name1] [ name2]
# 细节一点,最好同时杀掉,让两个同时重启
kubectl delete po -n kube-system kube-dns-7b6f774c5c-lfwfn kube-dns-7b6f774c5c-zjzhf
6.等待新启的kube-dns的状态为Running
当新启动的kube-dns 准备好之后,再进去容器里面ping一下看能不能ping通
进入容器指令:
kubectl exec -it -n [命名空间] [容器名] /bin/bash
#/bash无指令的话,用sh
能ping通证明成功!~
完结~