Deployment详解

参数名 取值类型 作用介绍
apiVersion string 版本号,例如:v1
kind string 选择创建资源类型,例如:Pod,Deploment
metadata object Pod或者Deployment元数据
metadata.name string Pod或者Deployment名称,例如:nginx
metadata.namespace string Pod或者Deployment所属的命名空间,例如:default
metadata.labels[列表,里面随便填键值对] list Pod或者Deployment的自定义标签列表,例如:app:nginx
metadata.labels.annotations list Pod或者Deployment的标签自定义注释列表
spec object Pod中容器的详细定义
spec.replicas int 副本数,例如:3
spec.selector object 选择器
spec.selector.matchLabels[标签列表] list 选择器选择的标签,例如:app:nginx
spec.replicas.strategy 升级策略
spec.replicas.strategy.rollingUpdate int 滚动升级策略
spec.replicas.strategy.rollingUpdate.maxSurge int 滚动升级时允许的最大失效的pod个数
spec.replicas.strategy.rollingUpdate.maxUnavailable int 滚动升级时允许的最大失效的pod个数
spec.template object Pod模板参数
spec.template.metadata Pod模板的元数据
spec.template.metadata.labels[] list 创建Pod模板的标签(如果需要创建Pod)app:nginx
spec.spec.containers[] list Pod使用的容器信息
spec.spec.containers[]. - name string 容器名称,例如:nginx1.80
spec.spec.containers[].image string 容器使用的镜像,例如:nginx1.8
spec.spec.containers.imagePullPolicy:[Always | Never | IfNotPresent] string 获取镜像的策略 Alawys表示下载镜像 IfnotPresent表示优先使用本地镜像,否则下载镜像,Nerver表示仅使用本地镜像
spec.spec.containers[].command[] list 容器启动执行的命令
spec.spec.containers[].args[] list 执行的参数
#如果command和args均没有写,那么用Docker默认的配置。
#如果command写了,但args没有写,那么Docker默认的配置会被忽略而且仅仅执行.yaml文件的command(不带任何参数的)。
#如果command没写,但args写了,那么Docker默认配置的ENTRYPOINT的命令行会被执行,但是调用的参数是.yaml中的args。 #如果如果command和args都写了,那么Docker默认的配置被忽略,使用.yaml的配置。
spec.spec.containers[].workingDir string 容器的工作目录
spec.spec.containers[].volumeMounts[] list 挂载到容器内部的存储卷配置
spec.spec.containers[].volumeMounts[].name string 定义共享存储的名称
spec.spec.containers[].volumeMounts[].mountPath string 存储卷在容器内挂载的绝对路径
spec.spec.containers[].volumeMounts[].readOnly boolean 是否为只读模式,默认为读写
spec.spec.containers[].ports[] list 容器需要暴露的端口号
spec.spec.containers[].ports[].name string 端口的名称
spec.spec.containers[].ports[].containerPort int 容器需要监听的端口号
spec.spec.containers[].ports[].hostPort int 容器所在主机需要监听的端口号,默认和containerPort相同,如果设置了这个,那么一个主机无法启动该容器的第二个副本
spec.spec.containers[].ports[].protocol string 端口协议,支持TCP和UDP,默认TCP
spec.spec.containers[].env[] list 容器运行前需要提前设置的环境变量列表
spec.spec.containers[].env[].name string 环境变量名称
spec.spec.containers[].env[].value string 环境变量的值
spec.spec.containers[].resource object 资源限制和资源请求的值
spec.spec.containers[].resource.limits object 资源限制的设置
spec.spec.containers[].resource.limits.cpu string cpu的限制,单位为核
spec.spec.containers[].resource.limits.memory string 内存的限制,单位为MB,GB
spec.spec.containers[].resource.requests object 资源限制的设置
spec.spec.containers[].resource.requests.cpu string CPU请求,单位为核数,容器启动的初始可用量
spec.spec.containers[].resource.requests.memory string 内存请求,容器启动的初始可用量
spec.spec.volumes[] list 在pod上定义的共享存储卷的列表
spec.spec.volumes[].name string 共享存储卷的名字,在一个pod中每个存储卷定义一个名称,容器的container[].volumeMounts[].name姜引用这个名称。
spec.spec.volumes[].emptyDir object 类型为emptyDir的存储卷,和pod一个生命周期的一个临时目录
spec.spec.volumes[].hostPath object 类型为hostPath的存储卷,表示挂载pod所在的主机目录,通过hostPath.path指定
spec.spec.volumes[].hostPath.path string pod所在的主机目录,将被用于容器中mount的目录
spec.spec.volumes[].secret object 类型为secret的存储卷,表示挂载集群预定义的secret对象到容器内部
spec.spec.volumes[].configMap object 类型为configMap的存储卷,表示挂载集群预定义的secret对象到容器内部
spec.spec.volumes[].livenessProbe object 对pod内各容器健康检查的设置,当探测几次无响应后,系统将自动重启该容器,可设置的方法为exec,httpGet,tcpSocket,仅需设置一种
spec.spec.volumes[].livenessProbe.exec object 对pod内容器检查的方式设置为exec
spec.spec.volumes[].livenessProbe.exec.command[] string exec方式需要指定的命令或者脚本
spec.spec.volumes[].livenessProbe.httpGet object 对pod内容器的健康检查的设置,HttpGet方式,需要制定path,port
spec.spec.volumes[].livenessProbe.tcpSocket object 对pod内各容器的健康检查的方式,tcpSocket的方式
spec.spec.volumes[].livenessProbe.initialDelaySeconds int 容器启动完成后首次探测的时间
spec.spec.volumes[].livenessProbe.timeoutSeconds int 对容器健康检查的定期探测时间设置,默认10s一次
spec.spec.restartPolicy string pod的重启策略可选Always,OnFailure,Never
(1)Always:pod一旦停止运行,无论是如何停止的,重新启动
(2)OnFailure:只有pod以非零退出码终止时,kubelet才会重启容器(为0则正常执行完毕)
(3)Never:pod只要终止就再也不会重启
spec.spec.nodeSelector object 设置node的label,以key:value格式指定
spec.spec.imagePullSecrets object pull镜像时使用的secret名称
spec.spec.hostNetwork boolean 是否使用主机网络,如果是的话,则不再使用docker网桥,该pod无法在一台主机上启动多副本

