最近更新时间:2024-04-23 16:44:06
如果您已成功在自建Kubernetes集群中创建云上的容器实例,对于容器实例访问自建Kubernetes集群内网服务的场景,需通过集群内的Coredns服务进行域名解析。
为实现从容器实例到集群Coredns服务的连通性,需进行如下配置:
虚拟节点启动参数中指定--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
...
创建实例时可通过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
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: type
operator: In
values:
- virtual-kubelet
tolerations:
- key: rbkci-virtual-kubelet.io/provider
value: kingsoftcloud
effect: NoSchedule
注:
Kube-proxy也支持通过启动参数
--kube-proxy-enable
在vk(即虚拟节点)维度进行全局配置(参数缺省值为false),开启后则默认该vk管理的所有pod都会开启Kube-proxy,支持ClusterIP访问。Podannotation
中配置优先级高于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 ...
纯净模式