混合集群概述
本地自建 Kubernetes 集群通过分布式容器云平台注册集群接入,可以为自建Kubernetes集群扩容云上 ECS 节点,同时管理云上、云下计算资源,形成混合集群。
搭建混合集群的网络关键在于打通云上云下网络连通,包括:
云上VPC网络与云下网络互通,即计算节点之间互连互通;
云上容器网络与云下容器网络互通,即容器Pod之间互连互通;
混合集群网络模式
节点网络互通
具体操作步骤如下:
将云下网络通过内网接入天翼云,请参考天翼云提供的专线方案 云上云下网络专线接通方案。
测试云上云下连通性,验证云下节点与云上节点是否互通。
如需要云下网络需要通过内网访问云产品,云下网络需配置云产品的域名解析(*.ctyun.cn域名解析转发到云上DNS VPCE IP),云产品包括:CRS镜像仓库、对象存储、日志、监控等。
容器网络互通
在确保云上云下节点网络互通之后,才可配置云下节点上运行的容器网络和云上节点运行的容器网络互通。
场景一:云下Kubernetes集群容器网络模式为Underlay模式,Pod IP集群外可访问
平面网络模式,一般用于集群规模较大(或规划较大)且对网络性能要求较高的场景。常见的开源Underlay模式组件包括:
Flannel Host-GW模式
Calico 路由反射模式
Cilium BCP路由模式
若云下Kubernetes的容器网络模式是Underlay模式,那么云上节点需要使用Cubecni网络插件。在此模式下,需要满足以下条件:
在混合集群中,用户需要确保满足以下条件:
云下网络插件只运行在云下计算节点。
云上的Cubecni网络插件只运行在云上计算节点,不会被调度到云下计算节点。
1. 配置网络插件
a.分布式容器云平台三方集群节点扩容的云上ECS节点会自动添加节点标签k8s.node.ctyun.cn/cloud=true,默认云上Cubecni网络插件会根据云上节点标签自动调度到云上ECS节点。
b.请根据节点标签为云下网络插件设置NodeAffinity,或设置相关污点来确保云下网络插件只运行在云下。例如,针对云下Calico网络插件,使用nodeAffinity设置其不会被调度到标签为k8s.node.ctyun.cn/cloud=true的节点上。其它运行于云下且不被希望调度到云上的网络插件也可以用这种方式设置:
cat <<EOF > calico-ds.patch
spec:
template:
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: k8s.node.ctyun.cn/cloud
operator: NotIn
values:
- "true"
EOF
kubectl -n kube-system patch ds calico-node -p "$(cat calico-ds.patch)"2. 安装Cubecni插件
a.登录分布式容器云平台控制台,在左侧导航栏选择集群资源 > 集群管理。
b.在集群列表页面,单击目标集群,进入集群页面,在左侧导航栏选择插件 > 插件市场。
c.在插件市场页面,搜索cubecni插件或者cubecni-standalone插件,单击右下方安装。
d.在左侧导航栏选择 工作负载 > 守护进程,查看kube-system命名空间下cubecni组件的守护进程,在三方集群扩容云上节点前,cubecni不会被调度到任何一个云下节点上。
场景二:云下Kubernetes集群容器网络模式为Overlay模式,或Underlay模式但Pod IP集群外不可访问
隧道网络模式相较平面网络模式,存在10%~20%的性能损失,一般用于集群规模较小且对网络性能要求不高的场景。场景开源组件模式包括:
Flannel VXLan模式
Calico IPIP模式
Cilium VXLan模式
若云下Kubernetes集群的容器网络模式为隧道网络,则云上节点也可以复用该网络模式,只需保证云上节点能够拉取到容器网络插件所需容器镜像即可。