赞
踩
作用:1.pod类型资源删除,不会重建
2.控制器可以帮助用户监控,并保证节点上运行定义好的pod副本数
3.pod超过或低于用户期望,控制器会创建、删除pod副本数量
控制器类型:
RS控制器原理:副本数保障、标签选择器
- [root@k8s-master ~]# cat rs-nginx.yml
- apiVersion: apps/v1
- kind: ReplicaSet
- metadata:
- name: nginx-rs
- namespace: lxy
-
- spec:
- replicas: 3
- selector:
- matchLabels:
- app: nginx
- template:
- metadata:
- name: nginx-pod
- labels:
- app: nginx
- spec:
- containers:
- - name: nginx-containers
- image: nginx:1.14.0
- imagePullPolicy: IfNotPresent
- ports:
- - name: http
- containerPort: 80
- kubectl create -f rs-nginx.yml
- kubectl -n lxy get rs -owide
- kubectl -n lxy get pods -l app=nginx -owide
-
删掉一个pod,但是会马上创建一个
kubectl -n lxy describe rs nginx-rs
1.对yaml修改副本数,修改资源配置:kubectl apply -f rs-nginx.yml
2.编辑RS控制器:kubectl -n lxy edit rs nginx-rs (有些是无法修改)
kubectl scale --help
kubectl -n lxy scale --replicas=X rs nginx-rs
- root@k8s-master ~]# kubectl -n lxy get pods -owide
- NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
- nginx-2 1/1 Running 2 5d17h 10.2.20.143 k8s-node13 <none> <none>
- nginx-rs-2zhzn 1/1 Running 0 7h25m 10.2.231.96 k8s-node12 <none> <none>
- nginx-rs-7p64w 1/1 Running 0 7h25m 10.2.20.146 k8s-node13 <none> <none>
- [root@k8s-master ~]# kubectl -n lxy scale --replicas=4 rs nginx-rs
- replicaset.apps/nginx-rs scaled
- [root@k8s-master ~]# kubectl -n lxy get pods -owide
- NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
- nginx-2 1/1 Running 2 5d17h 10.2.20.143 k8s-node13 <none> <none>
- nginx-rs-2zhzn 1/1 Running 0 7h34m 10.2.231.96 k8s-node12 <none> <none>
- nginx-rs-7p64w 1/1 Running 0 7h34m 10.2.20.146 k8s-node13 <none> <none>
- nginx-rs-8jf8p 1/1 Running 0 4s 10.2.20.150 k8s-node13 <none> <none>
- nginx-rs-k9dvr 1/1 Running 0 4s 10.2.20.149 k8s-node13 <none> <none>
- [root@k8s-master ~]# kubectl -n lxy scale --replicas=2 rs nginx-rs
- replicaset.apps/nginx-rs scaled
- [root@k8s-master ~]# kubectl -n lxy get pods -owide
- NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
- nginx-2 1/1 Running 2 5d17h 10.2.20.143 k8s-node13 <none> <none>
- nginx-rs-2zhzn 1/1 Running 0 7h34m 10.2.231.96 k8s-node12 <none> <none>
- nginx-rs-7p64w 1/1 Running 0 7h34m 10.2.20.146 k8s-node13 <none> <none>
- nginx-rs-8jf8p 0/1 Terminating 0 12s 10.2.20.150 k8s-node13 <none> <none>
- nginx-rs-k9dvr 0/1 Terminating 0 12s 10.2.20.149 k8s-node13 <none> <none>
获取当前rs资源的Yaml: kubectl -n lxy get rs nginx-rs -oyaml
kubectl -n kube-system get deploy coredns -o yaml
- [root@k8s-master ~]# cat deployment.yaml
- apiVersion: apps/v1
- kind: Deployment
- metadata:
- name: nginx-deployment
- namespace: lxy
- spec:
- replicas: 2
- selector:
- matchLabels:
- app: nginx
- template:
- metadata:
- labels:
- app: nginx
- spec:
- containers:
- - name: nginx
- image: nginx:1.14.2
- ports:
- - containerPort: 80
- resources:
- limits:
- cpu: 100m
- memory: 200Mi
- requests:
- cpu: 100m
- memory: 200Mi
- [root@k8s-master ~]# kubectl get deployments.apps -owide -n lxy
- NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
- nginx-deployment 2/2 2 2 110s nginx nginx:1.14.2 app=nginx
- [root@k8s-master ~]# kubectl get rs -n lxy
- NAME DESIRED CURRENT READY AGE
- nginx-deployment-58df99679c 2 2 2 115s
- nginx-rs 2 2 2 8h
- [root@k8s-master ~]# kubectl get pods -l app=nginx -n lxy
- NAME READY STATUS RESTARTS AGE
- nginx-deployment-58df99679c-tqxps 1/1 Running 0 119s
- nginx-deployment-58df99679c-zhvcj 1/1 Running 0 119s
- nginx-rs-2zhzn 1/1 Running 0 8h
- nginx-rs-7p64w 1/1 Running 0 8h
pod和rs和deployment关系
kubectl describe pods nginx-deployment-AAA-XX
kubectl describe rs nginx-deployment-AAA
蓝绿更新:起一个新的Pod+删除一个旧pod,接替就是滚动更新
1.kubectl edit rs资源
2.kubectl scale --replicas=xxx rs rs名
3.edit 编辑deployment资源
4.deployment提供了 修改镜像版本 参数 kubectl set image
因为rs控制器还在,数据还在 kubectl get rs -owide -w / kubectl get rs -owide -n lxy
- #查看版本是1.14.2
- kubectl get deployments.apps -n lxy -owide
- #修改版本为1.14.1
- kubectl -n lxy set image deployment nginx-deployment nginx=nginx:1.14.1
- #这时候在查看是1.14.1,使用命令回归后,恢复成1.14.2
- kubectl rollout undo deployment nginx-deployment -n lxy
1.kubectl create -f last-deploy-nginx.yml --record ----创建的时候,记录版本号
2.查看deploy版本信息
kubectl rollout history deployment last-nginx-deployment
kubectl rollout status deployment last-nginx-deployment
kubectl rollout history deployment last-nginx-deployment --revision=2(指定那个版本的镜像信息)
3.指定回滚到哪个版本
kubectl rollout undo deployment last-nginx-deployment --to-revision=1
经典用法:
1.查看系统网络插件部署方式是Daemonset
2.根据标签选择器来保证每个node部署一个Pod的calico网络插件
kubectl -n kube-system get pod -owide --show-labels | grep calico
kubectl -n kube-system get ds --show-labels
3.daemonset 和 node 的关系,Node的亲和性
kubectl -n kube-system get ds calico-node -oyaml
4.可以看到nodeSelector中的信息,kubectl get nodes -owide --show-labels
可以看到labels 中含有该信息,是为node的亲和性
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。