问题描述
当DNS服务未解析域名,如何在pod hosts文问添加一条记录,并在pod重启时不会删除此记录。
问题分析
pod中的hosts文件是由kubelet管理的,每次重启pod都会导致手动添加的记录被删除,可以通过PodSpec 的 HostAliases 字段来添加自定义条目。
问题解决
1.创建deployment
$ cat busybox.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: buxybox-hostaliases
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: busybox
template:
metadata:
labels:
app: busybox
spec:
hostAliases:
- ip: "127.0.0.1"
hostnames:
- "3.3x.local"
- "4.4x.local"
- ip: "10.1.2.3"
hostnames:
- "5.5x.remote"
- "6.6x.remote"
containers:
- name: busybox
image: busybox #内置的linux大多数命令,多用于测试
args:
- /bin/sh
- -c
- sleep 10; touch /tmp/healthy; sleep 30000
readinessProbe: #就绪探针
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 10 #10s之后开始第一次探测
periodSeconds: 5 #第一次探测之后每隔5s探测一次
$ kubectl apply -f busybox.yaml
2.验证
$ kubectl get pod -n default|grep buxybox-hostaliases
buxybox-hostaliases-5665bf9fdd-p4grj 1/1 Running 0 45s
$ kubectl exec -it -n default buxybox-hostaliases-5665bf9fdd-p4grj -- sh -c 'cat /etc/hosts'
# Kubernetes-managed hosts file.
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
fe00::0 ip6-mcastprefix
fe00::1 ip6-allnodes
fe00::2 ip6-allrouters
192.168.0.201 buxybox-hostaliases-5665bf9fdd-p4grj
# Entries added by HostAliases.
127.0.0.1 3.3x.local 4.4x.local
10.1.2.3 5.5x.remote 6.6x.remote
参考链接
[1] https://kubernetes.io/zh/docs/tasks/network/customize-hosts-file-for-pods/ 如果您有其他问题,欢迎您联系火山引擎技术支持服务