资讯专栏INFORMATION COLUMN

K8S ReplicationController模板

白马啸西风 / 627人阅读

在用户定义范围内,如果pod增多,则ReplicationController会终止额外的pod,如果减少,RC会创建新的pod,始终保持在定义范围。例如,RC会在Pod维护(例如内核升级)后在节点上重新创建新Pod。

  • ReplicationController会替换由于某些原因而被删除或终止的pod,例如在节点故障或中断节点维护(例如内核升级)的情况下。因此,即使应用只需要一个pod,我们也建议使用ReplicationController

  • RC跨多个Node节点监视多个pod 详情可参考中文社区:http://docs.kubernetes.org.cn/437.html

  • image.png

apiVersion: v1                            # 指定api版本,此值必须在kubectl apiversion中
kind: ReplicationController               # 指定创建资源的角色/类型
metadata:                                 # 资源元数据/属性
  name: test-rc                           # 资源名字。在同一个namespace中必须唯一
  labels:                                 # 设定资源标签
  k8s-app: apache
    software: apache
    project: test
    app: test-rc
    version: v1
  annotations:                            # 自定义注解列表
    - name: String                        # 自定义注解名字
spec:
  replicas: 2                             # 副本数量2
  selector:                               # RC通过spec.selector来筛选要控制的pod
    software: apache
    project: test
    app: test-rc
    version: v1
    name: test-rc
  template:                               # 这里pod定义
    metadata:
      labels:                             # Pod的label,这个label与spec.selector相同
        software: apache
        project: test
        app: test-rc
        version: v1
        name: test-rc
    spec:                                 # specification of the resource content
      restartPolicy: Always               # 表明该容器一直运行,退出会自动重建
      nodeSelector:                       # 节点选择
        zone: node1
      containers:
      - name: web04-pod                   # 容器的名字
        image: web:apache                 # 容器使用的镜像地址
        imagePullPolicy: Never            # 容器启动时检查镜像策略,Always每次都检查,Never从不检查(不管本地是否有),IfNotPresent本地有就不检查,如果没有就拉取
        command: ['sh']                   # 启动容器的运行命令,将覆盖容器中的Entrypoint,对应Dockerfile中的ENTRYPOINT
        args: ['$(str)']                  # 启动容器的命令参数,对应Dockerfile中的CMD参数
        env:                              # 指定容器中的环境变量
        - name: str                       # 变量名称
          value: '/etc/run.sh'            # 变量值
        resources:                        # 资源管理
          requests:                       # 容器运行最低资源需求
            cpu: 0.1                      # CPU资源(核数),最少值为0.001核(1m)
            memory: 32Mi                  # 内存使用量
          limits:
            cpu: 0.5
            memory: 32Mi
        ports:
        - containerPort: 80               # 容器开放对外端口
          name: httpd                     # 名称
          protocol: TCP
        livenessProbe:                    # pod内容器健康检查的设置
          httpGet:                        # 通过httpget检查健康200-399之间容器正常
          path: /                         # URI地址
          port: 80
          #host: 127.0.0.1                # 主机地址
          scheme: HTTP
        initialDelaySeconds: 180          # 表明第一次检测在容器启动后多次时间后开始
        timeoutSeconds: 5                 # 检测的超时时间
        periodSeconds: 15                 # 检查间隔时间
       
        #方法2
        #exec: 执行命令的发法进行监测,如果其退出码不为0,则认为容器正常
        #command:
          #- cat
          #- /tmp/health
        
        #方法3
        #tcpSocket: //通过tcpSocket检查健康
          #port: number
        lifecycle:                        # 声明周期管理
          postStart:                      # 容器创建之后,运行之前运行的任务
            exec:
              command:
                - 'sh'
                - 'yum upgrade -y'
          preStop:                        # 容器关闭之前运行的任务
            exec:
              command: ['service httpd stop']
      volumeMounts:                       # 永久存储挂载
      - name: volume                      # 挂载设备名字,与volumes[*].name 需要对应
        mountPath: /data                  # 挂载到容器的某个路径下
        readOnly: True
      volumes:                            # 定义一组挂载设备
      - name: volume                      # 定义一个挂载设备的名字
        #meptyDir:{}
        hostPath:
          path:/opt                       # 挂载设备类型为hostpath,路径为宿主下的/opt


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128144.html

相关文章

  • 一个网站的微服务架构实战(2)k8s迁移

    摘要:前言我们一起回顾上一篇文章平台的微服务架构和,一共通过构建了三个镜像数据库,部署前端页面的,和接口。最近阿里云产品春节大促销,我一时没忍住又买了一台服务器,打完折扣还是很贵。是一个非常稳定的,可移植的网络文件系统。 前言 我们一起回顾上一篇文章《Bees平台的微服务架构(1)docker和docker-compose》,一共通过Dockerfile构建了三个docker镜像:mysql...

    Forelax 评论0 收藏0
  • k8s的资源分配

    摘要:整个名称空间下的资源配额利用搭建部署服务,并在正式的场合使用时,几乎是肯定要引入一个用户概念的。如下创建一个创建了后我们每次创建一个也即都要指定它的资源配额,否则即便创建成功,容器也不能起来。 限制每个实例 在创建一个replicationcontroller(以下简称rc)时,我们可以在创建文件中指定pod的资源配额,如下面的json: { kind: Replicat...

    awkj 评论0 收藏0
  • 利用K8S技术栈打造个人私有云(连载之:K8S环境理解和练手)

    摘要:常见的和等都是属于某一个的默认是,而等则不属于任何。其实其的命令和上面都差不多,这里不一一列出了创建查看启动情况是一个定义了一组的策略的抽象,可以理解为抽象到用户层的一个宏观服务。其实这个概念在集群里也有,可以参照理解。 showImg(https://segmentfault.com/img/remote/1460000013229549); 【利用K8S技术栈打造个人私有云系列文...

    kid143 评论0 收藏0
  • 利用K8S技术栈打造个人私有云(连载之:K8S环境理解和练手)

    摘要:常见的和等都是属于某一个的默认是,而等则不属于任何。其实其的命令和上面都差不多,这里不一一列出了创建查看启动情况是一个定义了一组的策略的抽象,可以理解为抽象到用户层的一个宏观服务。其实这个概念在集群里也有,可以参照理解。 showImg(https://segmentfault.com/img/remote/1460000013229549); 【利用K8S技术栈打造个人私有云系列文...

    30e8336b8229 评论0 收藏0

发表评论

0条评论

白马啸西风

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<