Rancher 全球化部署最佳实践

2023-11-17

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

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

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

  • 需要经验丰富的 IT 人员对 Kubernetes 集群进行部署、升级、监控, 确保系统可靠性。

  • 多个 Kubernetes 集群如何进行统一策略管理、安全管控,实现集中式的可视化管控和一致性运维 ?

  • 如何利用 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 部署 EKS 集群示例

AWS 配置:

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

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

3、创建用户关联此策略

Rancher 配置

1、创建集群

2、选择 EKS

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

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

4、配置 VPC 和子网

5、配置节点主机规格

6、集群创建完成

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

多集群统一发布

跨集群应用克隆

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

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


Gitops 统一发布

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


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

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

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

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

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

多集群监控

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

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

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

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

安全

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

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

审计日志

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

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

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

1、准入策略控制

进入NeuVector进行配置


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

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

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

3、网络动态微隔离

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

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

  • 学习模式:学习和记录容器、主机间网络连接情况和进程执行信息。自动构建网络规则白名单,保护应用网络正常行为。为每个服务的容器中运行的进程设定安全基线,并创建进程配置文件规则白名单。

  • 监控模式:NeuVector 监视容器和主机的网络和进程运行情况,遇到非学习模式下记录的行为将在 NeuVector 中进行告警。监控模式不会消耗资源。

  • 保护模式:NeuVector 监视容器和主机的网络和进程运行情况,遇到非学习模式下记录的行为直接拒绝。保护模式是直接拒绝非白名单的访问请求,执行器需要 CPU 和内存通过深度数据包检查来过滤连接,进行判断处理,所以会消耗更多的 CPU 资源。

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

总结

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rancher 全球化部署最佳实践 的相关文章

