RC保证在同一时间能够运行指定数量的Pod副本,保证Pod总是可用。如果实际Pod数量比指定的多就结束掉多余的,如果实际数量比指定的少就启动缺少的。

当Pod失败、被删除或被终结时,RC会自动创建新的Pod来保证副本数量,所以即使只有一个Pod,也应该使用RC来进行管理。

来个简单例子:

 apiVersion: v1
kind: ReplicationController //ReplicationController类型
metadata:
name: nginx //pod名字
spec:
replicas: 2 //2个副本
selector:
app: nginx //通过这个标签找到生成的pod
template: //定义pod模板,在这里不需要定义pod名字,就算定义创建的时候也不会采用这个名字而是.metadata.generateName+5位随机数。
metadata:
labels: //定义标签
app: nginx //key:v 这里必须和selector中定义的KV一样
spec:
containers: //rc 的容器重启策略必须是Always(总是重启),这样才能保证容器的副本数正确
- image: nginx
name: nginx
ports:
- containerPort: 80

提示:

K8S 通过template来生成pod,创建完后模板和pod就没有任何关系了,rc通过 labels来找对应的pod,控制副本

查询rc

[root@kubernetes-master pods]# kubectl get rc nginx
NAME DESIRED CURRENT READY AGE
nginx      2              2                2        1m

查询pod容器

[root@kubernetes-master pods]# kubectl get pod --selector app=nginx

NAME           READY       STATUS        RESTARTS          AGE
nginx-2jhlv      1/1              Running              0                     2m
nginx-hbtqj     1/1               Running              0                     2m

同时查询rc和rc创建的pod
[root@kubernetes-master pods]# kubectl get pod --selector app=nginx --label-columns app
NAME           READY            STATUS           RESTARTS          AGE       APP
nginx-2jhlv      1/1                  Running                 0                     2m       nginx
nginx-hbtqj     1/1                  Running                  0                    2m        nginx

删除pod会后会立刻在拉起一个pod

删除rc后pod也被删除(--cascade=false只删除rc保留创建的pod)

[root@kubernetes-master pods]# kubectl delete rc nginx
replicationcontroller "nginx" deleted

模板和RC可意分别定义

1先定义一个模板,然后创建

 apiVersion: v1
kind: PodTemplate
metadata:
name: my-nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx
name: nginx
ports:
- containerPort: 80

创建后并不会把pod拉起来

[root@kubernetes-master pods]# kubectl create -f template.yml
podtemplate "my-nginx" created

查看模板池

2定义rc

 apiVersion: v1
kind: ReplicationController
metadata:
name: my-nginx
spec:
replicas: 2
templateRef:
app: nginx

这个暂时有问题还无法通过RC拉起来templatekubectl create -f rc.yml

修改rc模式下的一个pod label

[root@kubernetes-master pods]# kubectl label pod nginx-qqf16 app=debug --overwrite
pod "nginx-qqf16" labeled

当修改一个pod标签后就摆脱RC控制了,如果将标签在改回去那么将有一个POD被干掉,超过了RC最大副本数

将标签改回去

弹性伸缩(手动):

kubectl scale replicationcontroller 【pod-name】 --replicas=1

自动伸缩:

Kubernetes有一个HPA(Horizontal Pod Autoscaler)的东东,可以实现基于CPU使用率的Pod自动伸缩的功能。 HPA基于Master Node上的kube-controller-manager服务启动参数--horizontal-pod-autoscaler-sync-period定义的时长(默认为30秒),周期性的检测Pod的CPU使用率(需要事先安装heapster)。使用kubeadm初始化的集群,如果需要设置--horizontal-pod-autoscaler-sync-period可以在Master Node上的/etc/kubernetes/manifests/kube-controller-manager.json中修改。

[root@kubernetes-master pods]# kubectl create -f nginx.yaml
replicationcontroller "my-nginx" created

cpu超过%80就会拉起一个pod,最大5个pod,当cpu使用率小于%80 pod就会缩小
[root@kubernetes-master pods]# kubectl autoscale rc my-nginx --min=1 --max=5 --cpu-percent=80   
replicationcontroller "my-nginx" autoscaled

