关于k8s 内部pod无法解析外部域名的解决办法
Posted 我有一个博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于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无法解析外部域名的解决办法的主要内容,如果未能解决你的问题,请参考以下文章