一、ReplicaSet
ReplicaSet,即副本控制器,简称rs,主要作用是控制由其管理的pod,使pod副本的数量始终维持在预设的个数,保证一定数量的Pod能够在集群中正常运行,它会持续监听这些Pod的运行状态,在Pod发生故障时重启pod,pod数量减少时重新运行新的 Pod副本。
官方不推荐,使用Deployment代替。
二、Deployment
1、Deployment概述
1.1 介绍
• 除了能够调用ReplicaSet之外还可以提供滚动升级及回滚的功能。
• deployment是一个三级结构,deployment管理replicaset,replicaset管理pod,用deployment创建一个pod。
1.2 功能
• 创建ReplicaSet和Pod
• 滚动升级(不停止旧服务的状态下升级)和回滚应用(将应用回滚到之前的版本)
• 平滑地扩容和缩容
• 暂停和继续Deployment
1.3 简单案例
apiVersion: apps/v1 kind: Deployment metadata: name: mydm spec: replicas: 3 #副本数:3 selector: #标签选择器,选择其关联的pod matchLabels: app: myapp-blue #匹配模板中label template: #定义的pod模板 metadata: labels: app: myapp-blue spec: containers: - name: myapp-blue image: busybox:1.28 imagePullPolicy: IfNotPresent ports: - containerPort: 80
1.4 查看命令
• 查看Deployment:kubectl get deploy
• 查看RaplicaSet:kubectl get rs
1.5 扩缩容
修改对应的yaml文件中的replicas的数量
1.6 滚动更新
• 修改对应的yaml文件中的image信息
• kubectl edit deploy deployname
1.7 回滚
• 查看历史版本:kubectl rollout history deployment name
• 回滚操作:kubectl rollout undo deployment name --to-revision=1
1.8 自定义更新策略
• 编写位置:在spec→strategy内,为rollingUpdate
spec: strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 1
• maxUnavailable:和期望的副本数比,不可用副本数最大比例(或最大值),这个值越小,越能保证服务稳定,更新越平滑;
• maxSurge:和期望的副本数比,超过期望副本数最大比例(或最大值),这个值调的越大,副本更新速度越快。
• 按数量更新:
◇ maxUnavailable: [0, 副本数]
◇ maxSurge: [0, 副本数]
◇ 两者不能同时为0。
• 按比例更新:
◇ maxUnavailable: [0%, 100%] 向下取整,比如10个副本,5%的话==0.5个,但计算按照0个;
◇ maxSurge: [0%, 100%] 向上取整