通过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 ~]#