背景

通过图片内容可以看出,在 k8s 中,容器内部的 hosts 解析是不会继承宿主机的 host 解析的(与宿主机不相干),常规情况我们在这个应用体系内都有公共的 DNS 服务,DNS 服务是跨主机和容器共享的。

只是有时候在没有公共DNS解析服务的情况下,而容器中的程序又需要通过本地域名的方式去请求接口。这就需要我们手工配置 hosts 映射,这个配置如图来看在宿主机上配置是不可行的,那么在 k8s 的应用场景中,它为我们提供了可以为 pod 配置 hosts 解析的方式,如题所述就是使用 HostAliases。

在这里插入图片描述

代码

apiVersion: v1
kind: Deployment
metadata:
  name: hostaliases-dp
  namespace: default
spec:
  replicas: 1
  selector:
    name: hostaliases-pod
  template:
    metadata:
      labels:
        name: hostaliases-pod
    spec:
	  hostAliases:
	  - ip: "127.0.0.1"
	    hostnames:
	    - "foo.local"
	    - "bar.local"
	  - ip: "10.1.2.3"
	    hostnames:
	    - "foo.remote"
	    - "bar.remote"
      containers:
      - name: cat-hosts
        image: busybox
        imagePullPolicy: Always
	    command:
	    - cat
	    args:
	    - "/etc/hosts"
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