行业知识
k8s容器集群工作负载节点跨越多个云计算厂商
文章目录
- 1. 背景介绍
- 2. 跨云商内网打通
- 2.1 阿里云环境安装部署
- 2.1.1 加载驱动模块
- 2.1.2 添加 GRE 隧道开机启动脚本
- 2.1.3 配置 iptalbes 规则
- 2.1.4 在其他节点配置路由
- 2.2 华为云上安装部署
- 2.2.1 加载驱动模块
- 2.2.2 添加 GRE 隧道开机启动脚本
- 2.2.3 配置 iptalbes 规则
- 2.2.4 在其他节点配置路由
- 3. 构建K8S集群
- 4. 容器集群跨云商添加工作负载节点
- 4.1 安装Containerd 容器服务
- 4.2 Linux 参数优化
- 4.3 Kubernetes Worker 节点组件安装
- 4.3.1 获取安装包
- 4.3.2 kubelet 创建 systemctl 启动服务
- 4.3.3 启动 kubelet
- 4.3.4 为 kube-proxy 创建 systemctl 启动服务
- 4.3.5 启动 kube-proxy 服务
- 5. ���结
1. 背景介绍
随着亚马逊云、阿里云、华为云、腾讯云等云计算服务厂商越来越安全、稳定,以及价格越来越便宜,越来越多的企业或个人开始尝试或正在使用云计算服务厂商提供的IaaS服务替代自建IDC机房中的基础设施资源。面对各个云计算厂商的营销套路,不少企业不知道选哪家云商的服务比较合适,一怕被绑架,上车容易下车难,第一年免费用,第二年没折扣;二怕今年上阿里,明年华为更便宜,后年腾讯更优惠,服务迁移难。如何让业务在不同云商之间随意切换呢?这样就能实现想用哪家的云就选哪家的资源。
下边通过实验的方式尝试一种实现上述诉求的方法,即搭建一套k8s容器集群平台,不同云商上云主机部署工作负载节点,并注册到k8s集群。实现一套容器集群管理多个云商的工作负载节点,于是根据云商的优惠政策,动态的将容器化部署的服务有侧重点的分布到性价比更高的云商上。
如上图所示,华为云上部署3个节点,阿里云上部署3个节点,其中华为云上 k8s-master1 与 k8s-master2 为 k8s 集群的管理服务,k8s-node1 为 k8s 集群的工作负载节点,阿里云上的 k8s-node2、k8s-node3、k8s-node4 为 k8s 集群的工作负载节点。
2. 跨云商内网打通
通过建立GRE隧道,在华为云 k8s-master2 与阿里云 k8s-node2 节点之间建立 GRE 隧道,打通华为云与阿里云内网通信。同时使用 iptables 设置流量转发规则,例如 k8s-master2 通过设置 iptables 规则将阿里云上的主机对 k8s-master1 与 k8s-node1 的流量进行转发,同理,k8s-node2 通过设置 iptables 规则将华为云上的主机对 k8s-node3 与 k8s-node4 的流量进行转发,从而实现华为云与阿里云上所有主机之间的内网互通。
建立 GRE 隧道的方法请参考 构建GRE隧道打通不同云商的云主机内网 。这篇文章主要介绍了在两个云商之间搭建 GRE 隧道实现两个内网互通的方法。由于使用 route 工具添加的路由并不会持久话的保存(服务器重启将会丢失),所以,本章将会介绍如何搭建 GRE 隧道,并持久话保存。
2.1 阿里云环境安装部署
2.1.1 加载驱动模块
在阿里云 k8s-node2 节点上执行下边命令
cat > /etc/sysctl.d/gre.conf