开发者学堂课程【Kubernetes 入门: 应用编排与管理:Deployment(一)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/51/detail/1012
应用编排与管理:Deployment(一)
内容介绍:
一、需求来源
二、用例解读
三、操作演示
四、架构设计
一、需求来源
1、背景问题
我们可以直接管理集群中所有的 Pod 吗?
如果这样做,以下的问题有什么方式来解决?
l 如何保证集群内可用 Pod 的数量
l 如何为所有 Pod 更新镜像版本
l 更新的过程中,如何保证服务可用性
l 更新的过程中,发现问题如何快速回滚
2、Deployment:管理部署发布的控制器
Deployment 能帮助我们做什么事情?
l 定义一组 Pod 的期望数量, controller 会维持 Pod 数量与期望数量一致
l 配置 Pod 发布方式, controller 会按照给定策略更新 Pod,保证更新过程中不可用的 pod 数量在限定范围内
l 如果发布有问题,支持“一键"回滚
二、用例解读
1、Deployment 语法
新知识点:
l replicas:终态数量
l template: pod 模板
往期回顾:
l labels:标签
l selector:选择器
l pod image:镜像版本
apiVersion: apps/v1
kind: Deployment Deployment元信息
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas:3 期望 Pod 数量
selector:
matchLabels : Pod 的选择器
app: nginx
template: Pod 模板
metadata:
labels:
app: nginx
spec:
containers:
-name: nginx
image: nginx: 1.7.9
ports:
- containerPort: 80
2、查看 Deployment 状态
$ kubectl create -f nginx-deployment.yaml
$ kubectl get deployment
NAME nginx-deployment
DESIRED
3
CURRENT 3
UP-TO-DATE 3
AVAILABLE 3
AGE 80m
l DESIRED:期望 pod 数量(replicas)
l CURRENT:当前实际的 pod 数量
l UP-TO-DATE:到达期望版本的 pod 数量
l AVAILABLE:运行中并可用的 pod 数量
l AGE: deployment 创建的时长
3、查看 Pod
$kubectl get pod
NAME
nginx-deployment-5c689d88bb-ck974
nginx-deployment-5c689d88bb-f88bm
nginx-deployment-5c689d88bb-xjqd9
Pod 名字格式:
${deployment-name}-${template-hash}-${random-suffix}
$kubectl get pod/ nginx-deployment-5c689d88bb-ck974 -o yamlapiVersion: v1
kind: Pod
metadata:
ownerReferences:
- apiVersion: apps/v1
blockOwnerDeletion: true
controller: true
kind: ReplicaSet
name: nginx-deployment-5c689d88bb
uid: 07980df9-51fe-11e9-b06e-264e0b6d8534
#...
Pod owner:
ReplicaSet,而非 Deployment
4、更新镜像
$ kubectl set image deployment.v1.apps/nginx-deployment nginx=nginx:1.9.1
l set image:设置镜像
l deployment.v1.apps/:资源类型,固定写法,也可写为 deployment 或者deployment.apps
l nginx-deployment:要更新的 Deployment 名字
l nginx=:要更新的容器名字
l nginx:1.9.1:新的镜像
apiversion: apps/v1
kind: Deployment
metadata:
name:nginx一(
labels:
app:nginx
tainers:
ie: nginx
image: nginx: 1.9.1ports: .
rPort: 80
5、快速回滚
$ kubectl rollout undo deployment/nginx-deployment
回滚到 Deployment 上一个版本
$ kubectl rollout undo deployment.v1.apps/nginx-deployment --to-revision=2
回滚到 Deployment 到某一个版本,需要先查询版本列表:
$ kubectl rollout history deployment.v1.apps/nginx-
deployment
6、DeploymentStatus
三个考虑型状态 Processing、complete、Failed
Processing 指的是 Deployment 正在处于扩容的发布中
complete 运行失败后可以进入 Processing 或 Failed 中
Processing 运行失败后可以进入 complete 或 Failed 中
Failed 运行失败后可以进入 Processing 或 complete 中