随机推荐

  • 利用ANSYS随机振动分析功能实现随机疲劳分析

    ANSYS随机振动分析功能可以获得结构随机振动响应过程的各种统计参数 如 均值 均方根和平均频率等 根据各种随机疲劳寿命预测理论就可以成功地预测结构的随机疲劳寿命 本文介绍了ANSYS随机振动分析功能 以及利用该功能 按照Steinberg
  • Android SDK Android NDK 官方下载地址

    Android SDK Android NDK 官方下载地址 Android NDK r6b Windows http dl google com android ndk android ndk r6b windows zip Mac OS
  • VisualStudio(2022)- 打包项目文件为.exe安装包

    目录 前言 一 安装扩展 二 制作安装包 setup文件 2 1 添加setup项目 2 2 配置setup项目 2 3 添加项目文件到setup项目中 扩展知识 三个文件夹说明 2 4 设置项目主输出 2 5 设置快捷方式 2 6 生成安
  • 数据结构--单链表的c语言实现(超详细注释/实验报告)

    数据结构 单链表的c语言实现 超详细注释 实验报告 知识小回顾 在顺序表中 用一组地址连续的存储单元来一次存放线性表的结点 因此结点的逻辑顺序和物理顺序是一致的 而链表则不然 链表是用一组任意的存储单元来存放线性表的结点 这组储存单元可以是
  • 面向对象之魔法方法

    目录 概念 魔法方法分类 构造与初始化 new new 的使用场景 init del 类的表示 str repr bool 访问控制 比较操作 eq ne lt gt 容器类操作 重要 可调用对象 序列化 getstate setstate
  • linux initcall机制

    Linux系统启动过程很复杂 因为它既需要支持模块静态加载机制也要支持动态加载机制 模块动态加载机制给系统提供了极大的灵活性 驱动程序既可支持静态编译进内核 也可以支持动态加载机制 Linux系统中对设备和子系统的初始化在最后进行 主要过程
  • 网关、路由、DNS详细解释

    网关 Gateway 又称网间连接器 协议转换器 网关在网络层以上实现网络互连 是最复杂的网络互连设备 仅用于两个高层协议不同的网络互连 网关既可以用于广域网互连 也可以用于局域网互连 针对普通客户来说 网关就是运营商的交换机端口地址 也就
  • AI 代码辅助工具-codeium(免费)---Android studio

    Codeium官网说明 JetBrains IDEs Tutorial Codeium Free AI Code Completion ChatCodeium offers best in class AI code completion
  • Linux 系统中的 SNMP Trap及常用OID

    浅谈 Linux 系统中的 SNMP Trap 转载 http www ibm com developerworks cn linux l cn snmp 本文讲解 SNMP Trap 在介绍 Trap 概念之前 首先认识一下 SNMP 吧
  • Windows 查看端口占用并关闭

    Windows 查看端口占用并关闭 在启动服务的时候 可能会遇到端口被占用的情况 这时就要知道哪个服务占用了这个端口 并将其关闭 然后再启动服务就不会存在端口占用了 这里以 Tomcat 的默认端口 7080 为例 一 打开命令窗口 Win
  • 概率图模型笔记(9-10)——Inference-Belief Propagation

    9 Inference Belief Propagation part1 9 1 Belief Propagation 9 1 1 聚类图 Cluster Graphs 聚类图即这样的一个无向图 节点是团 Ci X1 Xn C i sube
  • element-plus 组件解析 - Collapse 折叠面板

    element plus 组件解析 Collapse 折叠面板 1 组件介绍 2 组件组成 3 组件实现 3 1 el collapse 1 v model activeNames 2 手风琴效果 3 el collapse 关键逻辑 3
  • Vue 源码之Vue 响应式原理【完整版】

    写在前面 由于昨天写的文章 Vue 源码之Vue视图更新原理 一 与今天的内容代码有些相关联 所以开头先进行简单的回顾阐述 也方便对内容进行完整的阅读 Vue 视图更新原理 Vue 的视图更新原理主要涉及的是响应式相关API Object
  • 深入理解PHP内存管理之谁动了我的内存

    作者 Laruence 本文地址 http www laruence com 2011 03 04 1894 html 转载请注明出处 首先让我们看一个问题 如下代码的输出 var dump memory get usage a larue
  • Ubuntu18.04——正确安装英伟达(NVIDIA)显卡驱动的一种简便方法

    Ubuntu18 04 正确安装英伟达 NVIDIA 显卡驱动的一种简便方法 前提说明 1 打开软件和更新 附加驱动 选中下图所示项并点击应用更改 已经是的话 就不用更改 2 连上网络 打开终端 依次输入以下命令 3 退出终端 重新启动电脑
  • php后台接收blob文件流,如何从php中的BLOB播放流音频?

    我有这个smartReadFile php函数 它允许从文件播放音频流 你将如何修改此函数 以便查询mysql数据库BLOB而不是读取特定文件 function smartReadFile location filename mimeTyp
  • 百川AI大模型开放内测,你的AI工具箱里又多了一个选择

    日前国内大模型开源市场又多了一个猛将 百川智能 厂商卷 消费者就受益 这块模型由原搜狗创始人带队研发 背后融合有一些搜索的思路 日前公开了其53B的大模型 未来的企业应用上又多了一份选择 https www baichuan ai com
  • Java常用实用类总结

    常用实用类总结 这应该算是我写的第一篇比较正式的文章了 主要介绍一下我门经常用到的一些常用实用类 主要包括 String类 StringBuffer类 StringTokenizer类 Date类 Calender类 Math类 BigIn
  • Qt—事件处理

    Qt中 事件作为一个对象 继承自QEvent类 常见的有键盘事件QKeyEvent 鼠标事件QMouseEvent和定时器事件QTimerEvent等 Qt中 任何QObject子类示例都可以接收和处理事件 实际编程中通常实现部件的pain
  • Rancher 全球化部署最佳实践

    作者 万绍远 CNCF 基金会官方认证 Kubernetes CKA CKS 工程师 云原生解决方案架构师 对 ceph Openstack Kubernetes prometheus 技术和其他云原生相关技术有较深入的研究 参与设计并实施