Replication Controller
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的更多相关文章
- kubernetes进阶之五:Replication Controller&Replica Sets&Deployments
一:Replication Controller RC是kubernetes的核心概念之一.它定义了一个期望的场景即声明某种Pod的副本数量在任意时候都要符合某个预期值. 它由以下几个部分组成: 1. ...
- kubernetes 1.3管中窥豹- RS(Replica Sets):the next-generation Replication Controller
前言 kubernates 1.3出了几个新的概念,其中包括deployments,Replica Sets,并且官网称之为是the next-generation Replication Contr ...
- Replication Controller 和 Replica Set
使用Replication Controller . Replica Set管理Pod Replication Controller (RC) 简写为RC,可以使用rc作为kubectl工具的快速管理 ...
- Replication Controller、Replica Set
假如我们现在有一个Pod正在提供线上的服务,我们来想想一下我们可能会遇到的一些场景: 某次运营活动非常成功,网站访问量突然暴增 运行当前Pod的节点发生故障了,Pod不能正常提供服务了 第一种情况,可 ...
- kubernetes concepts -- Replication Controller
Edit This Page ReplicationController NOTE: A Deployment that configures a ReplicaSet is now the reco ...
- kubernets之Replication Controller
一 Replication Controller的介绍 pod可能会由于各种原因消失和多出来,例如node节点去除集群或者人为的手工创建,所以为了方便和管理pod的数量,k8s里面 的另外 ...
- kubernetes in action - Replication Controller
理解这个问题,就是pods在Kubernetes中怎么进行failover 在Kubernetes的work node上有kubelet,会负责监控该work node上的pods,如果有contai ...
- kubernetes的Controller Manager
1. Controller Manager简介 Controller Manager作为集群内部的管理控制中心,负责集群内的Node.Pod副本.服务端点(Endpoint).命名空间(Namespa ...
- Kubernetes Controller Manager
Controller Manager 作为集群内部的管理控制中心,负责集群内的Node.Pod副本.Service Endpoint.NameSpace.ServiceAccount.Resource ...
随机推荐
- 20155232 2016-2017-3 《Java程序设计》第7周学习总结
20155232 2016-2017-3 <Java程序设计>第7周学习总结 教材学习内容总结 第十三章 1.Greenwich MeanTime,格林威治时间,简称GMT时间,由观察太阳 ...
- 个人集群部署hadoop 2.7 + hive 2.1
环境:centos 6.6 x64 (学习用3节点) 软件:jdk 1.7 + hadoop 2.7.3 + hive 2.1.1 环境准备: 1.安装必要工具 yum -y install open ...
- php 获取唯一字符串与文件扩展名函数
/** * 生成唯一字符串 * @return string */ function getUniqueStr(){ return md5(uniqid(microtime(true),true)); ...
- mnist 手写数字识别
mnist 手写数字识别三大步骤 1.定义分类模型2.训练模型3.评价模型 import tensorflow as tfimport input_datamnist = input_data.rea ...
- [转]Ubuntu下ROS开发环境搭建(QT+ros_qtc_plugin)
ROS与C++入门教程-搭建开发环境(QT+ros_qtc_plugin) PS : 在“安装ros_qtc_plugin插件”这一步中,原文提到“ Ubuntu 14.04使用apt-get方式安装 ...
- 小白欢乐多——记ssctf的几道题目
小白欢乐多--记ssctf的几道题目 二哥说过来自乌云,回归乌云.Web400来源于此,应当回归于此,有不足的地方欢迎指出. 0x00 Web200 先不急着提web400,让我们先来看看web200 ...
- 无需登录-悟空CRM 存储型XSS
无需登录-悟空CRM 存储型XSS 审计悟空的缘由是看见某云爆出CRM的getshell,于是就想着去挖出来瞅瞅!但可能自己把自己给局限了,就想着去挖那些无限制访问的文件. 故事的发生点 漏洞文件:/ ...
- MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题 收藏 MySQL中涉及的几个字符集
MySQL中涉及的几个字符集 character-set-server/default-character-set:服务器字符集,默认情况下所采用的.character-set-database:数据 ...
- Framebuffer 驱动学习总结(二)---- Framebuffer模块初始化
---恢复内容开始--- Framebuffer模块初始化过程:--driver\video\fbmem.c 1. 初始化Framebuffer: FrameBuffer驱动是以模块的形式注册到系统 ...
- aarch64_l3
librdmacm-utils-1.1.0-4.fc26.aarch64.rpm 2017-02-12 07:12 87K fedora Mirroring Project libreadline-j ...