关于k8s 内部pod无法解析外部域名的解决办法

学向勤中得,萤窗万卷书。这篇文章主要讲述关于k8s 内部pod无法解析外部域名的解决办法相关的知识,希望能为你提供帮助。
某一天程序启动失败了,报错是无法请求某个网址的资源报错了,
然后经过测试发现在k8s内部是无法解析到外部域名的,所以这个问题就需要解决了
先ping一下百度,发现域名无法解析



检查了一下dns服务器配置情况,发现dns服务器设置的是10.16.0.10,这个ip检查一看,是k8s的内部dns,怪不得了。






问题找到了,只要把这个dns service配置成外部的就可以了


所以解决办法是设置deployment的时候,加上dns的配置
加入这段


dnsConfig:
nameservers:
- 202.96.128.86
searches:
- demo.svc.cluster.local
- svc.cluster.local
- cluster.local
options:
- name: ndots
value: "2"
- name: edns0



完整的deployment
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/name: demo2-csp
name: demo2-csp
namespace: demo2
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: demo2-csp
template:
metadata:
labels:
app.kubernetes.io/name: demo2-csp
spec:
dnsConfig:
nameservers:
- 202.96.128.86
searches:
- demo.svc.cluster.local
- svc.cluster.local
- cluster.local
options:
- name: ndots
value: "2"
- name: edns0
containers:
- image: 192.168.200.102:80/demo2/demo2-csp:20211014-0954
name: demo2-csp
ports:
- containerPort: 8080
resources:
requests:
memory: 2024Mi
limits:
memory: 4048Mi

---
apiVersion: v1
kind: Service
metadata:
name: demo2-csp
namespace: demo2
spec:
selector:
app.kubernetes.io/name: demo2-csp
ports:
- port: 8080
targetPort: 8080



【关于k8s 内部pod无法解析外部域名的解决办法】好了,问题解决

    推荐阅读