• 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

  • 相关阅读:
    奇偶游戏(带权并查集)
    银河英雄传说(边带权并查集)
    程序自动分析(并查集+离散化)
    关于树状数组的小总结(树状数组)
    你能回答这些问题吗 (线段树)
    Phython 3 笔记3 —— 类,库与文件的读写
    Phython 3 笔记2 —— 基础语法
    Phython 3 笔记1 —— 基础容器
    CRJ巨佬gjd算法伪代码
    CRJ巨佬的gjd算法模板
  • 原文地址:https://www.cnblogs.com/you-xiaoqing/p/14371676.html
Copyright © 2020-2023  润新知