本帖最后由 不懂就问 于 2020-8-31 21:20 编辑
一、前言大家好,本次和大家分享kubernetes的Deployment相关概念,主要内容包含什么是控制器,如何创建Deployment。希望通过本次的分享大家能够了解kubernetes的主流控制器,并且可以利用kubectl工具来创建与使用Deployment。
二、kubernetes管理的对象以及各种控制器 kubernetes的基本管理单元是Pod,一个Pod是一个容器或多个容器的集合。一个Pod作为一个整体运行在一个node上,不会出现同一个Pod中不同容器跨节点运行的场景。同一个Pod内的容器之间共享存储和网络资源。
实际业务场景下,一个业务应用不会以单独的一个Pod承载,例如:前端、中间件、数据库均使用不同的Pod承载。也就是说,多个Pod共同构成了一个业务应用。那么便引出一个问题,我们应该如何高效地管理多个Pod?这便是需要通过各种各样的控制器进行管理。 1.ReplicationController,简称RC:RC可以指定Pod的副本数,并且当其中Pod出现故障时,自动拉起新的Pod,实现自动化管理。 2.RelicaSet,简称RS:功能基本和RelacationController差不多,同样是确保Pod副本数量;RC和RS的区别在于Label Selector支持不同,RS支持新的基于集群的标签,即集合式,RC只支持基于等式的集群标签。 3.Deployment:当前使用最多的控制器之一,我们可以通过Deployment来管理RS,间接实现管理Pod。我们可以将Deployment理解成公司的高层,高层通过管理各部门负责人最终实现普通员工的管理。 容器、Pod、RS、Deployment之间的逻辑关系如图: Container《 Pod《 RS《 Deployment
三、通过yaml文件创建Deployment 实际使用中,我们可以通过yaml文件进行创建Deployment。例如,我们首先新建一个yaml文件: 利用yaml文件创建Deployment: 查看创建的结果如下,可以看到Deployment已经创建,我们yaml文件中指定的副本数为3个,此时便会有3个相同的Pod在运行。
四、yaml文件参数补充说明 apiVersion:版本号,固定为apps/v1,如果使用的kubernetes版本是1.9.0之前的,写apps/v1beta2 Kind: 类型,选择创建资源类型,可以填写pod、Deployment等 Metadata:元数据,其中name项指定了名称,label项指定标签。 Spec:deployment规格,其中replicas指定pod副本数量,选择器选择标签匹配为app:nginx Template:对pod模板的定义,其中至少要定义一个label Spec:描述pod的规格 Containers:定义容器的属性,在范例中,容器名字是nginx,镜像为nginx:1.7.9,容器输入输出的端口是80端口。
|