• 【云原生 • Kubernetes】kubernetes 核心技术 - RC、Replica Set 和 Deployment


    在这里插入图片描述


    1. Repliaction Controller 概述

    Replication Controller(RC) 是 Kubernetes 系统中核心概念之一,当我们定义了一个 RC 并提交到 K8s 集群中以后,Master 节点上的 Controller Manager 组件就得到通知,定期检查系统中存活的 Pod,并确保目标 Pod 实例的数量刚好等于 RC 的预期值,如果有过多或过少的 Pod 运行,系统就会停掉或创建一些 Pod。此外我们也可以通过修改 RC 的副本数量,来实现 Pod 的动态缩放功能。

    在这里插入图片描述

    由于 Replication Controller 与 Kubernetes 代码中的模块 Replication Controller 同名,所以在 K8s v1.2 版本时,它升级为了一个新的概念 Replica Sets,官方解释为下一代的 RC。二者主要的区别在于:

    • Replica Sets 支持基于集合的 Label selector。
    • RC 只支持基于等式的 Label Selector。

    所以 Replica Set 是很少单独使用的,它主要被 Deployment 这个更高层面的资源对象所使用,从而形成一整套 Pod 创建、删除、更新的编排机制。

    在这里插入图片描述

    RC 常用操作

    配置文件

    apiVersion: v1
    kind: ReplicationController 
    metadata:
       name: tomcat-rc 
    spec:
       replicas: 3 
       template:
          metadata:
             name: Tomcat-ReplicationController
          labels:
             app: App
             component: neo4j
          spec:
             containers:
             - name: tomcat
             image: tomcat: 8.0
             ports:
                - containerPort: 8080
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • Kind: ReplicationController 中的值 ReplicationController 表示 kubectl 将使用 yaml 文件来创建 Replication Controller(RC)。
    • name: tomcat-rc 将用于识别创建 Replication Controller(RC) 的名称。
    • name: tomcat 表示容器的名称定义为 tomcat,pod 中出现的容器是 tomcat。
    • replicas: 3 表示需要在 pod 生命周期的任何时间点维护一个 pod 的三个副本。
    • containerPort: 8080 是确保集群中的所有节点都暴露在同一个端口 8080 上。

    缩容 Pod

    kubectl scale replicationcontroller tomcat-rc --replicas=1
    replicationcontroller "tomcat-rc" scaled
    kubectl get pod -l name
    kubectl get rc tomcat-rc
    
    • 1
    • 2
    • 3
    • 4

    扩容 Pod

    kubectl scale replicationcontroller tomcat-rc --replicas=4
    replicationcontroller "tomcat-rc" scaled
    kubectl get pod -l name
    kubectl get rc tomcat-rc
    
    • 1
    • 2
    • 3
    • 4

    判断及修改副本数量

    判断当前副本数是否为3个,如果是,则更改为1个副本:

    kubectl scale rc tomcat-rc --current-replicas=3 --replicas=1
    
    • 1

    2. Replica Set 概述

    Replica Set 跟 Replication Controller 没有本质的不同,只是名字不一样,并且 ReplicaSet 支持集合式的 selector。Kubernetes 官方强烈建议避兔直接使用 ReplicaSet,而应该通过 Deployment 来创建 RS 和 Pod。由于 Replica Set 是 Replication Controller 的代替物,因此用法基本相同。

    在这里插入图片描述

    3. Deployment 概述

    Deployment 是 Kubenetes v1.2 引入的新概念,Deployment 目的主要是为了更好的解决 Pod 的编排问题,Deployment 内部使用了 Replica Set 来实现。Deployment 的定义与 Replica Set 的定义类似,除了 API 声明与 Kind 类型有所区别。

    在这里插入图片描述
    如下为 Deployment 定义方式:

    apiVersion: extentsions/v1beta1
    kind: Deployment
    metadata:
      name: frontend
    spec:
      replicas: 1
      selector:
        matchLabels:
          tier: frontend
        matchExpressions:
          - {key: tier, operator: In, values: [frontend]}
      template:
        metadata:
          labels:
            app: app-demo
            tier: frontend
        spec:
          containers:
          - name: tomcat-demo
            image: tomcat
            ports:
            - containerPort: 8080
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    可以看到,该定义方式与 Replica Set 区别除了 apiVersionkind 两个参数不同之外,其他都是一样的。

    本章学习目标:掌握 RC、Replica Set、Deployment 的相关概念和用法。

    在这里插入图片描述

  • 相关阅读:
    矩阵与线性变换
    【C++基础】实现日期类
    学习记忆——宫殿篇——记忆宫殿——记忆桩——工人宿舍
    C# 内存泄漏之 Internal 关键词代表什么?
    JVM内存布局、类加载机制及垃圾回收机制详解
    网上智慧教育云vr实验室管理系统促进教学公平和普及
    [附源码]Python计算机毕业设计SSM金牛社区疫情防控系统(程序+LW)
    三十四、openlayers官网示例Dynamic clusters解析——动态的聚合图层
    javaWebssh票据管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计
    【OpenCV实现图片以及视频的读取、显示、保存以及绘图函数】
  • 原文地址:https://blog.csdn.net/weixin_53072519/article/details/126350745