第一代副本控制器

Replication Controller:  副本控制器(selector = !=) 

​https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/replicationcontroller/​

​https://kubernetes.io/zh-cn/docs/concepts/overview/working-with-objects/labels/​


第二代pod副本控制器

ReplicaSet: 和第一代控制器的区别:对选择器的支持(select 还支持in not in)

​​​​​https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/deployment/​


第三代副本控制器

比rs更高一级的控制器,除了有rs的功能之外,还有很多高级能,比如说重要的滚动升级、回滚等。第三代pod控制器


创建deployment yaml

vim nginx-deployment.ymal

apiVersion: apps/v1
kind: Deployment
metadata:
# 创建名为 nginx-deployment
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
# 定义了 Deployment 查找匹配key为app,value为nginx的pod
matchLabels:
app: nginx
template:
metadata:
# 给pod定义了key为app,value为nginx的标签
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80


创建deployment

kubectl apply -f https://k8s.io/examples/controllers/nginx-deployment.yaml

查看deployment

kubectl get deployment nginx-deployment
kubectl describe deployment nginx-deployment
kubectl get pods -A
kubectl get pods -A --show-labels -o wide
kubectl get pods --show-labels -o wide -n default

更新deploy

kubectl edit deployment/nginx-deployment
kubectl set image deployment/nginx-deployment nginx=nginx:1.16.1

删除deploy

kubectl delete deploy nginx-dp

回滚版本

回滚到最近一个版本,回滚到版本号为2的版本

kubectl rollout undo deployment/nginx-deployment
kubectl rollout undo deployment/nginx-deployment --to-revision=2

查看回滚状态

查看回滚状态。查看历史版本。查看指定恢复的版本

kubectl rollout status deployment/nginx-deployment
kubectl rollout history deployment/nginx-deployment
kubectl rollout history deployment/nginx-deployment --revision=4

运行 ​kubectl get rs​ 以查看 Deployment 通过创建新的 ReplicaSet 并将其扩容到 3 个副本并将旧 ReplicaSet 缩容到 0 个副本完成了 Pod 的更新操作

添加deployment副本数

kubectl scale deployment/nginx-deployment --replicas=10

水平伸缩

kubectl autoscale deployment/nginx-deployment --min=10 --max=15 --cpu-percent=80

资源限制

kubectl set resources deployment/nginx-deployment -c=nginx --limits=cpu=200m,memory=512Mi


DaemonSet控制器

DaemonSet控制器使用方法

​https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/daemonset/​