kubernetes ReplicaSet rs
来源:原创
时间:2019-04-21
作者:脚本小站
分类:云原生
ReplicaSet 的副本数量、标签选择器、Pod模板都可以随时按需进行修改,修改只对后来新建的Pod有影响。
ReplicaSet 主要字段:
spec.replicas
spec.selector.matchLabels
spec.template
apiVersion: apps/v1 kind: ReplicaSet metadata: name: rs-example spec: replicas: 2 selector: matchLabels: app: rs-demo template: metadata: labels: app: rs-demo spec: containers: - name: myapp image: nginx ports: - name: html containerPort: 80
查看创建的RS:
kubectl get pods -l app=rs-demo
修改Pod的标签:
控制器匹配到的rs-demo标签的Pod不足预定数会自动创建新的Pod来补足。
kubectl label pods rs-vtw52 app=rs-demo --overwrit
改回Pod的标签:
这时控制器匹配到的 rs-demo 标签多出预定数控制器会删除多余的Pod。
kubectl label pods rs-vtw52 app=rs-demo --overwrite
查看Pod资源变动相关事件:
kubectl describe replicaset Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal SuccessfulCreate 23m replicaset-controller Created pod: rs-vtw52 Normal SuccessfulCreate 23m replicaset-controller Created pod: rs-5v4dv Normal SuccessfulCreate 10m replicaset-controller Created pod: rs-r4p4s Normal SuccessfulDelete 9m16s replicaset-controller Deleted pod: rs-r4p4s
升级应用,更新Pod模板:
应用新的模板后现存的Pod任然是原有的镜像,需要分批次删除原有的Pod来实现滚动更新。
kubectl apply -f replicaSet.yaml kubectl replace -f replicaSet.yaml
一次性删除所有Pod命令:
kubectl delete pods -l app=rs-demo
Deployment 能够自动实现更完善的滚动更新和回滚。
扩容和缩容
扩容 scale:
kubectl scale replicaset rs-example --replicas=5
查看扩容后的数量:
kubectl get replicaset rs-example
缩容:与扩容操作一样。
符合条件则扩容缩容:
只有当当前副本数等于--current-replicas 定义的数量时才会执行扩锁容,否者返回错误。
kubectl scale replicaset rs --current-replicas=5 --replicas=2
删除
删除 replicaset:
默认是级联删除,默认删除 replicaset 会连同replicaset管控的Pod一起删除。如果不想删除其管控的各Pod则使用 --cascade=false 选项。
kubectl delete replicaset rs --cascade=false