deployment的作用
1.批量增加,删除 pod
2.保持可用pod数量不变,即使pod挂了,也可以自动创建新的pod
查看deployment
kubectl get deployments
创建deployment
#获取帮助
kubectl run --help
#获取并修改yaml文件
kubectl run nginx --image=nginx --dry-run -o yaml >nginx_deployment.yaml
#修改文件,为自己需要的配置即可
vim nginx_deployment.yaml
#deployment.yaml 使用
kubectl apply -f nginx_deployment.yaml
3种变更deployment方式
#1.在线修改.修改后保存立刻生效
kubectl edit deployments nginx
#2.修改yaml 文件后再次执行apply
kubectl apply -f nginx_deployment.yaml
#3.命令行scale 直接修改副本数为20
kubectl scale deployment nginx --replicas=20
删除deployment,其pod自动全部删除
kubectl delete deployments nginx
滚动更新,3种方式
#查看deployment
kubectl get deployments -o wide
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
nginx 1 1 1 1 44m nginx nginx run=nginx
#设置变更,将nginx版本变更为1.9
#1.直接编辑deployment
#注意:maxSurge:在升级过程中一次升级几个,可以使用百分比,10%,一次升级pod的10%;
#maxUnavailable:在升级过程中,只能有几个不可用,可以使用百分比,10%,一次升级有10%pod不可用。
kubectl edit deployments nginx
#2.修改yaml文件,并apply即可
#3.命令行直接设置,--record为记录变更命令,便于查看
kubectl set image deployment/nginx nginx=nginx:1.9 --record
#回滚到上次变更
kubectl rollout undo deployment nginx
#查看deployment,变更历史记录
kubectl rollout history deployment/nginx
#切换到某指定版本,如revision=2
kubectl rollout undo deployment/nginx --to-revision=2
水平自动更新 HPA
通过检测pod CPU的负载,解决deployment里某pod负载太重,动态伸缩pod的数量来负载均衡
#使用autoscale 参数创建hpa
#设置nginx deployment为最小2个pod,最多10个pod,
#当副本数小于2,则创建副本,使之最少为2,当副本数大于10,则减伤副本数为10;
#当pod的cpu使用率超过80%,会增加pod数量,cpu使用率下降后会减少pod。
kubectl autoscale deployment nginx --min=2 --max=10 --cpu-percent=80
#查看看hpa
[root@k8s-master1 k8s_yaml]# kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
nginx Deployment/nginx <unknown>/80% 2 10 0 4s
#当前cpu的使用量为unknown,修改配置解决
#参考https://cloud.tencent.com/developer/ask/130848
vim /etc/kubernetes/manifests/kube-controller-manager.yaml
#添加两行信息
- command:
- --horizontal-pod-autoscaler-use-rest-clients=false
- --horizontal-pod-autoscaler-sync-period=10s
修改 nginx 的deployment信息
kubectl edit deployment nginx
container先添加信息
resources:
requests:
cpu: 400m
如下:
containers:
- image: nginx
imagePullPolicy: Always
name: nginx
resources:
requests:
cpu: 400m
#hpa简单测试方法
#进入到某pod里,执行多个
cat /dev/zero > /dev/null &
#观察pod的数目变化,及hpa的cpu使用量
#在物理机里
killall -9 cat
#观察pod的数目
#删除hpa
kubectl delete hpa nginx
网友评论