互动赠书 | 云上云下K8s多集群如何实现集群管理和安全治理的一致体验?

简介: 本文将主要为您介绍如何实现对公共云 ACK 集群和数据中心自建 Kubernetes 集群一致体验的集群管理和安全治理。

作者| 郝树伟(流生)


以 Kubernetes 为代表的云原生技术不仅屏蔽了各个云厂商和数据中心在基础设施上的差异性,还使得应用可以在不同的云上使用标准化的方式描述和部署运行。在此基础之上,我们才可以低成本管理处于任何地理位置的 Kubernetes 集群。本文将主要为您介绍如何实现对公共云 ACK 集群和数据中心自建 Kubernetes 集群一致体验的集群管理和安全治理。


ACK 注册集群安全架构


要实现对公共云 ACK 集群和数据中心自建 Kubernetes 集群一致体验的集群管理和安全治理,就必须先将其统一到同一控制平面,ACK 注册集群允许处于任何地理位置的自建 Kubernetes 集群通过公网或私网(云上云下网络打通)连接端点接入阿里云容器服务管理系统。下面是 ACK 注册集群的架构示意图:


1.png


在 ACK 注册集群架构示意图中,主要包括以下几个组成部分:


  • ACK 容器服务控制台。

  • ACK 注册集群 Agent 组件:Agent 组件以 Deployment 的形式部署在自建 Kubernetes 集群中(或者其他云厂商的容器集群中),用于接收 ACK 注册集群 Stub 组件(使用 ACK 容器服务控制台或 ACK 注册集群 kubeconfig)下发的请求,并将其转发给目标集群的 Kubernetes API Server,同时接收 Kubernetes API Server的响应并将其发送回 Stub 组件。

  • ACK 注册集群 Stub 组件:Stub组件部署的容器服务管控侧,每一个注册集群都对应一个 Stub 组件,用于代理转发 ACK 容器服务控制台或 ACK 注册集群 kubeconfig 访问集群产生的请求,转发到 Agent 组件并接收来自 Agent 组件的响应,最终返回响应到用户端。

  • Kubernetes API Server:目标自建 Kubernetes 集群或其他云厂商容器集群的 Kubernetes API Server。


单向注册双向通信


前面我们提到,ACK 注册集群可以接入处于任何地理位置的自建 Kubernetes 集群,数据中心内自建的 Kubernetes 集群有一个特点就是通常情况下,这些自建集群处于一个受限的私有网络环境下,只能集群出公网访问外部环境。ACK 注册集群为了解决这个问题,将 Stub/Agent 组件设计为 Agent 主动单向注册到 Stub 组件,Agent 连接 Stub 时,会带上预先生成的 token 和证书等信息进行验证,整个通信链路采用 TLS 协议确保数据加密。


2.png


非“托管式”安全接入机制


通过 ACK 注册集群将自建 Kubernetes 集群接入到阿里云容器服务管控系统,用户最大的安全担忧就是自有集群访问权限的管理和控制,我们通过以下几点来保证用户对自有集群的绝对安全控制。


  • ACK 管控侧不存储用户自有集群的任何秘钥信息。用户自建 Kubernetes 集群拥有自己的一套证书体系,如果 ACK 注册集群使用用户自建 Kubernetes 集群的 kubeconfig 对其进行访问,那么势必会造成用户集群访问权限的不可控。实际上,无论是从安全角度考虑,还是从管控侧一致性体验的角度考虑,都要求我们通过 ACK 注册集群来屏蔽管控侧与用户自建集群证书体系的差异性。那么具体的解法就是管控侧会使用 ACK 统一颁发的证书体系访问注册集群 Stub 组件,在 Stub 和 Agent 组件完成请求认证后,经由 Agent 以身份扮演的方式向目标 API Server作 7 层代理转发,最终在 API Server 完成请求的 RBAC 鉴权和审计,如下图所示。


3.png


  • 集群访问权限的管控收敛到 Agent 组件。Agent 组件部署在用户自建集群中,ACK 管控侧通过 Stub/Agent 链路访问用户自建集群的权限收敛在 Agent 组件侧,这样可以保证用户对自有集群访问权限的全权控制。


  • Agent 组件“非侵入式”部署。Agent 组件以 Deployment 的形式部署在自建 Kubernetes 集群中,不对自建集群做任何更改和操作,后续会将 Agent 组件的源码开源出来。


  • 支持开启安全审计。用户可以在注册集群中开启安全审计功能,任何对集群的操作都可以进行查询和审计。


一致体验的集群管理


