k8s的pod控制器文件配置详解

  • 注:本文章只作配置项解释,请灵活运用
  • 注:template下内容参考pod参数(CronJob下template参考Job参数)
---  #ReplicaSet
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name:
  namespace:
  labels:
    controller: rs
spec:   # 详情描述
  replicas: 3 # 副本数量,默认值为1
  selector:   # 选择器,通过它指定该控制器管理哪些pod
    matchLabels:       # Labels匹配规则
      app: nginx-pod     # 对应template.metadata.labels.app值
    matchExpressions:  # Expressions匹配规则
      - {key: app, operator: In, values: [nginx-pod]}
  template:   # 模板,根据下面的模板创建pod副本,参考pod资源
    ...

---  #Deployment 
apiVersion: apps/v1 
kind: Deployment 
metadata: 
  name: 
  namespace: 
  labels: 
    controller: deploy
spec: 
  replicas: 3 # 副本数量,默认为1
  revisionHistoryLimit: 3 # 保留历史版本,默认为10
  paused: false # 暂停部署,默认是false
  progressDeadlineSeconds: 600 # 部署超时时间(s),默认是600
  strategy: # 更新策略
    type: [RollingUpdate,Recreate] # 滚动更新策略,RollingUpdate逐次滚动更新,Recreate重建更新,默认RollingUpdate
    rollingUpdate: # 逐次滚动更新,若上面为Recreate,则此选项不配置
      maxSurge: 30% # 最大额外可以存在的副本数,可以为百分比,也可以为整数
      maxUnavailable: 30% # 最大不可用状态的 Pod 的最大值,可以为百分比,也可以为整数
  selector: # 选择器,通过它指定该控制器管理哪些pod
    matchLabels:      # Labels匹配规则
      app: nginx-pod    # 与template.metadata.labels的值相对应
    matchExpressions: # Expressions匹配规则
      - {key: app, operator: In, values: [nginx-pod]}
  minReadySeconds: number #新创建的pod应在没有任何容器崩溃的情况下准备就绪的最短秒数,以使其被视为可用。默认值为0
  template: # 模板,根据下面的模板创建pod副本,参考pod资源
    ...

---  #HorizontalPodAutoscaler
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: pc-hpa
  namespace: dev
spec:
  minReplicas: number  #最小pod数量,默认1
  maxReplicas: number  #最大pod数量
  targetCPUUtilizationPercentage: number  # CPU使用率指标
  scaleTargetRef:   # 指定要控制的信息
    apiVersion: apps/v1
    kind: Deployment
    name: nginx

---  #DaemonSet
apiVersion: apps/v1 
kind: DaemonSet
metadata: 
  name: 
  namespace: 
  labels: 
    controller: daemonset
spec: 
  revisionHistoryLimit: 3 # 保留历史版本。默认10
  updateStrategy: # 更新策略
    type: [RollingUpdate,OnDelete] # 滚动更新策略
    rollingUpdate: # 滚动更新,type为RollingUpdate时可用
      maxUnavailable: 1 # 最大不可用状态的Pod的最大值,即pod最大一次性调整数,可以为百分比,也可以为整数,默认值为1,不可为0
  selector: # 选择器,通过它指定该控制器管理哪些pod
    matchLabels:      # Labels匹配规则
      app: nginx-pod
    matchExpressions: # Expressions匹配规则
      - {key: app, operator: In, values: [nginx-pod]}
  minReadySeconds: number #新创建的守护程序pod在没有任何容器崩溃的情况下准备就绪的最短秒数,以使其被视为可用。默认值为0
  template: # 模板,根据下面的模板创建pod副本,参考pod资源
    ...

---  #Job
apiVersion: batch/v1 
kind: Job
metadata: 
  name: 
  namespace: 
  labels: 
    controller: job
spec: 
  completions: 1 # 指定job需要成功运行Pods的次数。默认值: 1
  parallelism: 1 # 指定job在任一时刻应该并发运行Pods的数量。默认值: 1
  activeDeadlineSeconds: 30 # 指定job可运行的时间期限,超过时间还未结束,系统将会尝试进行终止。
  backoffLimit: 6 # 指定job失败后进行重试的次数。默认是6
  manualSelector: true # 是否可以使用selector选择器选择pod,默认是false
  selector: # 选择器,通过它指定该控制器管理哪些pod
    matchLabels:      # Labels匹配规则
      app: counter-pod
    matchExpressions: # Expressions匹配规则
      - {key: app, operator: In, values: [counter-pod]}
  template: # 模板,根据下面的模板创建pod副本,参考pod资源
    ...

---  #CronJob
apiVersion: batch/v1beta1 
kind: CronJob  
metadata: 
  name: 
  namespace: 
  labels: 
    controller: cronjob
spec:
  schedule: * * * * * # cron格式的作业调度运行时间点,用于控制任务在什么时间执行
  concurrencyPolicy: [Allow,Forbid,Replace] # 并发执行策略,用于定义前一次作业运行尚未完成时是否以及如何运行后一次的作业
                      #Allow允许并发运行,Forbid禁止并发运行,Replace替换前一次运行
  failedJobHistoryLimit: number # 为失败的任务执行保留的历史记录数,默认为1
  successfulJobHistoryLimit: number # 为成功的任务执行保留的历史记录数,默认为3
  startingDeadlineSeconds: number # 如果作业因任何原因错过计划时间,则启动作业的可选截止时间,单位秒
  jobTemplate: # 模板,根据下面的模板创建Job副本,参考Job资源
    ...
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