Kubernetes配置Pods中的hosts文件

在故障排查中(也可能测试环境),需要为 pod 中注入 /etc/hosts 配置,以便能够绕过DNS解析来直接访问目标服务器。在Kubernetes中, PodSpec 段落提供了 HostAliases 字段完成配置:

为pod添加hosts
apiVersion: v1
kind: Pod
metadata:
  name: hostaliases-pod
  spec:
    restartPolicy: Never
    hostAliases:
    - ip: "192.168.1.101"
      hostnames:
      - "apiserver"
      - "apiserver.z-k8s.svc.cloud-atlas.io"
    - ip: "192.168.1.102"
      hostnames:
      - "repo"
      - "repo.z-k8s.svc.cloud-atlas.io"
  containers:
  - name: cat-hosts
    image: busybox:1.28
    command:
    - cat
    args:
    - "/etc/hosts" 
  • 测试:

创建测试pods
kubectl apply -f hostalias.yaml
  • 检查:

查看创建的测试pods
kubectl get pod --output=wide

输出可以看到运行的pod:

查看创建的测试pods
# 待续
  • 查看日志:

查看创建的测试pods的日志
kubectl logs hostaliases-pod
  • 日志结果(就是 cat /etc/hosts 的输出内容验证):

查看创建的测试pods的日志内容就是 hosts 内容
# 待续

参考