问题描述
使用hostNetwork
时无法使用Kubernetes内部DNS:
/ test# nslookup echo
Server: 10.96.0.10
Address 1: 10.96.0.10
nslookup: can't resolve 'echo'
没有hostNetwork
:
/ test# nslookup echo
Server: 10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local
Name: echo
Address 1: 10.98.232.198 echo.default.svc.cluster.local
未升级的裸机上的Kubernetes 1.18.5(未全新安装)。
完整配置:
apiVersion: apps/v1
kind: DaemonSet
Metadata:
name: test
labels:
app: test
spec:
selector:
matchLabels:
app: test
template:
Metadata:
labels:
app: test
spec:
hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet
containers:
- image: busyBox:1.28
command:
- sleep
- "3600"
imagePullPolicy: IfNotPresent
name: busyBox
---
apiVersion: apps/v1
kind: Deployment
Metadata:
name: echo
spec:
replicas: 1
selector:
matchLabels:
app: echo
template:
Metadata:
labels:
app: echo
spec:
containers:
- name: echo
image: jmalloc/echo-server
ports:
- name: http-port
containerPort: 8080
---
apiVersion: v1
kind: Service
Metadata:
name: echo
spec:
ports:
- name: http-port
port: 80
targetPort: http-port
protocol: TCP
selector:
app: echo
解决方法
全新安装的Kubernetes 1.19.0解决了此问题。