zoukankan      html  css  js  c++  java
  • Controller之deployment

    1.什么是controller

    controller是集群上管理和运行容器的对象,controller可以实现pod应用的运维。

    ①保证pod数量:确保K8s中有指定数量的Pod在运行,如果少于指定数量的pod, Controller会创建新的。

    ②保证pod健康:当pod不健康,运行出错或者无法提供服务时,Controller会杀死不健康的pod,重新启动新的pod。

    ③弹性伸缩 :在业务高峰或者低峰期的时候,通过 Controller动态的调整pod的数量来提高资源的利用率。

    ④滚动升级:平滑的升级方式,通过逐步替换,保证系统的整体稳定性。

    2.controller如何关联pod

    通过labels标签建立关联, key.value键值对标识,例如:

    selector:

           app:nginx 

    labels:

           app:nginx   

    3.controller之deployment的应用场景。

    ①部署无状态应用

    ②管理pod和Replicaset副本

    ③部署,滚动升级等功能

    ④常用于部署web服务/微服务

    注:

    replication controller RC是第一代副本控制器,deployment是第二代。区别:

    ①deployment同样是为了保证pod数量和健康而存在的,90%的功能与RC完全一样,它还有许多新增的功能,具体百度。

    ①deployment在控制器与pod之间多了一层RS结构

    ②对于deployment的yaml文件的修改会实施生效,而rc只有新的pod生效。

    ④升级回滚等的操作命令也有所不同。

    4.创建deployment示例

    ①创建deploymentyaml文件

    kubectl create deployment web --image=nginx --dry-run -o yaml > web.yaml

    --dry-run参数  :试着运行,不真正运行。

    ②使用上面创建的yaml部署这个deployment

    kubectl create -f web.yaml

    ③对外发布,暴露nginx端口号,这里没加--dry-run参数,所以输出yaml文件的时候也同时执行了,

    kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name=web80 -o yaml > web80.yaml

     

     

     

    ④通过节点IP加32343端口号能正常访问容器里nginx服务。

     

    ⑤删除创建的所有资源

     5.deployment升级回滚

    ①创建一个低版本的nginx

     

     ②升级nginx镜像版本为1.15

    kubectl set image deployment web nginx=nginx:1.15

    由下图可看出k8s在进行升级时:

    单pod: 新的pod工作后再删除原来的pod

    多pod:可能创建新pod时,删除原有部分pod。

    图中升级后1.15版本nginx已经正常工作了。

     

     ③查看升级状态

    kubectl rollout status deployment web

     ④查看升级回滚的历史版本

    kubectl rollout history deployment web

    1是未升级的1.14版本

    2是升级后的1.15版本

     ⑤回滚到上一个版本和指定版本语法

    kubectl rollout undo deployment web         #回滚到上一个版本

    kubectl rollout undo deployment web --to-revision=2     #回滚到指定的版本2

    图示还原到1.1.4版本了。当前1.14版本即现在的3

    图示还原到1.15版本了,当前1.15版本即现在的4

     

     

    6.弹性伸缩

    kubectl scale deployment web --replicas=6

    原来这个deployment只有2个pod,现在扩到6总共6个

    kubenetes官网:

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

    https://kubernetes.io/zh/docs/concepts/workloads/controllers/replicaset/

    kubenetes社区:

    https://www.kubernetes.org.cn/deployment

  • 相关阅读:
    2019/9/8
    实现简单的网页登录注册功能 (使用html和css以及javascript技术) 没有美化的日后补全
    测试一些以前的代码
    使用三层开发遵循的原则
    超市管理
    热身训练
    考试第三题
    考试第七题
    考试第10题
    考试第8题
  • 原文地址:https://www.cnblogs.com/you-xiaoqing/p/14371676.html
Copyright © 2011-2022 走看看