作者
万绍远,CNCF 基金会官方认证 Kubernetes CKA&CKS 工程师,云原生解决方案架构师。对 ceph、Openstack、Kubernetes、prometheus 技术和其他云原生相关技术有较深入的研究。参与设计并实施过多个金融、保险、制造业等多个行业 IaaS 和 PaaS 平台设计和应用云原生改造指导。
“大航海”时代,国内企业纷纷在出海赛道上扬帆起航。伴随着业务出海,系统也要做全球化部署,公有云成为了出海企业的首选。
但是,Kubernetes 在企业落地过程中仍然面临诸多挑战:
-
需要经验丰富的 IT 人员对 Kubernetes 集群进行部署、升级、监控, 确保系统可靠性。
-
多个 Kubernetes 集群如何进行统一策略管理、安全管控,实现集中式的可视化管控和一致性运维 ?
-
如何利用 Kubernetes 和周边生态技术栈,更高效地迭代和交付业务应用 ?
Rancher 就是一款很好的工具,能够通过其多集群管理能力和 Kubernetes 生命周期安全支持,帮助出海业务提高部署效率,降低运维成本。
多集群统一纳管
![](https://img-blog.csdnimg.cn/12411f43b3b24765a87634a2d8833200.png)
业务出海需要重点评估平滑迁移成本。容器是非常好的应用载体,诸多企业考虑在海外公有云使用 Kubernetes。那么应该选择公有云的虚拟机自建 Kubernetes?还是直接使用公有云厂商的 Kubernetes 发行版,例如 AWS EKS 或者 Azure AKS 呢?
建议企业使用公有云的 Kubernetes 发行版,因为它直接与公有云的基础设施进行了集成,可以更好地利用云上资源,提高部署效率,降低运维成本。以 AWS EKS 为例,使用 EKS 创建 Loadblance 类型的 Service 会自动在 AWS 中创建 ELB 负载均衡器,存储自动对接了 EBS 和 EFS。相比自建 Kubernetes 来说,降低了手动对接的操作过程。
Rancher 支持国内外主流的公有云 Kubernetes 发行版,如 EKS、GKE、ACK、CCE、TKE、AKS……用户可通过 Rancher 一键创建并纳管这些云供应商的 Kubernetes 发行版。
以一个客户架构为例
1、在中国本地数据中心部署 Rancher,本地数据中心的 Kubernetes 使用 RKE 进行部署,并同时建设同城灾备环境。
2、海外业务集群使用 Rancher 对接 AWS,创建对应的 EKS 集群进行统一纳管,通过专线连接。
![](https://img-blog.csdnimg.cn/df5cc9e0e89946f982d0bc97a97fb71a.png)
使用 Rancher 部署 EKS 集群示例
AWS 配置:
1、在 AWS 中提前创建 VPC 和安全组
2、添加 IAM 权限,创建策略:https://docs.ranchermanager.rancher.io/zh/reference-guides/amazon-eks-permissions/minimum-eks-permissions
![](https://img-blog.csdnimg.cn/7963a3aa0e684866ad40927011545bb2.png)
3、创建用户关联此策略
![](https://img-blog.csdnimg.cn/3aeabc6294dc473181ea72c2a5be5f63.png)
![](https://img-blog.csdnimg.cn/e4595e778d7b4ae1ba654556e8d4190b.png)
Rancher 配置
1、创建集群
![](https://img-blog.csdnimg.cn/52234c3b51b241b2b1e2ad34b20f7d47.png)
2、选择 EKS
![](https://img-blog.csdnimg.cn/63335fe864f945828710cdf1a2359893.png)
3、选择对应的区域和配置信息
![](https://img-blog.csdnimg.cn/8a81fa249a8f4b2c8b7ad20b3a02990a.png)
填写生成的账户 Access-key 和 Secret-key
![](https://img-blog.csdnimg.cn/a2c3a70848c04e4383a1e12ba246b218.png)
4、配置 VPC 和子网
![](https://img-blog.csdnimg.cn/757c468f165f481dbfb4f78c8539485c.png)
5、配置节点主机规格
6、集群创建完成
![](https://img-blog.csdnimg.cn/12e2cdf7b842489ba32b27e962c80b6f.png)
对应的 AWS 页面也能看见创建的集群。在 Rancher UI 创建负载均衡和创建 PVC 也会自动在 AWS 中创建
![](https://img-blog.csdnimg.cn/920665ee4edd471abc7a74f5d84c624b.png)
多集群统一发布
跨集群应用克隆
当实现多集群纳管后也带来一个问题:用户在测试集群部署服务验证可用以后,如何快速地将应用直接发布到生产集群?如果只能在生产集群中手动创建应用,在手动配置过程中容易出现参数丢失等问题。
为了解决这些问题,Rancher 企业版从设计之初就新增了跨集群应用克隆的功能,可以一键将某一集群的应用发布到其他集群,减少用户手动配置的工作量。 同时用户还可以通过跨集群应用克隆功能,提前将应用备份到其他集群,一旦有集群崩溃的情况出现,可以马上切换流量到其他集群提供服务,快速实现应用的恢复。
![](https://img-blog.csdnimg.cn/11821d2ab069443fbd10033f36f13218.png)
![](https://img-blog.csdnimg.cn/3f0e2c38ae0448bbbb382f85d4c645fe.png)
Gitops 统一发布
同时 Rancher 也内置了 Gitops 工具 Fleet,实现海量集群同步分发
![](https://img-blog.csdnimg.cn/a4e8b53acf014de89f528f0b05813853.png)
![](https://img-blog.csdnimg.cn/aa00df9f0cea43aea5d90e80e3b3890d.png)
- 将应用代码和构建 Docker 镜像的 Dockerfile 文件放置到 Gitlab 对应项目中
- 在 Gitlab 中创建用于专门用于存放部署 yaml 的项目
- 配置 CI 工具用于代码编译镜像构建和业务 yaml 文件修改
- 配置 Rancher-Fleet 检测存放部署 yaml 的项目,有更新后自动部署到对应环境中
点击持续交付功能创建 Fleet 规则
![](https://img-blog.csdnimg.cn/34c11bcb73514d6595c754462ec63b00.png)
配置对接 git 仓库存放应用部署 yaml 的路径
![](https://img-blog.csdnimg.cn/5791ebcc3c9448478a7d5a4c4cf3d400.png)
可以选择部署到全部集群还是指定集群,或通过标签灵活定义的集群组中
![](https://img-blog.csdnimg.cn/617e6170b64641319655e8eb376f5f0e.png)
完成后可以看见应用部署的状态,后续也会实时检测 git 仓库中的变化,进行自动部署
![](https://img-blog.csdnimg.cn/b6c1effc946a46659f6415b0f2c47689.png)
多集群监控
每个集群可以部署独立的 Prometheus,对单独集群进行监控,可支持对容器云平台以下维度的监控:
- 集群总体资源使用情况
- 节点资源使用情况
- 组件性能监控
- 应用容器 POD 资源使用监控
但在多集群场景下,单独集群监控需要一个一个点进去,并且人工分析数据,更大的作用是故障后的问题排查,并不能很好地提前发现问题。更好的处理方式是将纳管的全部集群监控数据进行汇总和分析展示。如:内存、CPU、网络流量最高的 top 10(集群、主机、POD);重启次数最多的 top 10 POD;全部集群 Error 事件统一展示;以便更好地帮助平台运维提前发现风险点。
![](https://img-blog.csdnimg.cn/bb3752c0041b414782bc17f0c6edfc59.png)
全局监控主要通过 Thanos 实现,会在每个集群的 Prometheus 上通过 Thanos sidecar。对于单个集群的短期数据,Prometheus 通过 local-pv 存储到本地磁盘;而长期数据则通过 Thanos-sidecar 存储到 s3 协议的对象存储中。
![](https://img-blog.csdnimg.cn/78d51aa2b8734f66b113416a86c6347c.png)
安全
随着 Kubernetes 在业务中的广泛使用,容器安全问题正逐步受到重视。容器云平台的安全涉及到镜像安全、集群安全以及容器运行时安全,同时也涉及到租户网络隔离、用户及用户权限控制。Rancher 集成了容器安全平台 SUSE NeuVector,可以更好地保护用户的平台安全。
NeuVector 本身也支持多集群管理、策略统一下发和规则统一管理。
![](https://img-blog.csdnimg.cn/0eb6ac6a0efc4331a985f3a0972e8f42.png)
审计日志
为了满足我国本土用户需求,Rancher 企业版在 UI上集成了多维度审计日志展示功能(什么人在什么时间操作了什么资源对象,结果是什么)。通过审计日志,平台管理员可以快速查看到平台的操作记录,方便进行审计。
![](https://img-blog.csdnimg.cn/256921123eaa4b9995c9a2bb131e8521.png)
准入策略控制及网络微隔离
SUSE NeuVector 是业界首个 100% 开源的零信任容器安全平台,在 Rancher 新版本中已经进行了集成,可直接部署使用。NeuVector 可实现以下功能
![](https://img-blog.csdnimg.cn/1445a77901044653b8f38808cf3772d9.png)
1、准入策略控制
进入NeuVector进行配置
![](https://img-blog.csdnimg.cn/c556fbdcf1254f05918cb91bdba95659.png)
![](https://img-blog.csdnimg.cn/2955e4affb9a4da7b70cd8df99cc1044.png)
2、在准入控制菜单添加以下策略
由于容器运行期间会共享宿主机的内核、存储和端口,所以在实际生产环境中,误操作或平台被入侵将影响宿主机上其他应用 Pod 的正常运行,因此需要针对集群进行 Pod 的安全策略控制,以此来保证主机安全。
- 禁止使用特权容器
- 禁止从父进程获取更多权限
- 限制使用主机 IPC
- 限制只能只读根文件系统
- 限制 HostPath 路径
- 限制 HostPort 使用范围
3、网络动态微隔离
集群内 POD 间需要进行网络微隔离,提高安全性,避免 POD 被入侵后互相影响。NeuVector 将每个 workload 识别为一个组,通过对组进行策略控制,并且每个组默认会自动学习对应的网络连接规则和启动进程,并生成白名单。
NeuVector 的组支持 3 种模式:学习模式、监控模式和保护模式。各个模式实现作用如下。
-
学习模式:学习和记录容器、主机间网络连接情况和进程执行信息。自动构建网络规则白名单,保护应用网络正常行为。为每个服务的容器中运行的进程设定安全基线,并创建进程配置文件规则白名单。
-
监控模式:NeuVector 监视容器和主机的网络和进程运行情况,遇到非学习模式下记录的行为将在 NeuVector 中进行告警。监控模式不会消耗资源。
-
保护模式:NeuVector 监视容器和主机的网络和进程运行情况,遇到非学习模式下记录的行为直接拒绝。保护模式是直接拒绝非白名单的访问请求,执行器需要 CPU 和内存通过深度数据包检查来过滤连接,进行判断处理,所以会消耗更多的 CPU 资源。
新建的容器业务自动发现后默认为学习模式,也可以通过设置将默认模式设置为监控模式或保护模式。
总结
总之,Rancher 的多集群管理能力(多集群管理、多集群应用统一发布、多集群监控)和 Kubernetes 生命周期安全支持可以帮助企业提升部署效率,降低运维成本,是出海企业进行全球化部署的明智选择。