假设当前用户 A 已经在公共云创建了一个 ACK 集群,在数据中心内创建了一个自建 Kubernetes 集群,那么如何使用一致的体验来管理这两个处于不同云环境的 Kubernetes 集群呢?很简单,创建一个 ACK 注册集群并接入自建集群即可。


创建 ACK 注册集群


我们只需在 ACK 容器服务控制台创建注册集群页面选择离自建 Kubernetes 集群地理位置最近的区域并配置 VPC 网络和安全组,3 分钟即可完成注册集群的创建,如下图所示。
image.gif

4.png


集群详情页面可以看到连接信息中分别有一个用于公网接入和私网接入自建 Kubernetes 集群的集群导入代理配置,如下图所示:


5.png


接入自建 Kubernetes 集群


在自建 Kubernetes 集群中部署上述集群导入代理配置:


$ kubectl apply -f agent.yaml


agent 组件运行正常后,我们就可以在 ACK 容器服务控制台查看集群列表,如下图所示,名为 ack 的集群为 ACK 托管版集群,Kubernete 版本为 1.20.4-aliyun.1,名为 idc-k8s 的集群为 ACK 注册集群,接入的是用户自建的 Kubernetes 集群,Kubernetes版本为 1.19.4。


6.png


使用注册集群 idc-k8s 即可管理自建 Kubernetes 集群,集群概览信息和节点列表信息如下图所示。


7.png

8.png


接下来,用户就可以通过 ACK 容器服务控制台,使用一致体验来对云上云下集群进行集群管理、节点管理、应用管理和运维等操作。


一致体验的安全治理


在使用不同云平台上的 Kubernetes 集群时,不同云平台的安全治理能力和安全策略配置及管理方式也都不尽相同,这种参差不齐的安全治理能力会导致运维团队在定义用户角色、访问权限的时候都每个云平台的安全管理机制都十分熟悉,如果管理和安全访问控制能力不足,则非常容易出现角色违规、访问管理风险等问题。


例如,在一个各种项目都在使用 Kubernetes 容器集群,且容器集群属于不同的云平台的场景下,管理员需要能够将所有用户和他们的活动都引导到对应的容器集群,这样才能知道谁在什么时候做了什么,你可能会遇到有多个账户需要分别设置不同的访问层级,或者有越来越多的人加入、离开、变换团队和项目的情况,如何管理这些用户的权限会变得越来越复杂。ACK 注册集群从以下几个方面为自建 Kubernetes 集群提供安全治理能力一致性体验。


使用阿里云主子账号认证体系和 Kubernetes RBAC 鉴权体系管理集群访问控制


假设当前企业内有 2 个不同工作职责的用户,分别是开发人员 testuser01,测试人员 testuser02,那么管理员就可以为开发和测试人员创建子账号 testuser01 和 testuser02,接下来根据开发测试人员工作职责的不同,分配 ack 集群和 idc-k8s 集群的以下权限:


  • 开发人员 testuser01,授予 ack 集群所有命名空间的读写权限,授予 idc-k8s 集群test 命名空间的读写权限。


  • 测试人员testuser02,只授予idc-k8s集群test命名空间的读写权限。


使用主账号为开发人员 testuser01 和测试人员 testuser02 授权,在ACK容器服务控制台授权管理中选择对应的 testuser01 和 testuser02 子账号,授权配置分别如下图所示:


9.png


按照向导完成 testuser01 和 testuser02 的授权后,使用子账号 testuser01 登录容器服务控制台可以测试 testuser01 对 ack 集群所有命名空间拥有读写权限,只对 idc-k8s 集群test命名空间拥有读写权限。


10.png

11.png


使用子账号 testuser02 登录容器服务控制台可以测试 testuser02 看不到 ack 集群,且只对 idc-k8s 集群 test 命名空间拥有读写权限。
image.gifimage.gif

12.png

13.png


集群审计


在 Kubernetes 集群中,API Server 的审计日志可以帮助集群管理人员记录或追溯不同用户的日常操作,是集群安全运维中重要的环节。在注册集群中可以使用集群审计功能帮助用户可视化追溯不同用户的日常操作。


下面是自建 Kubernetes 集群的日志审计示例。image.gif


14.png


配置巡检


配置巡检功能可以用来扫描集群中 Workload 配置的安全隐患,提供巡检详情和报告,对结果进行分析解读,帮助用户实时了解当前状态下运行应用的配置是否有安全隐患。


下面是自建 Kubernetes 集群的巡检详情示例。


15.png

16.png

17.png


赠书福利


