kubernetes hostAliases

kubernetes 添加Pod的/etc/hosts

配置Pod的 /etc/hosts

官网文档:使用 HostAliases 向 Pod /etc/hosts 文件添加条目 | Kubernetes

某些情况下,DNS 或者其他的域名解析方法可能不太适用,你需要配置 /etc/hosts 文件,在 Linux 下是比较容易做到的,在 kubernetes 中,可以通过 Pod 定义中的 hostAliases 字段向 Pod的 /etc/hosts 添加条目。

建议通过使用 HostAliases 来进行修改,因为该文件由 kubelet 管理,并且可以在 Pod 创建/重启过程中被重写。

使用 hostAliases 添加额外的条目

通过 Pod 定义中的 .spec.template.spec.hostAliases 字段,我们可以向 Deployment的 /etc/hosts 文件中添加额外的条目,用来解析 www.baidu.com127.0.0.1 , 如下所示:

kind: Deployment
apiVersion: apps/v1
metadata:
  name: centos7
  labels:
    app: centos7
spec:
  replicas: 1
  selector:
    matchLabels:
      app: centos7
  template:
    metadata:
      labels:
        app: centos7
    spec:
      #-------------------------------------------
      hostAliases:                   #配置hosts文件
      - ip: "127.0.0.1"            #配置解析的IP
        hostnames:
        - "www.baidu.com"            #配置域名
      #-------------------------------------------
      containers:
      - name: service-provider
        image: centos:7.7.1908
        command:
        - "/bin/sh"
        args:
        - "-c"
        - "while true; do sleep 999999; done"

执行下面的命令可以创建该 Deployment:

kubectl create -f hosts.yaml

执行完成后查看 Deployment 的IP 和状态:

kubectl get deploy --output=wide

输出结果如下:

NAME      READY   UP-TO-DATE   AVAILABLE   AGE     CONTAINERS         IMAGES            SELECTOR
centos7   1/1     1            1           2m52s   service-provider   centos:7.7.1908   app=centos7

进入镜像查看/etc/hosts

接下来将要进入刚刚部署的 Deployment 的Pod中,查看 hosts 文件是否发生了变化。

kubectl get pod -l app=centos7

输出结果如下:

NAME                   READY   STATUS    RESTARTS   AGE
centos7-d8bcd5-n2g2l   1/1     Running   0          8m42s

查看 Pod 内部的 /etc/hosts 文件

kubectl exec -it centos7-d8bcd5-n2g2l -- cat /etc/hosts

输出结果如下:

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
10.244.0.32     centos7-d8bcd5-n2g2l

127.0.0.1       www.baidu.com

从结果中,我们可以看到,配置的条目被添加在 /etc/hosts 文件的末尾。

 

 

发表回复 0

Your email address will not be published. Required fields are marked *