通过hostAliases为pod添加/etc/hosts条目

在创建pod时,如果DNS配置不合理想在pod里的/etc/hosts添加相关条目进行解析,可以使用hostAliases来实现。

hostAliases在.spec下定义,和containers字段对齐。

在/etc/hosts里每行的条目的格式是:

IP地址1  主机名1   主机名2

当访问主机1或者主机2时,系统会自动的解析到 IP地址1 这样。

在hostAliases里定义的格式是

- ip: "ip地址1"
  hostnames:
  - "主机名1"
  - "主机名2"

这样在创建pod之后,pod的/etc/hosts会自动多了如下条目。

IP地址1  主机名1   主机名2

看下面的例子,创建一个pod3,yaml文件如下。

[root@vms51 ~]# cat pod3.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: pod3
spec:
  terminationGracePeriodSeconds: 0
  hostAliases:
  - ip: "10.1.1.1"
    hostnames:
    - "aa.local"
    - "bb.local"
  - ip: "10.1.1.2"
    hostnames:
    - "cc.local"
    - "dd.local"
  containers:
  - name: pod3
    image: busybox
    imagePullPolicy: IfNotPresent
    command: ["sh","-c","cat /etc/hosts ; sleep 10000000"]
  restartPolicy: Never
  dnsPolicy: ClusterFirst
[root@vms51 ~]# 

这里创建pod3,这里在hostAliases里两个两个IP,每个IP对应两个主机名,所以在pod3里的/etc/hosts添加两个条目

10.1.1.1  aa.local bb.local
10.1.1.2  cc.local dd.local

下面创建pod并验证。

[root@vms51 ~]# kubectl apply -f pod3.yaml 
pod/pod3 created
[root@vms51 ~]#
[root@vms51 ~]# kubectl get pods
NAME   READY   STATUS    RESTARTS   AGE
pod3   1/1     Running   0          5s
[root@vms51 ~]#

查看pod3里的/etc/hosts的内容。

[root@vms51 ~]# kubectl exec -it pod3 -- tail -3 /etc/hosts
#Entries added by HostAliases.
10.1.1.1    aa.local    bb.local
10.1.1.2    cc.local    dd.local
[root@vms51 ~]#

相关新闻

发表回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

                                                                                                                                    RHCE9学习指南连载,点击阅读