Rancher 全球化部署最佳实践

云计算 创建于:2023-05-28

作者

万绍远,CNCF 基金会官方认证 Kubernetes CKA&CKS 工程师,云原生解决方案架构师。对 ceph、Openstack、Kubernetes、prometheus 技术和其他云原生相关技术有较深入的研究。参与设计并实施过多个金融、保险、制造业等多个行业 IaaS 和 PaaS 平台设计和应用云原生改造指导。

“大航海”时代,国内企业纷纷在出海赛道上扬帆起航。伴随着业务出海,系统也要做全球化部署,公有云成为了出海企业的首选。

但是,Kubernetes 在企业落地过程中仍然面临诸多挑战:

  • 需要经验丰富的 IT 人员对 Kubernetes 集群进行部署、升级、监控, 确保系统可靠性。
  • 多个 Kubernetes 集群如何进行统一策略管理、安全管控,实现集中式的可视化管控和一致性运维 ?
  • 如何利用 Kubernetes 和周边生态技术栈,更高效地迭代和交付业务应用 ?

Rancher 就是一款很好的工具,能够通过其多集群管理能力和 Kubernetes 生命周期安全支持,帮助出海业务提高部署效率,降低运维成本。

多集群统一纳管

Rancher 全球化部署最佳实践_Kubernetes

业务出海需要重点评估平滑迁移成本。容器是非常好的应用载体,诸多企业考虑在海外公有云使用 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 集群进行统一纳管,通过专线连接。

Rancher 全球化部署最佳实践_K8s_02

使用 Rancher 部署 EKS 集群示例

AWS 配置:

1、在 AWS 中提前创建 VPC 和安全组

2、添加 IAM 权限,创建策略:​​https://docs.ranchermanager.rancher.io/zh/reference-guides/amazon-eks-permissions/minimum-eks-permissions​

Rancher 全球化部署最佳实践_Kubernetes_03

3、创建用户关联此策略

Rancher 全球化部署最佳实践_Rancher_04

Rancher 全球化部署最佳实践_Rancher_05

Rancher 配置

1、创建集群

Rancher 全球化部署最佳实践_Rancher_06

2、选择 EKS

Rancher 全球化部署最佳实践_Kubernetes_07

3、选择对应的区域和配置信息

Rancher 全球化部署最佳实践_K8s_08

填写生成的账户 Access-key 和 Secret-key

Rancher 全球化部署最佳实践_Rancher_09

4、配置 VPC 和子网

Rancher 全球化部署最佳实践_K8s_10

5、配置节点主机规格

6、集群创建完成

Rancher 全球化部署最佳实践_Kubernetes_11

对应的 AWS 页面也能看见创建的集群。在 Rancher UI 创建负载均衡和创建 PVC 也会自动在 AWS 中创建

Rancher 全球化部署最佳实践_Rancher_12

多集群统一发布

跨集群应用克隆

当实现多集群纳管后也带来一个问题:用户在测试集群部署服务验证可用以后,如何快速地将应用直接发布到生产集群?如果只能在生产集群中手动创建应用,在手动配置过程中容易出现参数丢失等问题。

为了解决这些问题,Rancher 企业版从设计之初就新增了跨集群应用克隆的功能,可以一键将某一集群的应用发布到其他集群,减少用户手动配置的工作量。 同时用户还可以通过跨集群应用克隆功能,提前将应用备份到其他集群,一旦有集群崩溃的情况出现,可以马上切换流量到其他集群提供服务,快速实现应用的恢复。

Rancher 全球化部署最佳实践_Rancher_13

Rancher 全球化部署最佳实践_Kubernetes_14

Gitops 统一发布

同时 Rancher 也内置了 Gitops 工具 Fleet,实现海量集群同步分发

Rancher 全球化部署最佳实践_Kubernetes_15

Rancher 全球化部署最佳实践_Kubernetes_16

  • 将应用代码和构建 Docker 镜像的 Dockerfile 文件放置到 Gitlab 对应项目中
  • 在 Gitlab 中创建用于专门用于存放部署 yaml 的项目
  • 配置 CI 工具用于代码编译镜像构建和业务 yaml 文件修改
  • 配置 Rancher-Fleet 检测存放部署 yaml 的项目,有更新后自动部署到对应环境中

点击持续交付功能创建 Fleet 规则

Rancher 全球化部署最佳实践_K8s_17

配置对接 git 仓库存放应用部署 yaml 的路径

Rancher 全球化部署最佳实践_K8s_18

可以选择部署到全部集群还是指定集群,或通过标签灵活定义的集群组中

Rancher 全球化部署最佳实践_Rancher_19

完成后可以看见应用部署的状态,后续也会实时检测 git 仓库中的变化,进行自动部署