例:

apiVersion: v1 #指定api版本,此值必须在kubectl apiversion中   
kind: Pod #指定创建资源的角色/类型   
metadata: #资源的元数据/属性   
  name: test-pod #资源的名字,在同一个namespace中必须唯一   
  labels: #设定资源的标签 
    k8s-app: apache   
    version: v1   
    kubernetes.io/cluster-service: "true"   
  annotations:            #自定义注解列表   
    - name: String        #自定义注解名字   
spec: #specification of the resource content 指定该资源的内容   
  restartPolicy: Always #表明该容器一直运行,默认k8s的策略,在此容器退出后,会立即创建一个相同的容器   
  nodeSelector:     #节点选择,先给主机打标签kubectl label nodes kube-node1 zone=node1   
    zone: node1   
  containers:   
  - name: test-pod #容器的名字   
    image: 10.192.21.18:5000/test/chat:latest #容器使用的镜像地址   
    imagePullPolicy: Never #三个选择Always、Never、IfNotPresent,每次启动时检查和更新(从registery)images的策略, 
                           # Always,每次都检查 
                           # Never,每次都不检查(不管本地是否有) 
                           # IfNotPresent,如果本地有就不检查,如果没有就拉取 
    command: ['sh'] #启动容器的运行命令,将覆盖容器中的Entrypoint,对应Dockefile中的ENTRYPOINT   
    args: ["$(str)"] #启动容器的命令参数,对应Dockerfile中CMD参数   
    env: #指定容器中的环境变量   
    - name: str #变量的名字   
      value: "/etc/run.sh" #变量的值   
    resources: #资源管理 
      requests: #容器运行时,最低资源需求,也就是说最少需要多少资源容器才能正常运行   
        cpu: 0.1 #CPU资源(核数),两种方式,浮点数或者是整数+m,0.1=100m,最少值为0.001核(1m) 
        memory: 32Mi #内存使用量   
      limits: #资源限制   
        cpu: 0.5   
        memory: 1000Mi   
    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  #检查间隔时间   
      #也可以用这种方法   
      #exec: 执行命令的方法进行监测,如果其退出码不为0,则认为容器正常   
      #  command:   
      #    - cat   
      #    - /tmp/health   
      #也可以用这种方法   
      #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,这里设备类型支持很多种 
    #nfs

文章内容仅用于作者学习使用,如果内容侵犯您的权益,请立即联系作者删除,作者不承担任何法律责任。

×

喜欢就点赞,疼爱就打赏