【云驻共创】华为云云原生黄金课程04:Kubernetes集群管理

kaliarch 发表于 2022/01/17 12:46:59 2022/01/17
【摘要】 CCE是一种托管的Kubernetes产品/服务,可进一步简化基于容器的应用程序部署和管理,您可以在CCE中方便的创建Kubernetes集群、部署您的容器化应用,以及方便的管理和维护。 CCE提供的集群相关功能包括:购买集群、Kubectl访问集群、集群弹性扩容、升级集群、删除集群、集群休眠与唤醒、集群监控、集群权限控制等。

前言

为进一步推进云原生技术的普及,帮助广大技术爱好者快速掌握云原生相关技能,华为云云原生团队重磅推出《云原生王者之路系列课程》。课程分为黄金、钻石和王者三阶段,从云原生基础知识介绍到最佳实践讲解、底层原理和方案架构深度剖析,层层深入,可满足不同云原生技术基础和学习目标人群的需求。本课程还将理论与实践相结合,精选数十个企业典型应用场景,作为学员上机实践案例,帮助学员将所学技术快速与企业业务相结合,服务于企业生产。

学完本课程后,您将能够了解:是否使用CCE集群;怎么使用CCE集群,通过体验云原生平台CCE/CCI,可以更好的助力企业数字化专用,让应用生于云,长于云,赋能应用创新。

一 Kubernetes 总体架构

1.1 Master

Master节点上面主要由四个模块组成:etcd、api server、controller manager、scheduler。

api server:负责对外提供restful的Kubernetes API服务,其他Master组件都通过调用api server提供的rest接口实现各自的功能,如controller就是通过api server来实时监控各个资源的状态的。

etcd:是 Kubernetes 提供的一个高可用的键值数据库,用于保存集群所有的网络配置和资源对象的状态信息,也就是保存了整个集群的状态。数据变更都是通过api server进行的。

scheduler:监听新建pod副本信息,并通过调度算法为该pod选择一个最合适的Node节点。会检索到所有符合该pod要求的Node节点,执行pod调度逻辑。调度成功之后,会将pod信息绑定到目标节点上,同时将信息写入到etcd中。一旦绑定,就由Node上的kubelet接手pod的接下来的生命周期管理。如果把scheduler看成一个黑匣子,那么它的输入是pod和由多个Node组成的列表,输出是pod和一个Node的绑定,即将这个pod部署到这个Node上。Kubernetes目前提供了调度算法,但是同样也保留了接口,用户可以根据自己的需求定义自己的调度算法。

controller manager:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等。每个资源一般都对应有一个控制器,这些controller通过api server实时监控各个资源的状态,controller manager就是负责管理这些控制器的。当有资源因为故障导致状态变化,controller就会尝试将系统由“现有状态”恢复到“期待状态”,保证其下每一个controller所对应的资源始终处于期望状态。比如我们通过api server创建一个pod,当这个pod创建成功后,api server的任务就算完成了。而后面保证pod的状态始终和我们预期的一样的重任就由controller manager去保证了。


1.2 Node

Node上运行着Master分配的pod,当一个Node宕机,其上的pod会被自动转移到其他Node上。

每一个Node节点都安装了Node组件,包括kubelet、kube-proxy、container runtime。

kubelet 会监视已分配给节点的pod,负责pod的生命周期管理,同时与Master密切协作,维护和管理该Node上面的所有容器,实现集群管理的基本功能。即Node节点通过kubelet与master组件交互,可以理解为kubelet是Master在每个Node节点上面的agent。本质上,它负责使Pod的运行状态与期望的状态一致。


kube-proxy 是实现service的通信与负载均衡机制的重要组件,将到service的请求转发到后端的pod上。


Container runtime:容器运行环境,目前Kubernetes支持docker和rkt两种容器。

二 Kubernetes部署模式


2.1 自建模式

部分企业存在多云、混合云部署(公有云、私有云),而通常不同云的k8s版本和一些特性会有不同。为拉平多公有云及私有云之间的k8s的版本及特性,这时会选择自建k8s集群,保持各云上的版本和特性一致,以减少维护成本。

云厂商的k8s版本考虑到稳定性,一般会滞后于k8s社区发出的最新稳定版。如需要跟随最新稳定版,就只能自己搭建。

我们存在混合云和多云的部署,但仍有部分集群使用的是云厂商的托管集群。


2.2 托管模式(CCE)

CCE是一种托管的Kubernetes产品/服务,可进一步简化基于容器的应用程序部署和管理,您可以在CCE中方便的创建Kubernetes集群、部署您的容器化应用,以及方便的管理和维护。

CCE提供的集群相关功能包括:购买集群、Kubectl访问集群、集群弹性扩容、升级集群、删除集群、集群休眠与唤醒、集群监控、集群权限控制等。

云容器引擎CCE是一种托管的Kubernetes服务,可进一步简化基于容器的应用程序部署和管理,您可以在CCE中方便的创建Kubernetes集群、部署您的容器化应用,以及方便的管理和维护。

