CC00131.CloudKubernetes——|KuberNetes&资源调度.V01|——|RC&ReplicaSet|

一、Replication Controller和ReplicaSet概述
### --- Replication Controller和ReplicaSet

~~~     Replication Controller(复制控制器,RC)和ReplicaSet(复制集,RS)是两种简单部署Pod的方式。
~~~     因为在生产环境中,主要使用更高级的Deployment等方式进行Pod的管理和部署,
~~~     所以本节只对Replication Controller和Replica Set的部署方式进行简单介绍。
### --- Replication Controller

~~~     Replication Controller(简称RC)可# 确保Pod副本数达到期望值,也就是RC定义的数量。
~~~     换句话说,Replication Controller可确保一个Pod或一组同类Pod总是可用。
~~~     如果存在的Pod大于设定的值,则Replication Controller将终止额外的Pod。
~~~     如果太小,Replication Controller将启动更多的Pod用于保证达到期望值。
~~~     与手动创建Pod不同的是,用Replication Controller维护的Pod在失败、删除或终止时会自动替换。
~~~     因此即使应用程序只需要一个Pod,也应该使用Replication Controller或其他方式管理。
~~~     Replication Controller类似于进程管理程序,
~~~     但是Replication Controller不是监视单个节点上的各个进程,而是监视多个节点上的多个Pod。
二、定义一个replication controller
### --- 创建replication controller.yaml配置文件

apiVersion: v1
kind: ReplicationController
metadata:
  name: nginx
spec:
  replicas: 3
  selector:
    app: nginx
  template:
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
三、ReplicaSet
### --- ReplicaSet概述

~~~     ReplicaSet是支持基于集合的标签选择器的下一代Replication Controller,
~~~     它主要用作Deployment协调创建、删除和更新Pod,
~~~     和Replication Controller唯一的区别是,ReplicaSet支持标签选择器。
~~~     在实际应用中,虽然ReplicaSet可以单独使用,
~~~     但是一般建议使用Deployment来自动管理ReplicaSet,除非自定义的Pod不需要更新或有其他编排等。
### --- 定义一个ReplicaSet实例

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: frontend
  labels:
    app: guestbook
    tier: frontend
spec:
  # modify replicas according to your case
  replicas: 3
  selector:
    matchLabels:
      tier: frontend
    matchExpressions:
      - {key: tier, operator: In, values: [frontend]}
  template:
    metadata:
      labels:
        app: guestbook
        tier: frontend
    spec:
      containers:
      - name: php-redis
        image: gcr.io/google_samples/gb-frontend:v3
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        env:
        - name: GET_HOSTS_FROM
          value: dns
          # If your cluster config does not include a dns service, then to
          # instead access environment variables to find service host
          # info, comment out the 'value: dns' line above, and uncomment the
          # line below.
          # value: env
        ports:
        - containerPort: 80
### --- ReplicaSet说明

~~~     Replication Controller和ReplicaSet的创建删除和Pod并无太大区别,
~~~     Replication Controller目前几乎已经不在生产环境中使用,
~~~     ReplicaSet也很少单独被使用,
~~~     都是使用更高级的资源Deployment、DaemonSet、StatefulSet进行管理Pod。
四、ReplicaSet是基于deployment管理的
### --- 查看该创建的deployment

[root@k8s-master01 ~]# kubectl get deploy -n kube-system
NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
calico-kube-controllers   1/1     1            1           8d
coredns                   1/1     1            1           8d
metrics-server            1/1     1            1           8d
### --- 查看deployment.yaml配置文件
 
[root@k8s-master01 ~]# kubectl get deploy -n kube-system metrics-server -oyaml
  conditions:
  - lastTransitionTime: "2021-04-09T16:02:44Z"
    lastUpdateTime: "2021-04-09T16:03:38Z"
    message: ReplicaSet "metrics-server-595f65d8d5" has successfully progressed.
### --- 查看到他管理的ReplicaSet是谁
~~~     每一次升级都会重新生成一个rc或者rs
~~~     在生产环境中已经很少去单独创建RC或者RS;而是使用更高级的资源

[root@k8s-master01 ~]# kubectl get rs -n kube-system
NAME                                 DESIRED   CURRENT   READY   AGE
metrics-server-595f65d8d5            1         1         1       8d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yanqi_vip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值