Kubernets

kuberntes deployment 的使用

2019-04-16  本文已影响22人  条子在洗澡

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

上一篇 下一篇

猜你喜欢

热点阅读