如何更改主机名解析像 coredns 中的主机文件

How to change host name resolve like host file in coredns

我有这样的 CoreFile 配置

.:53 {
    errors
    health {
       lameduck 5s
    }
    ready
    kubernetes cluster.local in-addr.arpa ip6.arpa {
       pods insecure
       fallthrough in-addr.arpa ip6.arpa
       ttl 30
    }
    prometheus :9153
    forward . /etc/resolv.conf {
       max_concurrent 1000
    }
    cache 30
    loop
    reload
    loadbalance
}

我希望我所有的 pods 能够将 myapi.local 解析为特定 IP ( 192.168.49.2 ) 有什么简单的方法可以实现这一点,就像我可以用 OS 的主机文件

做的那样

下面的配置应该可以解决问题

.:53 {
    errors
    health
    ready
    kubernetes cluster.local in-addr.arpa ip6.arpa {
        pods insecure
        fallthrough in-addr.arpa ip6.arpa
    }
    prometheus :9153
    hosts custom.hosts myapi.local {
        192.168.49.2 myapi.local
        fallthrough
    }
    forward . 8.8.8.8 8.8.4.4
    cache 30
    loop
    reload
    loadbalance
}

引用https://medium.com/@hjrocha/add-a-custom-host-to-kubernetes-a06472cedccb

或者您可以尝试使用主机插件https://coredns.io/plugins/hosts/

如果您不想使用 coredns 解析条目,则有一种方法可以在特定 pod 的主机文件中设置条目,该文件会镜像在节点上设置 /etc/hosts:

apiVersion: v1
kind: Pod
metadata:
  name: hostaliases-pod
spec:
  restartPolicy: Never
  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
    command:
    - cat
    args:
    - "/etc/hosts"

https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/