程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

K8s系知识点汇总(2) - Deployment

balukai 2025-03-20 12:20:56 文章精选 3 ℃

说明:本系列文章内容大部分来自于k8s训练营,本人在对文章阅读后,做了一个知识点的汇总,部分内容有修改或者增加,收录于此,主要是方便自己以后查询,也希望可以帮到其他学习k8s知识的朋友!

Deployment适用于部署无状态服务,对于有状态服务例如:mysql, mongodb等需要使用StatefulSet 控制器

---
ReplicaSet
 RS 中的 Label Selector 支持 matchLabels 和 matchExpressions 两种形式:
---
selector:  
  matchLabels:
    app: nginx
---
selector:
  matchExpressions:  # 该选择器要求 Pod 包含名为 app 的标签
  - key: app
    operator: In
    values:  # 并且标签的值必须是 nginx
    - nginx 
---
Deployment控制器更新策略:  
  minReadySeconds: 5
  strategy:  
    type: RollingUpdate  # 指定更新策略:RollingUpdate和Recreate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
# minReadySeconds:表示 Kubernetes 在等待设置的时间后才进行升级,如果没有设置该值,Kubernetes 会假设该容器启动起来后就提供服务了,如果没有设置该值,在某些极端情况下可能会造成服务不正常运行,默认值就是0。
# type=RollingUpdate:表示设置更新策略为滚动更新,可以设置为Recreate和RollingUpdate两个值,Recreate表示全部重新创建,默认值就是RollingUpdate。
# maxSurge:表示升级过程中最多可以比原先设置多出的 Pod 数量,例如:maxSurage=1,replicas=5,就表示Kubernetes 会先启动一个新的 Pod,然后才删掉一个旧的 Pod,整个升级过程中最多会有5+1个 Pod。
# maxUnavaible:表示升级过程中最多有多少个 Pod 处于无法提供服务的状态,当maxSurge不为0时,该值也不能为0,例如:maxUnavaible=1,则表示 Kubernetes 整个升级过程中最多会有1个 Pod 处于无法服务的状态
---
水平扩容:
kubectl scale deployment nginx-deploy --replicas=4

查看滚动更新的状态:
kubectl rollout status deployment/nginx-deploy

暂停更新:
kubectl rollout pause deployment/nginx-deploy

恢复滚动更新操作:
kubectl rollout resume deployment/nginx-deploy

获取历史版本:
kubectl rollout history deployment nginx-deploy

恢复到指定版本:
kubectl rollout history deployment nginx-deploy --revision=1 

回退到当前版本的前一个版本:
kubectl rollout undo deployment nginx-deploy

回退到指定的revision版本:
kubectl rollout undo deployment nginx-deploy --to-revision=1
最近发表
标签列表