Replication Controller 和 Replica Set

使用Replication Controller 、 Replica Set管理Pod

Replication Controller (RC)

简写为RC,能够使用rc做为kubectl工具的快速管理对象,用来管理多个Pod资源对象,不止针对一个pod对象。若是pod数量过多,则删除多的,若是pod数量减小,有pod不健康或者宕掉时,会从新启动一个pod,保证pod的总数不变,主要用来部署、升级Podphp

使用RC管理Podnginx

apiVersion: v1
kind: ReplicationController
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  replicat: 3            #设置副本数量
  selector:
    app: nginx          #选择管理的Pod 标签
  template:
    metadata:
      labels:
        app: nginx      #必须和selector选择的标签一致
    spec:
      containers:
      - name: nginx
        image: nginx
        imagePullPolicy: IfNotPresent
        ports:
        - name: http
          containerPort: 80

相比于Pod资源对象的部署文件模板,rc几乎保持一致,须要apiVersion,kind,metadata,spec,不一样在于rc中多了spec.template字段,spec.template下是Pod的模板,和Pod资源对象的格式同样。redis

Replica Set(RS)

简写为rs,下一代RC,功能基本同样,不一样之处在于,RC只支持等式标签选择selector(env=dev或environment!=qa),RS还支持基于集合的selector(version in (v1.0,v2.0))api

官方模板

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
  template:
    metadata:
      labels:
        tier: frontend
    spec:
      containers:
      - name: php-redis
        image: gcr.io/google_samples/gb-frontend:v3

总结下关于RC/RS的一些特性和做用吧:app

  • 大部分状况下,咱们能够经过定义一个RC实现的Pod的建立和副本数量的控制
  • RC中包含一个完整的Pod定义模块(不包含apiversionkind
  • RC是经过label selector机制来实现对Pod副本的控制的
  • 经过改变RC里面的Pod副本数量,能够实现Pod的扩缩容功能
  • 经过改变RC里面的Pod模板中镜像版本,能够实现Pod的滚动升级功能(可是不支持一键回滚,须要用相同的方法去修改镜像地址)
  • RS能够做为Pod水平伸缩的定标器(HPA)
相关文章
相关标签/搜索