赠书海报.png


  • 你认为在本地数据中心中自建 Kubernetes 集群面临的最大挑战是什么?
  • 你认为在云上云下 Kubernetes 多集群管理的场景下,最大的痛点是什么?
  • 你认为云原生技术为多云/混合云架构带来哪些优势?

如果你对以上任一问题有自己的观点,11 月 1 日 18:00 前,欢迎你发表在留言区和大家探讨,阿里巴巴云原生公众号将精选留言点赞前 3 位,各送出阿里云容器服务技术专家郝树伟新著《多云和混合云:云原生多集群和应用管理》一书。期待你的交流!


作者简介


郝树伟(流生),阿里云容器服务技术专家,云原生分布式云团队核心成员,专注于云原生多集群的统一管理和调度、混合集群、应用交付和迁移等云原生技术的研究。

点击阅读原文,查看相关视频解读~


近期热门

#从实践出发,解锁 Serverless 的不同面#

11 月 1 日(下周一)晚上20:00

海报.png




扫描下方二维码或者搜索微信号(AlibabaCloud888)添加云原生小助手加入社群,直播间见不散!入群即可获云原生一手资讯~


二维码.png


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
7月前
|
人工智能 算法 调度
阿里云ACK托管集群Pro版共享GPU调度操作指南
本文介绍在阿里云ACK托管集群Pro版中,如何通过共享GPU调度实现显存与算力的精细化分配,涵盖前提条件、使用限制、节点池配置及任务部署全流程,提升GPU资源利用率,适用于AI训练与推理场景。
622 1
|
7月前
|
弹性计算 监控 调度
ACK One 注册集群云端节点池升级:IDC 集群一键接入云端 GPU 算力,接入效率提升 80%
ACK One注册集群节点池实现“一键接入”,免去手动编写脚本与GPU驱动安装,支持自动扩缩容与多场景调度,大幅提升K8s集群管理效率。
448 89
|
12月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
本文介绍如何利用阿里云的分布式云容器平台ACK One的多集群应用分发功能,结合云效CD能力,快速将单集群CD系统升级为多集群CD系统。通过增加分发策略(PropagationPolicy)和差异化策略(OverridePolicy),并修改单集群kubeconfig为舰队kubeconfig,可实现无损改造。该方案具备多地域多集群智能资源调度、重调度及故障迁移等能力,帮助用户提升业务效率与可靠性。
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
ACK One 的多集群应用分发,可以最小成本地结合您已有的单集群 CD 系统,无需对原先应用资源 YAML 进行修改,即可快速构建成多集群的 CD 系统,并同时获得强大的多集群资源调度和分发的能力。
874 9
|
弹性计算 Kubernetes 数据处理
KubeRay on ACK:更高效、更安全
阿里云 ACK 以托管组件化的方式给客户提供快速搭建Ray集群的能力,并通过结合使用阿里云的调度,存储,日志与监控,给用户提供更佳使用体验。
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
1183 33
|
Kubernetes 开发者 Docker
集群部署:使用Rancher部署Kubernetes集群。
以上就是使用 Rancher 部署 Kubernetes 集群的流程。使用 Rancher 和 Kubernetes,开发者可以受益于灵活性和可扩展性,允许他们在多种环境中运行多种应用,同时利用自动化工具使工作负载更加高效。
765 19
|
人工智能 分布式计算 调度
打破资源边界、告别资源浪费:ACK One 多集群Spark和AI作业调度
ACK One多集群Spark作业调度,可以帮助您在不影响集群中正在运行的在线业务的前提下,打破资源边界,根据各集群实际剩余资源来进行调度,最大化您多集群中闲置资源的利用率。
|
人工智能 运维 Kubernetes
2025 超详细!Lens Kubernetes IDE 多平台下载安装与集群管理教程
Lens 是一款企业级 Kubernetes 可视化操作平台,2025版实现了三大技术革新:AI智能运维(异常检测准确率98.7%)、多云联邦管理(支持50+集群)和实时3D拓扑展示。本文介绍其安装环境、配置流程、核心功能及高阶技巧,帮助用户快速上手并解决常见问题。适用于 Windows、macOS 和 Ubuntu 系统,需满足最低配置要求并前置依赖组件如 kubectl 和 Helm。通过 Global Cluster Hub 实现多集群管理,AI辅助故障诊断提升运维效率,自定义监控看板和插件生态扩展提供更多功能。
|
Prometheus Kubernetes 监控
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
542 0
OpenAI故障复盘丨如何保障大规模K8s集群稳定性

相关产品

  • 容器服务Kubernetes版
  • 推荐镜像

    更多