美文网首页Kubernets
kuberntes deployment 的使用

kuberntes deployment 的使用

作者: 条子在洗澡 | 来源:发表于2019-04-16 05:23 被阅读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
    
    

    相关文章

      网友评论

        本文标题:kuberntes deployment 的使用

        本文链接:https://www.haomeiwen.com/subject/veomwqtx.html