kubernetes (k8s) yaml文件详解

1.kubernetes yaml文件详解

apiVersion: v1
kind: Deployment                      #资源类型:
metadata:                             #元数据
  name:  <deploy-name>                #资源的名字,在同一个namespace中必须唯一
  namespace: <ns-name>                #命名空间,类似分组管理,同一个命名空间中的deployment名字是唯一的
  labels:                             #设置标签
    <key>: <value>
spec:                                 #规格
  replicas: 2                         #pod副本个数    
  selector:                           #标签选择器
    matchLabels:                      #通过标签选择器进行管理拥有该label的pod
      <key>: <value>
  revisionHistoryLimit: 5             #回滚历史版本的个数
  progressDeadlineSeconds: 600        #可选参数;deployment 卡住执行出现错误时,等待deployment 进行的时间秒数,deployment controller会继续重试。设置该值必须大于.spec.minReadySeconds。
  minReadySeconds: 0                  #可选参数,默认为0(pod 在ready后就被认为可用),pod中容器没有crash 并被认为可用状态的最小秒数。
  strategy:                           #更新的策略,默认为rollingUpdate , 可选Recreate 在创建新pod之前会杀掉所有已经存在的pod
    rollingUpdate:
      maxUnavailable: 25%             #最大不可用比例,可绝对值,可比例
      maxSurge: 25%                   #最大更新pod量,可绝对值,可比例,按上取整
  rollbackTo:                         #可选参数,用来配置deploy回退的配置,设置该参数将触发回退操作,每次回退完成会清楚该值
    revision: 0                       #默认为0,用来指定回退到的revision,0意味着回退到历史中最老的revision
  paused: false                       #可选参数 默认非paused,boolean值。用来指定暂停和恢复deploy,paused 和 非paused的唯一区别在于,paused后,所有对PodTemplateSpec的修改都不会触发新的rollout
  template:                           #和pod template中一样
    metadata:
      name: <pod-name>
      labels:
        <key>: <value>                #需要和sepc.selector.matchLabels 中的lable 匹配,否则rs 服务管理到该pod
    spec:
      containers:
      - name: 
        image:                        #镜像地址
        imagePullPolicy: Alway # Alway,IfNotPresent,Never  
        command:
        args:
        workingDir:                   #指定容器的工作目录
        resources:                    #容器运行的资源申请和限制
          requests:                   #申请
            cpu:
            memory:
          limits:                     #最大限制
            cpu:
            memory:
        ports:                        #容器应用运行暴露的port
        - name:
          containerPort:              #容器端口
          protocol:
        env:                          #指定容器运行的环境变量
        - name:
          value:
        volumeMounts:                 #挂载外部文件到容器
        - name: <volume-name> # volume 的 name
          mountPath: /home            #挂载到容器中的指定路径
        livenessProbe:                #存活探针
          httpGet:                    #http检测形式
            path: </path>             #路径
            port: <containerPort>     #容器端口
            httpHeaders:              #需要设置请求头时的设置
            - name: <key>
              value: <value>
          initialDelaySeconds: 20     #开始探针检测的等待秒数,根据业务需求具体启动时间来设置,过长会造成应用长时间无法提供服务,过短会杀死掉没有启动完全的应用
          #exec:  探针的exec形式
          #  command:
          #  - cmd 指令
          #  - args 参数
          periodSeconds: 10           #执行探测的间隔
          timeoutSeconds: 3           #探测超时的时间
          successThreshold: 1         #默认为1,失败状态后的服务检测成功1次后就识别为成功
          failureThreshold: 3         #连续检测3次,也就是总共9s(timeoutSeconds*failureThreshold),认为容器没有存活进行销毁容器,重启新容器操作
        readinessProbe:               #就绪探针
          tcpSocket:                  #tcp端口探测模式,kubelet 执行检测工作
            port: <containerPort>     #需要探测容器端口
        terminationMessagePath: /dev/terminatino-log
        terminationMessagePolicy: File
        securityContext: {}           #容器上下文权限
        lifecycle:                    #生命周期
          postStart:                  #启动容器之前执行的操作
            exec:
              command:
          preStop:                    #停止容器前执行的操作
            exec:
              command:
        stdin: true                   #标准输入,是否开启
        stdinOnce: true               #stdin为true 后,可以有打开多个通道连接容器,当stdinOnce为true,只能有一个通道连接,并且关闭通道后,stdin也将关闭,直到容器重启
        tty: true                     #是否开启交互窗口,加stdin 是docker -it 一样的功能
      hostAliases:                    #追加pod 中/etc/hosts 文件内容
      - ip: "10.1.2.3"
        hostnames:
        - "foo.remote"
        - "bar.remote"
      shareProcessNamespace: true      #几乎不用参数,pod 中所有容器共享进程空间
      nodeSelector:                    #node选择器,指定调度节点标签,用节点label 匹配
        <key>: <value> 
      dnsPolicy: ClusterFirst          #dns策略
      restartPolicy: Always #Always,Never,Failure 重启策略,总是、永不、失败后重启
      schedulerName: default-scheduler #默认调度策略
      securityContext: {}              #pod上下文权限
      terminatinoGracePeriodSeconds: 30     #默认30 ,优雅关闭时间
      
      


posted @ 2022-11-24 15:17  小白521  阅读(677)  评论(0编辑  收藏  举报