一站式部署和运维:使用云容器引擎,您可以一键创建Kubernetes容器集群,无需自行搭建Docker和Kubernetes集群。您可以通过云容器引擎自动化部署和一站式运维容器应用,使得应用的整个生命周期都在云容器引擎内高效完成。

支持多类型容器集群:通过云容器引擎您可以直接使用华为云高性能的弹性云服务器、裸金属服务器、GPU加速云服务器等多种异构基础设施,您可以根据业务需要在云容器引擎中快速创建CCE集群、鲲鹏集群、CCE Turbo集群,并通过云容器引擎对创建的集群进行统一管理。

2.3 Serverless模式(CCI)

云容器实例(Cloud Container Instance,CCI)服务提供Serverless Container(无服务器容器)引擎,让您无需创建和管理服务器集群即可直接运行容器。

Serverless是一种架构理念,是指不用创建和管理服务器、不用担心服务器的运行状态(服务器是否在工作等),只需动态申请应用需要的资源,把服务器留给专门的维护人员管理和维护,进而专注于应用开发,提升应用开发效率、节约企业IT成本。传统上使用Kubernetes运行容器,首先需要创建运行容器的Kubernetes服务器集群,然后再创建容器负载。

云容器实例的Serverless Container就是从使用角度,无需创建、管理Kubernetes集群,也就是从使用的角度看不见服务器(Serverless),直接通过控制台、kubectl、Kubernetes API创建和使用容器负载,且只需为容器所使用的资源付费。

优势:用户无需创建Kubernetes服务器集群,直接使用控制台、kubectl、Kubernetes API创建容器。





三 Kubernetes集群-生产集群


高性能

基于华为在计算、网络、存储、异构等方面多年的行业技术积累,提供业界领先的高性能云容器引擎,支撑您业务的高并发、大规模场景。

采用高性能裸金属NUMA架构和高速IB网卡,AI计算性能提升3-5倍以上。

安全可靠

高可靠:集群控制面支持3 Master HA高可用,3个Master节点可以处于不同可用区,保障您的业务高可用。集群内节点和工作负载支持跨可用区(AZ)部署,帮助您轻松构建多活业务架构,保证业务系统在主机故障、机房中断、自然灾害等情况下可持续运行,获得生产环境的高稳定性,实现业务系统零中断。

私有集群,完全由用户掌控,并深度整合华为云帐号和Kubernetes RBAC能力,支持用户在界面为子用户设置不同的RBAC权限。


四 Kubernetes集群架构-CCE集群简介


集群管理

云容器引擎CCE是一种托管的Kubernetes服务,可进一步简化基于容器的应用程序部署和管理,您可以在CCE中方便的创建Kubernetes集群、部署您的容器化应用,以及方便的管理和维护。

节点管理

节点是容器集群组成的基本元素。节点取决于业务,既可以是虚拟机,也可以是物理机。每个节点都包含运行Pod所需要的基本组件,包括 Kubelet、Kube-proxy 、Container Runtime等。在云容器引擎CCE中,主要采用高性能的弹性云服务器ECS或裸金属服务器BMS作为节点来构建高可用的Kubernetes集群。

节点池管理

支持创建新的自定义节点池,借助节点池基本功能方便快捷地创建、管理和销毁节点,而不会影响整个集群。新节点池中所有节点的参数和类型都彼此相同,您无法在节点池中配置单个节点,任何配置更改都会影响节点池中的所有节点。

网络访问方式

云容器引擎通过将Kubernetes网络和华为云VPC深度集成,提供了稳定高性能的网络访问方式,能够满足多种复杂场景下工作负载间的互相访问。

生态工具

云容器引擎深度集成应用服务网格和Kubernetes Helm标准模板。

插件扩展

CCE提供了多种类型的系统插件,用于管理集群的扩展功能,以支持选择性扩展满足特性需求的功能。

提供OpenAPI和社区原生API。

提供Kubectl插件和社区原生Kubectl工具。


五 Kubernetes节点介绍-Node定义

Kubernetes中定义:

业务负载(Pod) 是资源的消费者

节点(Node)是业务负载的载体

云厂商Provider是基础资源的生产者


节点元数据:

节点名

节点标签


云厂商provider信息

providerlD: CCE节点ID 

machinelD:服务器实例ID

节点资源信息:

节点资源总量

剩余可分配资源



六 通过节点池管理节点

CCE集群中支持通过多种方式添加节点:

节点管理-创建节点(通过CCE创建服务器)

节点管理-纳管节点(已创建的服务器)

节点池管理-更新期望节点数

CCE支持创建新的自定义节点池,借助节点池基本功能方便快捷地创建、管理和销毁节点,而不会影响整个集群。新节点池中所有节点的参数和类型都彼此相同,您无法在节点池中配置单个节点,任何配置更改都会影响节点池中的所有节点。

CCE提供的节点池相关功能包括:创建节点池、查看节点池、编辑节点池、删除节点池、拷贝节点池、迁移节点。


本文整理自华为云社区【内容共创】活动第12期。

查看活动详情:https://bbs.huaweicloud.com/blogs/325315

相关任务详情:华为云云原生黄金课程04:Kubernetes集群管理




【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。