KubeSphere+Kosmos 实现跨集群编排

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. Kubesphere + Kosmos 实现跨集群编排 仇 明 中移云能力中心 ● 软件工程师 主办方 合作伙伴
2. 议题概要 1. 移动云的云原生演进之路 2. 多集群管理 -- Kosmos • 多集群网络 • 跨集群编排 • 多集群调度 • 结合 kubesphere 使用 • 跨云灾备场景 3. 未来规划 云原生 Meetup 杭州站
3. 移动云的云原生演进之路 内部落地,移动云多款资源型产品使用精细 kosmos v0.2.0 版本发布,目前 star 数 化容器管理进行多集群管理、跨 AZ 编排 量 150+ , pr 300+ 精细化容器管理探索阶段 2023.8 2022.4 2022.11 2021.3 多集群管理,跨 AZ 编排 当前 开源筹备, kosmos 项目初始化 ( kosmos 的前身) 云原生 Meetup 杭州站
4. 多集群管理 -- Kosmos 名称的由来 Host Host Cluster Cluster kube-APIServer kube-APIServer Kosmos ( K 代表 Pod Pod Virtual Virtual Pod Pod Virtual Virtual Pod Pod Virtual Virtual Pod Pod node1 node1 node2 node2 leaf-node1 leaf-node1 leaf-node2 leaf-node2 Kubernetes , Cosmos 在希腊语中是 宇宙)是受 Virtual kubelet 等开源项 目启发,并从众多项目实践中孕育而生 的分布式云原生多集群技术集合。 Kosmos 功能模块  多集群网络( ClusterLink ) Kosmos Kosmos ClusterLink ClusterLink ClusterTree ClusterTree Member Member Cluster1 Cluster1 Scheduler Scheduler Member Member Cluster2 Cluster2 kube-APIServer kube-APIServer kube-APIServer kube-APIServer  跨集群编排( ClusterTree )  多集群调度( Scheduler )  便捷化运维工具( Kosmosctl ) Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod node1 node1 node2 node1 node1 node2 node3 node1 node1 node3 node1 node1 node2 node1 node1 node2 node3 node1 node1 node3 云原生 Meetup 杭州站
5. Kosmos—— 多集群网络 ClusterLink :使用隧道技术( VxLAN/IPSec )打通跨集群网络。在 CNI 上层实现,用户无需卸载或 重启已经安装的 CNI 插件,不会对正在运行的 pod 产生影响。 Host Host Cluster Cluster Watch Network-Manager Network-Manager Reconcile Multi-Cluster-CoreDNS Multi-Cluster-CoreDNS Cluster Node CRD Cluster CRD Node Config CRD mcs-controller mcs-controller Watch Member Member Cluster1 Cluster1 Controller-Manager Controller-Manager node1 node1 Member Member Cluster2 Cluster2 Reconcile Agent Agent (Daemonset) (Daemonset) node2 node2 podlIP: podlIP: 10.100.0.2/24 10.100.0.2/24 vx-bridge 10.0.1.3/24 vx-bridge 10.0.1.2/24 Controller-Manager Controller-Manager Build tunnels, apply routes, etc. Tunnel node4 node4 Agent Agent (Daemonset) (Daemonset) node3 node3 podlIP: podlIP: 10.100.0.4/24 10.100.0.4/24 vx-bridge 10.0.1.4/24 vx-bridge 10.0.1.5/24 云原生 Meetup 杭州站
6. Kosmos—— 多集群网络 Gateway 模式 兼容性强,每个集群 只需 1 个节点对外提 Member Member Cluster1 Cluster1 node2 node2 优。适用于全节点 underlay 互通场景 vx-bridge 10.0.0.2/24 ② vx-local 10.0.1.2/24 ① vx-local 10.0.1.3/24 ⑥ ⑤ vx-local 10.0.2.2/24 node4 node4 podlIP: podlIP: 10.200.0.3/24 10.200.0.3/24 ③ vx-bridge 10.0.0.3/24 tunl0 景 网络路径短,性能更 node3 node3 ( ( gateway gateway node node ) ) node1 node1 ( ( gateway gateway node node ) ) podlIP: podlIP: 10.100.0.2/24 10.100.0.2/24 供访问,适合跨云场 P2P 模式 Member Member Cluster2 Cluster2 CNI CNI tunl0 ④ vx-local 10.0.2.3/24 Member Member Cluster1 Cluster1 node2 node2 Member Member Cluster2 Cluster2 node3 node3 node1 node1 node4 node4 podlIP: podlIP: 10.100.0.2/24 10.100.0.2/24 vx-bridge 10.0.1.2/24 podlIP: podlIP: 10.200.0.3/24 10.200.0.3/24 vx-bridge 10.0.1.3/24 ① vx-bridge 10.0.2.2/24 vx-bridge 10.0.2.3/24 ② 云原生 Meetup 杭州站
7. Kosmos—— 多集群网络 全局 IP 分配 ① ip route add 242.0.2.0/24 via 10.0.1.4 dev vx-bridge GlobalCIDRsMap: 10.100.0.0/24 : 242.0.1.0/24 Member Member Cluster1 Cluster1 GlobalCIDRsMap: 10.100.0.0/24 : 242.0.2.0/24 Member Member Cluster2 Cluster2 ② iptables -t nat -A POSTROUTING - d 242.0.2.0/24 -j MASQUERADE ③ iptables -t nat -A PREROUTING -d 242.0.2.0/24 -j NETMAP --to 10.100.0.0/24 node2 node2 node4 node4 podlIP: podlIP: 10.100.0.2/24 10.100.0.2/24 podlIP: podlIP: 10.100.0.2/24 10.100.0.2/24 globalIP: globalIP: 242.0.1.2/24 242.0.1.2/24 globalIP: globalIP: 242.0.2.2/24 242.0.2.2/24 vx-bridge 10.0.1.2/24 vx-bridge 10.0.1.4/24 ④ ip route add 242.0.1.0/24 via 10.0.1.2 dev vx-bridge 云原生 Meetup 杭州站
8. Kosmos—— 跨集群编排 Host Host Cluster Cluster App App apply kube-APIServer kube-APIServer workload workload Pod2 Pod2 Pod1 Pod1 workload workload Orchestration Orchestration Cluster Cluster CRD CRD node1 node1 Pod1 Pod1 pod-controller pod-controller Services/Endpoints Services/Endpoints storagecopy-controller storagecopy-controller Secrets/Confimaps Secrets/Confimaps mcs-controller mcs-controller PVs/PVCs PVs/PVCs ... ... ... ... ... ... ... ... node2 node2 leaf-node1 leaf-node1 leaf-node2 leaf-node2 one to many (LabelSelector) one to one Member Member Cluster1 Cluster1 node1 node1 Pod1 Pod1 Pod2 Pod2 node-controller node-controller Services/Endpoints Services/Endpoints Secrets/Confimaps Secrets/Confimaps PVs/PVCs PVs/PVCs ... ... ... ... node3 node3 leaf-node3 leaf-node3 Services/Endpoints Services/Endpoints Secrets/Confimaps Secrets/Confimaps PVs/PVCs PVs/PVCs Pod1 Pod1 更新  pod-controller : 监 听 host 集 群 pod 创 建 , 调 用 leaf 集 群 ;维护 pod 状态;环境变量转换 one to cluster node1 node1 算;节点状态维护;节点 lease kube-apiserver 进 行 pod 创 建 ;权限注入 Member Member Cluster2 Cluster2 node2 node2  node-controller :节点资源计  storagecopy-controller node2 node2 node3 node3 Services/Endpoints Services/Endpoints Secrets/Confimaps Secrets/Confimaps PVs/PVCs PVs/PVCs : pv/pvc 资源同步和状态管理  mcs-controller : service 资 源同步和状态管理 云原生 Meetup 杭州站
9. Kosmos—— 跨集群编排 场景一: pod 使用 kosmos 下发到子集群 场景二:存量集群中已经部署过 csi Host Host Cluster Cluster Host Host Cluster Cluster Pod Pod kube-APIServer kube-APIServer csi-provisioner csi-provisioner update PV csi-node csi-node Kosmos Kosmos Pod Pod storagecopy-controller storagecopy-controller ... ... watch pv watch pv Member Member Cluster1 Cluster1 create PVC create pvc Member Member Cluster2 Cluster2 Member Member Cluster1 Cluster1 Pod Pod Pod Pod Pod Pod Pod Pod node1 node1 node2 node2 node1 node1 node2 node2 Member Member Cluster2 Cluster2 kube-APIServer kube-APIServer kube-APIServer kube-APIServer csi-provisioner csi-provisioner csi-provisioner csi-provisioner csi-node csi-node csi-node csi-node Leaves 云原生 Meetup 杭州站
10. Kosmos—— 跨集群编排 当出现 AZ 级故障,或 AZ 之间网络中断,确保用户用户实例能正常访问是非常重要的。  mcs-controllers 实现了 services 、 endpoints 从 host 集群向子集群的同步  eps-probe-plugin 实现了 endpoints 的健康检测 Host Host Cluster Cluster endpointSlice endpointSlice Service Export annotated watch service service Kosmos Kosmos mcs-controller mcs-controller watch create & update watch Member Member Cluster2 Cluster2 Member Member Cluster1 Cluster1 Pod Pod Service Import eps-probe-plugin eps-probe-plugin check DNS request coreDNS eps-probe-plugin eps-probe-plugin check DNS request request save endpointSlice endpointSlice service service request endpointSlice endpointSlice service service Pod Pod save coreDNS Service Import 云原生 Meetup 杭州站
11. Kosmos—— 多集群调度  Kosmos 纳管子集群后,会映射出一个带 有「 kosmos.io/node=true:Noschedule 」污点的虚节点。  LeafNodeTaintToleration 调度插件,容 忍这个污点,实现子集群和 host 集群节 点无差别混合调度效果。  LeafNodeVolumeBinding 调度插件,存 储卷绑定过程中直接通过带污点的虚节点 。  LeafNodeDistributionPolicy 调度插件 ,实现 Pod 按节点类型(实节点、虚节 点、混合节点)调度 云原生 Meetup 杭州站
12. 结合 kubesphere 使用 KubeSphere 是在 Kubernetes 之上构建的面向 云原生应用的分布式操作系统,提供了运维友好 的向导式操作界面,帮助企业快速构建一个强大 和功能丰富的容器云平台。例如 Kubernetes 资 源管理、 DevOps 、应用生命周期管理、微服务 治理(服务网格)、日志查询与收集等。 云原生 Meetup 杭州站
13. 结合 kubesphere 使用 使用 kubesphere 监控,多 套 Kubernetes 集群 云原生 Meetup 杭州站
14. 结合 kubesphere 使用 部署 Kosmos : kosmosctl install --cni "${CLUSTER_CNI}" --default-nic "$ {NETWORK_CARD}" 纳管 member1-cluster : kosmosctl join cluster --name member1-cluster--kubeconfig "$ {MEMBER_KUBECONFIG}" 云原生 Meetup 杭州站
15. 结合 kubesphere 使用 使用 kubesphere ,查看 Host 集群节点——实节点 ( Host 节点)和 虚节点(子集 群) 云原生 Meetup 杭州站
16. 结合 kubesphere 使用 部署开源 MySQL Operator ,可见实例主备 Pod ,分别被调度到实节点和虚 节点上。 云原生 Meetup 杭州站
17. 结合 kubesphere 使用 部署开源 MySQL Operator ,可见实例主备 Pod ,分别被调度到实节点和虚 节点上。 云原生 Meetup 杭州站
18. 结合 kubesphere 使用 部署开源 MySQL Operator , PVC 被同步到 Host 集群。 云原生 Meetup 杭州站
19. 结合 kubesphere 使用 部署开源 MySQL Operator , PVC 被同步到 Host 集群。 云原生 Meetup 杭州站
20. 结合 kubesphere 使用 部署开源 MySQL Operator , Services 信息 得到同步。 云原生 Meetup 杭州站
21. 结合 kubesphere 使用 部署开源 MySQL Operator , Services 信息 得到同步。 云原生 Meetup 杭州站
22. 跨云灾备场景 云原生 Meetup 杭州站
23. 未来规划  功能规划 • • • • • CNI 适配插件化 控制面高可用性提升 Pod 驱逐逻辑优化 接入 kubesphere 应用商店 基于 RDMA 助力 AI 大模型推理  Doc https://kosmos-io.github.io/website/quick-start  Github : https://github.com/kosmos-io/kosmos  Wechat : Kosmos 技术交流 云原生 Meetup 杭州站
24. Thank you 云原生 Meetup 杭州站

Accueil - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-16 09:35
浙ICP备14020137号-1 $Carte des visiteurs$