目錄
一、問題描述
二、宿主機解決方法
三、容器解決辦法
一、問題描述
? ? ? ? 宿主機是Ubuntu,在宿主機上 ping
不通域名:xxxx.cn
,但是個人電腦能 ping 通。
? ? ? ? 同時宿主機上的啟動的k8s容器也無法ping通。
二、宿主機解決方法
? ? ? ? ①編輯文件:/etc/systemd/resolved.conf
,取消注釋并修改 DNS
行,例如:
[Resolve]
DNS=8.8.8.8
? ? ? ? ②重啟 systemd-resolved
服務,并更新 /etc/resolv.conf
:
sudo systemctl restart systemd-resolved
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
? ? ? ? ③再次ping域名,驗證是否生效
三、容器解決辦法
? ? ? ? ①在 yaml 文件(如:xxx_deploy.yaml
)增加 hostAliases
配置:
apiVersion: apps/v1
kind: Deployment
metadata:name: testlabels:app: test
spec:replicas: 1revisionHistoryLimit: 10strategy:type: RollingUpdaterollingUpdate:maxSurge: 1maxUnavailable: 0selector:matchLabels:app: testtemplate:metadata:labels:app: testspec:hostAliases:- ip: "xx.xx.xx.xx"hostnames:- "xxxx.cn"initContainers:- name: init-xximage: busybox:1.28.3containers:- name: testimagePullPolicy: IfNotPresentimage: xxxxxxxx# .......
? ? ? ? ②重啟 pod,進入 pod ping 對應的域名,如果還是 ping 不通,那么需要在宿主機手動添加路由,手動添加路由方法如下:
? ? ? ? 1、執行以下命令手動添加路由(重啟服務器會失效):
route add -net xx.xx.xx.xx netmask 255.255.0.0 gw xx.xxx.xxx.xxx
????????查看路由信息:route -n
? ? ? ? 2、編輯 /etc/sysconfig/static-routes
文件(沒有該文件時手動新建),添加永久的靜態路由
any net xx.xx.xx.xx netmask 255.255.0.0 gw xx.xxx.xxx.xxx