Deployment 管理与使用
一、Kubernetes管理对象 1. Pod Kubernetes基本管理单元,每个Pod是一个或多个容器的一组集合 一个Pod作为一个整体运行在一个节点(node)上
2. ReplicationController(简称RC) Kubernetes需要管理大量的Pod,而显而易见的是通常情况下一个应用不会以单独的一个Pod完成。比较常见的情况是使用大量的Pod组成一个简单应用。管理这些大量的Pod的一个方式就是RC RC可以指定Pod的副本数量,并且在其中有Pod故障时可以自动拉起新的Pod,大大简化了管理难度
3. ReplicaSet(简称RS) ReplicaSet是新一代的RC,主要功能和RC一样,维持Pod的数量稳定,指定Pod的运行位置等,使用方法也相似,主要区别是更新了api,支持更多功能 ReplicaSet不建议直接使用,而是用更上层的概念Deployment调用ReplicaSet
4. Deployment 目前最常用的控制器就是Deployment,创建Deployment时也会自动创建ReplicaSet Deployment可以管理一个或多个RS,并且通过RS来管理Pod
从小到大的管理逻辑: 容器 < Pod < ReplicaSet < Deployment 通常情况下: 二、创建Deployment 1. 创建一个简单的deployment - $ kubectl create deployment mydep --image=nginx
复制代码完成后我们使用如下语句查看deployment的创建情况 回显:
2.命令行接口 - kubectl 在Kubernetes中的操作很多都是用kubectl来完成,通过其命令可以管理Deployment,Replicaset,ReplicationController,Pod等,进行操作,扩容,删除等等全生命周期操作。同时可以对管理对象进行查看或者监控资源使用情况 Kubectl的语法 - kubectl [command] [TYPE] [NAME] [flags]
复制代码command:指定你希望进行的操作,如create,get,describe,delete等 TYPE:指定操作对象的类型,如deployment,RS,Pod等 NAME:指定对象的名字 flags:可选的标志位
3.使用yaml文件创建Deployment 创建yaml文件, vim deployment.yaml
- apiVersion: apps/v1
- kind: Deployment
- metadata:
- name: nginx-deployment
- spec:
- selector:
- matchLabels:
- app: nginx
- replicas: 2
- template:
- metadata:
- labels:
- app: nginx
- spec:
- containers:
- - name: nginx
- image: nginx:1.14.2
- ports:
- - containerPort: 80
复制代码
4. yuml文件格式: apiVersion:版本号,固定为apps/v1,如果使用1.9.0以前版本的kubernetes,填写apps/v1beta2 kind:类型,选择创建资源类型,可以填写pod,replicaset等 metadata:元数据,其中name项指定了名称,label项指定标签 spec:deployment规格,其中replicas指定pod副本数量,选择器选择标签匹配为 app: nginx template:对pod模板的定义,其中至少要定义一个label
Containers:定义容器的属性,在范例中,容器名字是 nginx,镜像为 nginx:1.14.2,容器输入输出的端口是 80 端口
注意格式,缩进一般使用两个空格,千万不要使用 Tab!
三、Deployment升级和弹性伸缩 容器对比虚拟机,最大的优势在于可以灵活的弹性伸缩,而这一部分工作由kubernetes进行调度 1.Deployment弹性伸缩 Deployment弹性伸缩本质是Pod数量增加或减少 弹性伸缩可以支持自动化部署,并在很短时间内实现数量变更 修改 yaml 文件中的 replica 参数实现
扩容示例: 将文件中replica的值从2 修改为4 修改前截图pod截图
修改后pod截图
2. deployment升级; 2. deployment回滚;
使用另外两个yaml文件,修改nginx版本号,进行两次滚动更新操作,更新到1.8.1和1.9.1,使用apply命令时附加参数--record记录下这两次更新。
这里通过 生成两次更新
kubectl apply -f deploymentV1.yaml --record
kubectl apply -f deploymentV2.yaml --record - kubectl rollout history deployment nginx-deployment
复制代码
通过命令查看历史版本中的详细信息 ,这里 --revision= 行号
使用rollout undo命令回滚到指定版本 这里回滚到第四行的版本 回滚后查看:版本回滚到1.7.9
|