# 5.0 容器管理能力介绍 自 2013 年 Docker 开源以来,以 Docker 为代表的容器技术为软件行业带来了颠覆性的变革。数字经济成为当代经济发展的重要驱动力量。 基础设施云化,软件云原生化已成了整个社会科技发展的必然趋势。以金融行业为代表,传统制造业为基石的各行各业都在积极拥抱和探索这一技术发展的新趋势。 云原生技术抽象了底层基础设施,使开发人员能够专注于应用本身开发,而无需担心底层系统架构等运维问题,让应用更加弹性、高效。 Daocloud 第五代[容器管理 (Kpanda)](../kpanda/intro/index.md)是基于 Kubernetes 开源技术构建的面向云原生工作负载的容器管理平台,基于原生多云架构,完全解耦底层基础设施平台, 实现多云与多集群统一化管理,进一步简化企业的应用上云流程,降低运维管理和人力成本。 支持一键式创建 Kubernetes 集群,帮助企业快速搭建企业级的容器云平台。 容器管理的主要功能如下: ![容器管理功能](https://docs.daocloud.io/daocloud-docs-images/docs/blogs/images/kpanda01.jpeg) **集群管理** - 多云多集群统一纳管,支持所有特定版本范围内的任意 Kubernetes 集群纳入容器管理管理范围,实现云上云下多云、混合云容器云平台的统一纳管。 - 集群快速部署,通过 Web 界面快速部署企业级的 Kubernetes 集群,快速搭建企业级容器云台,适配物理机和虚拟机底层环境。 - 集群一键升级,支持一键升级集群 Kubernetes 版本。 - 集群高可用,内置集群容灾、备份能力,支持业务系统在主机故障、机房中断、自然灾害等情况下快速恢复,进一步提高生产环境的稳定性,降低业务中断风险。 **节点管理** - 支持对管理集群和基于管理集群创建的工作集群内的节点进行全生命周期管理。 - 实时监控节点状态。支持实时对节点和节点上运行的容器组状态进行监控。 - 支持采用界面 CloudShell 的方式登录并管理节点。 - 提供对节点的调度策略、标签、污点、注解等进行管理的基础云原生能力。 **负载管理** - 一站式部署,解耦底层 Kubernetes 平台,一站式部署和运维业务应用,实现工作负载的全生命周期管理。 - 工作负载负载的扩缩容,通过界面可实现工作负载负载的手动/自动扩缩容能力,自定义扩缩容策略,应对流量高峰。 - 工作负载的全生命周期,支持工作负载查看,更新,删除,回滚,时间查看以及升级等全生命周期管理。 - 跨集群负载统一管理能力。 **插件管理** - 内置 DaoCloud 自研核心插件库,支持引入 Helm 官方库和私有插件仓库,为用户提供海量的插件。 - 提供对插件进行增删改查的全生命周期管理能力。 - 对插件的安装、更新、删除等操作进行记录,并以运维人员更容易理解的控制台日志进行展现,使插件运维更加云原生化。 **网络访问** 提供云原生的负载均衡能力,通过固定的 IP 地址和端口进行访问。目前支持的 网络访问模式包括: - 集群内访问(ClusterIP):仅在集群内访问服务。 - 节点访问(NodePort):使用节点 IP 进行访问。 - 负载均衡(LoadBlance):基于公有云厂商的外部负载进行访问。 **存储管理** - 数据卷管理:支持本地存储、文件存储、块存储,通过 CSI 能力接入,并提供给工作负载工作负载使用。 - 数据卷动态创建:可支持存储池实现动态创建数据卷 - 存储池管理:兼容业内各类主流存储技术和符合标准 Kubernetes CNI 架构的存储插件。 **权限管理** 支持多集群权限的统一管理,结合 Kubernetes 原生的 RBAC 角色访问控制和全局管理模块的用户身份认证,提供工作空间级别、集群级别和命名空间级别的权限控制。 基于以往金融、银行、传统制造等多行业的生产运维管理经验,提供开箱即用的多种企业权限控制方案,帮助不同组织架构的企业快速对用户/用户组进行授权。 **集群运维** 支持集群级、节点级、负载级、容器级的全方位指标监控及告警,集成各类资源状态统一监控看板。提供集群自动/手动巡检能力,帮助运维和开发人员实时了解集群资源状态,保障业务连续性。 **开放式 API** 提供云原生的 Kubernetes OpenAPI 能力,打通容器管理与不同系统的界限,快速赋能用户业务上云。 **对 Kubernetes 友好的 Web 终端 CloudTTY** 很多企业在使用云平台管理 Kubernetes 时,出于安全考虑,不支持使用 SSH 的方式直连业务主机,因此需要云 Shell 能力。 Daocloud 第五代容器管理模块引入了自研开源组件 CloudTTY,支持通过 CloudShell 直连集群。并提供通过 Kubectl 工具对集群进行运维操作的能力。 ## 图形化用户交互 容器管理模块是一个多集群管理的聚合平台,支持用户对不同厂商、不同区域的集群进行统一的纳管。 帮助企业快速上云,满足用户多云多集群管理的使用场景。 在层级结构上,采用了三级架构的形式,最上层将用户常用的使用场景进行抽象,提炼出集群列表、命名空间、工作负载、权限管理几个模块。 - 用户通过 __集群列表__ 界面,能够清晰的感知每一个集群的运行状态、资源用量、节点/容器组数量等实时信息。 并且能够基于集群名称进入集群的详情之中,对集群的节点、工作负载、服务与路由、运维管理等功能进行精细化管理。 同时如果用户想使用 kubectl 的方式管理集群,也可以在界面上使用基于 Cloudtty 桌面控制台工具。 - 在 __命名空间__ 界面,用户能够感知所拥有权限的全部集群下的命名空间的状态,并且能够对不同的命名空间进行配额设置和绑定/解绑工作空间。 - 在 __工作负载__ 界面,用户能够感知所拥有权限的全部集群下的工作负载状态、资源使用率等工作负载的全局概览信息。 - 在 __权限管理__ 界面,用户能够基于集群、命名空间两个层级对用户/用户组的权限进行查看以及授权。 - 在 __集群详情__ 界面,用户能够查阅到详细的集群概览信息,并且能够对集群内的资源进行全生命周期的管理。 包括节点管理、服务与路由管理、工作负载和容器组管理、命名空间管理、Helm 插件管理、存储管理、运维管理等功能都能够在集群详情界面内进行操作。 ## 最佳实践探索 在本地构建起第一个全局服务集群(Kpanda)后,您就能够通过 Web UI 的方式,对容器集群进行管理了。您可以借助容器管理模块实现接入集群、创建集群、应用一键部署等功能操作了。 **接入集群** 首先前往目标集群的控制节点上获取它的 __KubeConfig__ 文件,然后在容器管理的 __集群列表__ 处点击接入集群按钮,并将 KubeConfig 文件内的内容作为参数复制粘贴到 __接入参数__ 的表单内,既完成了对一个集群的接入操作。 ![img](https://docs.daocloud.io/daocloud-docs-images/docs/blogs/images/kpanda04.png) **创建集群** 容器管理模块支持创建工作集群和管理集群两种集群类型,用户可根据自身业务需要,选择相应的集群模式。 管理集群和工作集群的差别是在管理集群只运行系统组件,不部署业务,以保障集群的高可用。 工作集群只运行业务相关的负载,同时管理集群支持纳管工作集群,能够基于管理集群创建工作集群,并在创建过程中为工作集群配置网络、节点、插件等操作。 **部署工作负载** 容器管理模块支持基于 Kubernetes 原生的工作负载类型部署和管理能力,包括:创建、配置、监控、扩容、升级、回滚、删除等全生命周期管理。 - **弹性扩缩** :通过界面可实现工作负载的手动/自动扩缩容能力,自定义扩缩容策略,应对流量高峰。 - **容器的生命周期设置** :支持创建工作负载时设置回调函数、启动后参数、停止前参数,满足特定场景需求。 - **容器就绪检查、存活检查设置** :支持部署工作负载时设定工作负载就绪检查及存活检查: - **工作负载就绪检查** :用于检测用户业务是否就绪,如未就绪,则不转发流量至当前实例。 - **工作负载存活检查** :用户检测容器是否正常,如异常,集群会执行容器重启操作 - **容器的环境变量设置** :可为业务容器运行环境设定指定环境变量。 - **容器的自动调度** :支持工作负载服务调度管理,自动按照主机资源用量进行容器调度,可以指定具体的部署主机,以及通过标签策略进行容器调度。 - **亲和性和反亲和性** :支持定义容器组间调度的亲和性和反亲和性;以及容器组与节点间的亲和性和反亲和性,满足业务自定义调度需求。 - **容器安全用户设置** :支持设定容器运行用户,如以 Root 权限运行则填写 Root 用户 ID 0。 - **自定义资源(CRD)支持** :支持自定义资源的创建、配置、删除等全生命周期管理及基于自定义资源创建实例(CR)的能力。 ## 谁需要容器管理 业务庞大、或跨地区或跨部门需要统一运维管理的大型金融、银行、航空航天、传统制造业等类型的企业。 ### 解决什么问题 1. 在现代企业的软件生成过程中,虽然一般来讲,最佳做法是使用尽可能少的集群,但企业出于各种原因会选择部署多个集群来实现各种技术和业务目标。 大多数企业至少将各种服务放在不同的集群中,将非生产服务与生产服务分开。在更复杂的场景中,企业可能会选择多个集群来跨层级、语言区域、团队或基础架构提供商分隔服务。 2. 超大规模项目部署在一个集群上,为了保证工作负载的可用性,只能手动不断的往集群上新增节点,但是 Kubernetes 的最大 Pod 数有边界,单纯依靠增加物理节点并不能解决根本问题,且运维难度和成本极速增加。 3. 混合云场景,集群类型复杂,既有远程的边缘融合集群,还有本地自建机房集群和信创集群及公有云集群,集群的 Kubernetes 版本可能还存在差异,如何统一管理这些不同架构的集群问题。 4. 由于企业希望在更多传统工作环境(例如仓库、工厂车间、零售店等)中采用应用现代化改造做法,因此这需要管理更多基础架构组件上的更多工作负载。 5. 当企业担心潜在就地升级问题(即升级自动化故障、应用不稳定或回滚功能)时,他们可以选择将其服务副本部署到新集群中。以这种方式升级需要规划或自动化才能实现,从而确保在升级过程中处理流量管理和状态复制。 ### 应用场景 1. 探索一种针对多机房、跨区域的容器调度方式,实现不同区域集群的统一纳管,减少人力物力消耗,缩减成本。 2. 探索集群级别的弹性扩缩,支持创建集群,并打通集群间的边界,探索跨集群的工作负载部署方式。 3. 探索不同集群类型间的兼容性统一管理,形成资源的统一管理平面。 ## FAQ - 问:容器管理兼容哪些厂商的集群? 答:第五代容器管理兼容包括 AWS、谷歌云、信创架构、边云融合等任何基于标准 Kubeneters ApiServer 的发行版容器集群。 ![兼容的厂商](https://docs.daocloud.io/daocloud-docs-images/docs/blogs/images/kpanda02.png) - 问:如应对跨集群的网络中断问题? 答:为保证业务高可用,同时将业务部署在不同地域的多个云容器平台上,帮助应用实现多地域的流量分发,并且实现跨云应用在同一平台管理,减少运维成本。 另外当某个云容器平台发生故障时,通过统一流量分发的机制,自动的将业务流量切换到其他云容器平台上。 - 问:如何实现对其它厂商集群的管理? 答:通过获取其它厂商集群的 KubeConfig 文件,在容器管理模块执行接入集群操作,填入目标集群的 KubeConfig 文件,即完成了对一个容器集群的接入管理。 - 问:如何获取多集群资源的实时状态? 答:借助自研开源组件 ClusterPedia 通过在目标集群上安装 Agent 组件,结合 Watch 机制能够实时将目标集群的资源变动信息同步到容器管理集群的 ETCD 内。 ![实时 watch](https://docs.daocloud.io/daocloud-docs-images/docs/blogs/images/kpanda03.png) - 问:容器管理在第五代产品中的定位? 答:在第五代产品中,容器管理模块处于承上启下的核心位置。对上:对接 DCE 5.0 产品模块及未来定制化模块。对上层的场景化管理模块而言,容器管理模块能够把任何一个标准的 Kubernetes API 对上暴露,无论是制品中心、Karmada、还是应用商店等,只要需要调用 Kubernetes API,就能够通过容器管理这个模块去调用底层的任何平台的 Kubernetes API。对下:对接 Any Kubernetes,例如边缘的 K3S undefined 信创环境、DCE、DKG、DKE、以及外部的 Openshift,Tanzu、CCE 等等都是基于容器管理这个模块。 - 问:谁能够创建集群? 答:拥有 Global Admin、Kpanda Owner 角色的用户能够去创建集群。 - 问:谁能管理集群? 答:取决于用户所采用的权限控制解决方案,一般来说除了拥有 Global Admin、Kpanda Owner、Cluster Admin、Cluster Admin 角色的用户外,拥有 Cluster Edit 角色的用户及拥有强绑定的 Floder Admin、WorkerSpace Admin 角色的用户也能够实现对集群内资源的增删改查操作,以及对用户进行授权。 [了解容器管理](../kpanda/intro/index.md){ .md-button } [下载 DCE 5.0](../download/index.md){ .md-button .md-button--primary } [安装 DCE 5.0](../install/index.md){ .md-button .md-button--primary } [申请社区免费体验](../dce/license0.md){ .md-button .md-button--primary }