Rancher 全球化部署最佳实践_Kubernetes_20

多集群监控

每个集群可以部署独立的 Prometheus,对单独集群进行监控,可支持对容器云平台以下维度的监控:

  • 集群总体资源使用情况
  • 节点资源使用情况
  • 组件性能监控
  • 应用容器 POD 资源使用监控

但在多集群场景下,单独集群监控需要一个一个点进去,并且人工分析数据,更大的作用是故障后的问题排查,并不能很好地提前发现问题。更好的处理方式是将纳管的全部集群监控数据进行汇总和分析展示。如:内存、CPU、网络流量最高的 top 10(集群、主机、POD);重启次数最多的 top 10 POD;全部集群 Error 事件统一展示;以便更好地帮助平台运维提前发现风险点。

Rancher 全球化部署最佳实践_Kubernetes_21

全局监控主要通过 Thanos 实现,会在每个集群的 Prometheus 上通过 Thanos sidecar。对于单个集群的短期数据,Prometheus 通过 local-pv 存储到本地磁盘;而长期数据则通过 Thanos-sidecar 存储到 s3 协议的对象存储中。

Rancher 全球化部署最佳实践_Kubernetes_22

安全

随着 Kubernetes 在业务中的广泛使用,容器安全问题正逐步受到重视。容器云平台的安全涉及到镜像安全、集群安全以及容器运行时安全,同时也涉及到租户网络隔离、用户及用户权限控制。Rancher 集成了容器安全平台 SUSE NeuVector,可以更好地保护用户的平台安全。

NeuVector 本身也支持多集群管理、策略统一下发和规则统一管理。

Rancher 全球化部署最佳实践_Kubernetes_23

审计日志

为了满足我国本土用户需求,Rancher 企业版在 UI上集成了多维度审计日志展示功能(什么人在什么时间操作了什么资源对象,结果是什么)。通过审计日志,平台管理员可以快速查看到平台的操作记录,方便进行审计。

Rancher 全球化部署最佳实践_Kubernetes_24

准入策略控制及网络微隔离

SUSE NeuVector 是业界首个 100% 开源的零信任容器安全平台,在 Rancher 新版本中已经进行了集成,可直接部署使用。NeuVector 可实现以下功能

Rancher 全球化部署最佳实践_Kubernetes_25

1、准入策略控制

进入NeuVector进行配置

Rancher 全球化部署最佳实践_Rancher_26

Rancher 全球化部署最佳实践_K8s_27

2、在准入控制菜单添加以下策略

由于容器运行期间会共享宿主机的内核、存储和端口,所以在实际生产环境中,误操作或平台被入侵将影响宿主机上其他应用 Pod 的正常运行,因此需要针对集群进行 Pod 的安全策略控制,以此来保证主机安全。

  • 禁止使用特权容器
  • 禁止从父进程获取更多权限
  • 限制使用主机 IPC
  • 限制只能只读根文件系统
  • 限制 HostPath 路径
  • 限制 HostPort 使用范围

3、网络动态微隔离

集群内 POD 间需要进行网络微隔离,提高安全性,避免 POD 被入侵后互相影响。NeuVector 将每个 workload 识别为一个组,通过对组进行策略控制,并且每个组默认会自动学习对应的网络连接规则和启动进程,并生成白名单。

NeuVector 的组支持 3 种模式:学习模式、监控模式和保护模式。各个模式实现作用如下。

  • 学习模式:学习和记录容器、主机间网络连接情况和进程执行信息。自动构建网络规则白名单,保护应用网络正常行为。为每个服务的容器中运行的进程设定安全基线,并创建进程配置文件规则白名单。
  • 监控模式:NeuVector 监视容器和主机的网络和进程运行情况,遇到非学习模式下记录的行为将在 NeuVector 中进行告警。监控模式不会消耗资源。
  • 保护模式:NeuVector 监视容器和主机的网络和进程运行情况,遇到非学习模式下记录的行为直接拒绝。保护模式是直接拒绝非白名单的访问请求,执行器需要 CPU 和内存通过深度数据包检查来过滤连接,进行判断处理,所以会消耗更多的 CPU 资源。

新建的容器业务自动发现后默认为学习模式,也可以通过设置将默认模式设置为监控模式或保护模式。

总结

总之,Rancher 的多集群管理能力(多集群管理、多集群应用统一发布、多集群监控)和 Kubernetes 生命周期安全支持可以帮助企业提升部署效率,降低运维成本,是出海企业进行全球化部署的明智选择。

原文地址:https://blog.51cto.com/u_12462495/5873719

免责声明:本文来源于互联网,版权归合法拥有者所有,如有侵权请公众号联系管理员

* 本站提供的一些文章、资料是供学习研究之用,如用于商业用途,请购买正版。

RancherLabs