一、Deployment
一个Deployment 为 Pods 和 ReplicaSets 提供声明式的更新能力
二、Deployment、ReplicaSet、Pods之间的关系
Deployment、ReplicaSet、Pods之间的关系.png三、创建Deployment
1、创建一个ReplicaSet
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment-nginx-raven
namespace: raven
labels:
app: deployment-nginx-raven
spec:
selector:
matchLabels:
app: raven-nginx-1
replicas: 1
template: # 定义 Pod
metadata:
labels:
app: raven-nginx
spec:
containers:
- name: raven-nginx-container
image: nginx
- ❌ 信息
The Deployment "deployment-nginx-raven" is invalid:
spec.template.metadata.labels: Invalid value:
map[string]string{"app":"raven-nginx"}: `selector` does
not match template `labels`
Deployment的选择器.png
- Deployment中的选择器
selector.matchLabels
必须要与template.metadata.labels
中的key:value
必须相同
key-value相同就可以匹配.png
key-value相同就可以匹配.png
小结
-
selector 字段定义 Deployment 如何查找要管理的 Pods。在这里,你选择在 Pod 模板中定义的标签(app: nginx)。不过更复杂的选择规则是也可能的,只要 Pod 模板本身满足所给规则即可
-
spec.selector.matchLabels
字段是{key, value}
键值对映射。在matchLabels
映射中的每个{key, value}
映射等效于matchExpressions
中的一个元素,即其key
字段时"key",operator
为 "in",values
数组仅包含"value"。在matchLabels
和matchExpressions
中给出的所有条件都必须满足才能匹配 -
解析yaml文件
kubectl apply -f https://k8s.io/examples/controllers/nginx-deployment.yaml --dry-run=client -oyaml
- 在应用时标志记录,方便以后查看
--record
kubectl apply -f depolyments.yaml --record
四、更新 Deployment
仅当 Deployment Pod 模板(.spec.template)发生改变时,例如模板的
标签
或容器镜像
被更新,才会触发 Deployment 上线。其他更新(如:对 Deployment 执行扩展容的操作)不会触发上线动作
1、更新 镜像
- 方法一:使用yaml方式,直接修改镜像
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment-nginx-raven
namespace: raven
labels:
app: deployment-nginx-raven
spec:
selector:
matchLabels:
appt: raven-nginx
replicas: 1
template: # 定义 Pod
metadata:
labels:
appt: raven-nginx
spec:
containers:
- name: raven-nginx-container
image: nginx:1.16.1
- 方法二:通过kubectl
kubectl set image deployment/deployment-nginx-raven raven-nginx-container=nginx:1.14.2 --record -n raven
kubectl set image deployment/deployment-nginx-raven raven-nginx-container=nginx:1.16.1 --record -n raven
- 查看ReplicaSet
kubectl get rs -n raven
五、查看 Deployment 上线历史
kubectl rollout history deployment/deployment-nginx-raven -n raven
六、回滚到之前版本
- 查看 某次部署 Deployment 详情
kubectl rollout history deployment/deployment-nginx-raven --revision=5 -n raven
- 回滚到之前的修订版本
kubectl rollout undo deployment/deployment-nginx-raven --to-revision=6 -n raven
七、缩放 Deployment
- 方式一:使用kubectl 命令
kubectl scale deployment/deployment-nginx-raven --replicas=3 -n raven
- 方式二:修改yaml文件replicas
网友评论