在 k8s pod 里边访问内部域名问题处理

问题描述

在 pod 的节点里边有配置 harbor.local.com 域名/etc/hosts解析,但是在 pod里边 通过程序无法解析访问:

file

file

问题解决

第一种方法:通过 Root账户,给pod里边添加域名解析,即可处理该问题,但是pod重启后会丢失,另外可能没有pod Root 用户权限;

第二种方法:将域名解析加入到 coredns 配置,会自动同步到集群网络:
coredns_configmap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
  selfLink: /api/v1/namespaces/kube-system/configmaps/coredns
  uid: 817e1756-4e26-4dad-96c0-04b31e800f9a
  resourceVersion: '81874456'
  creationTimestamp: '2023-06-06T01:51:22Z'
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: >
      {"apiVersion":"v1","data":{"Corefile":".:53 {\n    errors\n    health
      {\n      lameduck 5s\n    }\n    ready\n    kubernetes cluster.local.
      in-addr.arpa ip6.arpa {\n      pods insecure\n      fallthrough
      in-addr.arpa ip6.arpa\n    }\n    prometheus :9153\n    forward .
      /etc/resolv.conf\n    cache 30\n    reload\n   
      loadbalance\n}\ngenesismagic.coop:53 {\n    errors\n    cache 30\n   
      forward . 192.168.1.89\n    reload\n}   
      \n"},"kind":"ConfigMap","metadata":{"annotations":{},"name":"coredns","namespace":"kube-system"}}
data:
  Corefile: |
    .:53 {
        errors
        health {
          lameduck 5s
        }
        ready
        kubernetes cluster.local. in-addr.arpa ip6.arpa {
          pods insecure
          fallthrough in-addr.arpa ip6.arpa
        }

      # 添加 harbor.local.com 域名解析
        hosts {
          192.168.1.135 harbor.local.com
          fallthrough
        }
        prometheus :9153
        forward . /etc/resolv.conf
        cache 30
        reload
        loadbalance
    }
    genesismagic.coop:53 {
        errors
        cache 30
        forward . 192.168.1.89
        reload
    }    

配置之后,重启coredns服务(也可以不用重启),即可加载进来;

file

为者常成,行者常至