Replication Controller的更多相关文章

  1. kubernetes进阶之五:Replication Controller&Replica Sets&Deployments

    一:Replication Controller RC是kubernetes的核心概念之一.它定义了一个期望的场景即声明某种Pod的副本数量在任意时候都要符合某个预期值. 它由以下几个部分组成: 1. ...

  2. kubernetes 1.3管中窥豹- RS(Replica Sets):the next-generation Replication Controller

    前言 kubernates 1.3出了几个新的概念,其中包括deployments,Replica Sets,并且官网称之为是the next-generation Replication Contr ...

  3. Replication Controller 和 Replica Set

    使用Replication Controller . Replica Set管理Pod Replication Controller (RC) 简写为RC,可以使用rc作为kubectl工具的快速管理 ...

  4. Replication Controller、Replica Set

    假如我们现在有一个Pod正在提供线上的服务,我们来想想一下我们可能会遇到的一些场景: 某次运营活动非常成功,网站访问量突然暴增 运行当前Pod的节点发生故障了,Pod不能正常提供服务了 第一种情况,可 ...

  5. kubernetes concepts -- Replication Controller

    Edit This Page ReplicationController NOTE: A Deployment that configures a ReplicaSet is now the reco ...

  6. kubernets之Replication Controller

    一  Replication Controller的介绍      pod可能会由于各种原因消失和多出来,例如node节点去除集群或者人为的手工创建,所以为了方便和管理pod的数量,k8s里面 的另外 ...

  7. kubernetes in action - Replication Controller

    理解这个问题,就是pods在Kubernetes中怎么进行failover 在Kubernetes的work node上有kubelet,会负责监控该work node上的pods,如果有contai ...

  8. kubernetes的Controller Manager

    1. Controller Manager简介 Controller Manager作为集群内部的管理控制中心,负责集群内的Node.Pod副本.服务端点(Endpoint).命名空间(Namespa ...

  9. Kubernetes Controller Manager

    Controller Manager 作为集群内部的管理控制中心,负责集群内的Node.Pod副本.Service Endpoint.NameSpace.ServiceAccount.Resource ...

随机推荐

  1. cdn_一些常用的cdn地址

    https://code.jquery.com/jquery-3.3.1.jshttps://cdn.bootcss.com/jquery/2.1.4/jquery.min.js https://cd ...

  2. APScheduler API -- apscheduler.schedulers.base

    apscheduler.schedulers.base API class apscheduler.schedulers.base.BaseScheduler(gconfig={}, **option ...

  3. 【navicat112_premium】navicat112_premium数据库连接工具安装过程

    此工具及其方便,可以连接mysql.oracle.sqlserver登数据库... 1.下载安装包Navicat Premium_11.2.7简体中文版.rar 下载地址:http://qiaoliq ...

  4. flask基础之app初始化(四)

    前言 flask的核心对象是Flask,它定义了flask框架对于http请求的整个处理逻辑.随着服务器被启动,app被创建并初始化,那么具体的过程是这样的呢? 系列文章 flask基础之安装和使用入 ...

  5. 八、springboot整合redis

    整合Redis 一. 注解方式实现添加缓存 1.在pom.xml加入依赖 <!-- 配置使用redis启动器 --> <dependency> <groupId>o ...

  6. 04 Effective Go 高效的go语言 重点内容

    Effective Go  高效的go语言 Introduction 介绍 Examples 例子 Formatting 格式 Commentary 评论 Names 名字 Package names ...

  7. java基础77 Http协议及Servlet中的GET、POST提交方式

    本文知识点(目录): 1.什么是http协议    2.查看http协议的工具    3.http协议的内容    4.请求方式    5.请求头和响应头(以及获取请求头信息的方法)    6.实体内 ...

  8. git —— 异常1,index.lock

    git提交过程中出现的问题 解决方法:找到 index.lock文件将其删除 一般 index.lock 在.git下面, 有时 .git 是隐藏的,但是无论怎样, 可以通过 everything 找 ...

  9. 洛谷P3621风铃

    传送门啦 分析: 这个题看起来像是个树形dp,嗯,就是看起来像. 所以我们就按树形dp的思路去分析就好了,这个题是一个树形dp的变形题. 和以前建树是一样的,我们用邻接表来进行储存.利用邻接表的特性, ...

  10. Java--Jackson转换Date,Timestamp 到格式化字符串

    package com.diandaxia.test; import java.sql.Timestamp; import java.util.Date; /** * Created by del-b ...