容器实例访问IDC内网域名

最近更新时间:2023-04-25 11:19:06

查看PDF

如果您已成功在自建Kubernetes集群中创建云上的容器实例,对于容器实例访问自建Kubernetes集群内网服务的场景,需通过集群内的Coredns服务进行域名解析。

为实现从容器实例到集群Coredns服务的连通性,需进行如下配置:

步骤1:指定虚拟节点启动参数

虚拟节点启动参数中指定--cluster-dns为Coredns的服务地址。

Yaml示例如下:

...
          args:
            - --nodename=rbkci-virtual-kubelet
            # 指定虚拟节点的DNS配置,为集群内Coredns服务的IP地址
            - --cluster-dns=10.254.0.10
            - --cluster-domain=cluster.local
            - --kcilet-kubeconfig-path=/root/.kube/config
            - --enable-node-lease
 ...

步骤2:对目标容器使能kube-proxy,以支持ClusterIP访问

创建实例时可通过Pod template annotation对该pod开启kube-proxy:

Annotation Key Annotation Value示例 是否必填 描述
k8s.ksyun.com/kci-kube-proxy-enabled ‘true’ / ‘false’ 默认值:‘false’。当为true时,为该pod开启kube-proxy,使该pod具备访问集群内clusterIP类型服务的能力;否则不开启。

Yaml示例如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-rbkci
  namespace: default
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
        annotations:
            k8s.ksyun.com/kci-kube-proxy-enabled: 'true'  #对该pod使能kube-proxy
        labels:
            app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
      nodeName: rbkci-virtual-kubelet   #指定nodeName将pod调度到虚拟节点上

注:

Kube-proxy也支持通过启动参数--kube-proxy-enable在vk(即虚拟节点)维度进行全局配置(参数缺省值为false),开启后则默认该vk管理的所有pod都会开启Kube-proxy,支持ClusterIP访问。Pod annotation中配置优先级高于vk全局配置。

vk yaml示例如下:

...
       args:
            - --nodename=rbkci-virtual-kubelet
            # 指定虚拟节点的DNS配置,为集群内Coredns服务的IP地址
            - --cluster-dns=10.254.0.10
            - --cluster-domain=cluster.local
            - --kcilet-kubeconfig-path=/root/.kube/config
            - --enable-node-lease
            # 虚拟节点管理的所有实例使能kube-proxy
            - --kube-proxy-enable
...

文档内容是否对您有帮助?

根本没帮助
文档较差
文档一般
文档不错
文档很好

在文档使用中是否遇到以下问题

内容不全,不深入
内容更新不及时
描述不清晰,比较混乱
系统或功能太复杂,缺乏足够的引导
内容冗长

更多建议

0/200

评价建议不能为空

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

问题反馈