设为首页 收藏本站
查看: 1083|回复: 0

[经验分享] Replication Controller

[复制链接]
发表于 2018-1-5 21:13:12 | 显示全部楼层 |阅读模式
  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
[iyunv@kubernetes-master pods]# kubectl get rc nginx

  NAME      DESIRED   CURRENT   READY     AGE
  nginx      2              2                2        1m
  查询pod容器
[iyunv@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
[iyunv@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)
[iyunv@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拉起来
[iyunv@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
[iyunv@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中修改。
[iyunv@kubernetes-master pods]# kubectl create -f nginx.yaml

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

  replicationcontroller "my-nginx" autoscaled

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-432032-1-1.html 上篇帖子: [k8s]helm原理&私有库搭建&monocularui和kubeapp探究 下篇帖子: 老司机和你深聊 Kubenertes 资源分配之 Request 和 Limit 解析
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表