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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 本文将主要为您介绍如何实现对公共云 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


相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
16天前
|
运维 Kubernetes 监控
Kubernetes 集群的持续性能优化实践
【4月更文挑战第26天】 在动态且不断增长的云计算环境中,维护高性能的 Kubernetes 集群是一个挑战。本文将探讨一系列实用的策略和工具,旨在帮助运维专家监控、分析和优化 Kubernetes 集群的性能。我们将讨论资源分配的最佳实践,包括 CPU 和内存管理,以及集群规模调整的策略。此外,文中还将介绍延迟和吞吐量的重要性,并提供日志和监控工具的使用技巧,以实现持续改进的目标。
|
2天前
|
存储 运维 监控
Kubernetes 集群的持续监控与性能优化策略
【5月更文挑战第11天】在微服务架构日益普及的当下,Kubernetes 已成为容器编排的事实标准。随着其在不同规模企业的广泛采用,如何确保 Kubernetes 集群的高效稳定运行变得至关重要。本文将探讨一套系统的 Kubernetes 集群监控方法,并结合实践经验分享针对性能瓶颈的优化策略。通过实时监控、日志分析与定期审计的结合,旨在帮助运维人员快速定位问题并提出解决方案,从而提升系统的整体表现。
|
4天前
|
Kubernetes Java API
Kubernetes详解(三)——Kubernetes集群组件
Kubernetes详解(三)——Kubernetes集群组件
15 1
|
9天前
|
运维 监控 Kubernetes
Kubernetes 集群的监控与维护策略
【5月更文挑战第4天】 在当今微服务架构盛行的时代,容器化技术已成为软件开发和部署的标准实践。Kubernetes 作为一个开源的容器编排平台,因其强大的功能和灵活性而广受欢迎。然而,随着 Kubernetes 集群规模的扩大,集群的监控和维护变得日益复杂。本文将探讨 Kubernetes 集群监控的重要性,分析常见的监控工具,并提出一套有效的集群维护策略,以帮助运维人员确保集群的健康运行和高可用性。
40 10
|
10天前
|
存储 运维 监控
Kubernetes 集群的持续监控与优化策略
【5月更文挑战第3天】在微服务架构和容器化部署日益普及的背景下,Kubernetes 已成为众多企业的首选容器编排平台。然而,随着集群规模的增长和业务复杂度的提升,有效的集群监控和性能优化成为确保系统稳定性和提升资源利用率的关键。本文将深入探讨针对 Kubernetes 集群的监控工具选择、监控指标的重要性解读以及基于数据驱动的性能优化实践,为运维人员提供一套系统的持续监控与优化策略。
|
12天前
|
运维 Kubernetes 监控
Kubernetes 集群的监控与维护策略
【4月更文挑战第30天】 在现代云计算环境中,容器化技术已成为应用程序部署和管理的重要手段。其中,Kubernetes 作为一个开源的容器编排平台,以其强大的功能和灵活性受到广泛欢迎。然而,随之而来的是对 Kubernetes 集群监控和维护的复杂性增加。本文将探讨针对 Kubernetes 集群的监控策略和维护技巧,旨在帮助运维人员确保集群的稳定性和高效性。通过分析常见的性能瓶颈、故障诊断方法以及自动化维护工具的应用,我们将提供一套实用的解决方案,以优化 Kubernetes 环境的性能和可靠性。
|
12天前
|
运维 Kubernetes 监控
Kubernetes集群的持续性能优化策略
【4月更文挑战第30天】 在动态且不断扩展的云计算环境中,保持应用性能的稳定性是一个持续的挑战。本文将探讨针对Kubernetes集群的持续性能优化策略,旨在为运维工程师提供一套系统化的性能调优框架。通过分析集群监控数据,我们将讨论如何诊断常见问题、实施有效的资源管理和调度策略,以及采用自动化工具来简化这一过程。
|
13天前
|
Prometheus 监控 Kubernetes
Kubernetes 集群的监控与日志管理策略
【4月更文挑战第30天】 在微服务架构日益普及的当下,容器化技术与编排工具如Kubernetes成为了运维领域的重要话题。有效的监控和日志管理对于保障系统的高可用性和故障快速定位至关重要。本文将探讨在Kubernetes环境中实施监控和日志管理的最佳实践,包括选用合适的工具、部署策略以及如何整合这些工具来提供端到端的可见性。我们将重点讨论Prometheus监控解决方案和EFK(Elasticsearch, Fluentd, Kibana)日志管理堆栈,分析其在Kubernetes集群中的应用,并给出优化建议。
|
13天前
|
Kubernetes 应用服务中间件 nginx
K8S二进制部署详解,一文教会你部署高可用K8S集群(二)
K8S二进制部署详解,一文教会你部署高可用K8S集群(二)
|
13天前
|
Kubernetes 网络安全 数据安全/隐私保护
K8S二进制部署详解,一文教会你部署高可用K8S集群(一)
K8S二进制部署详解,一文教会你部署高可用K8S集群(一)

相关产品

  • 容器服务Kubernetes版