一、deployment.yaml文件详解

  1 apiVersion: extensions/v1beta1   #接口版本  2 kind: Deployment                 #接口类型  3 metadata:  4   name: cango-demo               #Deployment名称  5   namespace: cango-prd           #命名空间  6   labels:  7     app: cango-demo              #标签  8 spec:  9   replicas: 3 10   strategy: 11     rollingUpdate:  ##由于replicas为3,则整个升级,pod个数在2-4个之间 12       maxSurge: 1      #滚动升级时会先启动1个pod 13       maxUnavailable: 1 #滚动升级时允许的最大Unavailable的pod个数 14   template:          15     metadata: 16       labels: 17         app: cango-demo  #模板名称必填 18     sepc: #定义容器模板,该模板可以包含多个容器 19       containers:                                                                    20         - name: cango-demo                                                           #镜像名称 21           image: swr.cn-east-2.myhuaweicloud.com/cango-prd/cango-demo:0.0.1-SNAPSHOT #镜像地址 22           command: [ "/bin/sh","-c","cat /etc/config/path/to/special-key" ]    #启动命令 23           args:                                                                #启动参数 24             - '-storage.local.retention=$(STORAGE_RETENTION)' 25             - '-storage.local.memory-chunks=$(STORAGE_MEMORY_CHUNKS)' 26             - '-config.file=/etc/prometheus/prometheus.yml' 27             - '-alertmanager.url=http://alertmanager:9093/alertmanager' 28             - '-web.external-url=$(EXTERNAL_URL)' 29     #如果command和args均没有写,那么用Docker默认的配置。 30     #如果command写了,但args没有写,那么Docker默认的配置会被忽略而且仅仅执行.yaml文件的command(不带任何参数的)。 31     #如果command没写,但args写了,那么Docker默认配置的ENTRYPOINT的命令行会被执行,但是调用的参数是.yaml中的args。 32     #如果如果command和args都写了,那么Docker默认的配置被忽略,使用.yaml的配置。 33           imagePullPolicy: IfNotPresent  #如果不存在则拉取 34           livenessProbe:       #表示container是否处于live状态。如果LivenessProbe失败,LivenessProbe将会通知kubelet对应的container不健康了。随后kubelet将kill掉container,并根据RestarPolicy进行进一步的操作。默认情况下LivenessProbe在第一次检测之前初始化值为Success,如果container没有提供LivenessProbe,则也认为是Success; 35             httpGet: 36               path: /health #如果没有心跳检测接口就为/ 37               port: 8080 38               scheme: HTTP 39             initialDelaySeconds: 60 ##启动后延时多久开始运行检测 40             timeoutSeconds: 5 41             successThreshold: 1 42             failureThreshold: 5 43           readinessProbe: 44             httpGet: 45               path: /health #如果没有心跳检测接口就为/ 46               port: 8080 47               scheme: HTTP 48             initialDelaySeconds: 30 ##启动后延时多久开始运行检测 49             timeoutSeconds: 5 50             successThreshold: 1 51             failureThreshold: 5 52           resources:              ##CPU内存限制 53             requests: 54               cpu: 2 55               memory: 2048Mi 56             limits: 57               cpu: 2 58               memory: 2048Mi 59           env:                    ##通过环境变量的方式,直接传递pod=自定义Linux OS环境变量 60             - name: LOCAL_KEY     #本地Key 61               value: value 62             - name: CONFIG_MAP_KEY  #局策略可使用configMap的配置Key, 63               valueFrom: 64                 configMapKeyRef: 65                   name: special-config   #configmap中找到name为special-config 66                   key: special.type      #找到name为special-config里data下的key 67           ports: 68             - name: http 69               containerPort: 8080 #对service暴露端口 70           volumeMounts:     #挂载volumes中定义的磁盘 71           - name: log-cache 72             mount: /tmp/log 73           - name: sdb       #普通用法,该卷跟随容器销毁,挂载一个目录 74             mountPath: /data/media     75           - name: nfs-client-root    #直接挂载硬盘方法,如挂载下面的nfs目录到/mnt/nfs 76             mountPath: /mnt/nfs 77           - name: example-volume-config  #高级用法第1种,将ConfigMap的log-script,backup-script分别挂载到/etc/config目录下的一个相对路径path/to/...下,如果存在同名文件,直接覆盖。 78             mountPath: /etc/config        79           - name: rbd-pvc                #高级用法第2中,挂载PVC(PresistentVolumeClaim) 80   81 #使用volume将ConfigMap作为文件或目录直接挂载,其中每一个key-value键值对都会生成一个文件,key为文件名,value为内容, 82   volumes:  # 定义磁盘给上面volumeMounts挂载 83   - name: log-cache 84     emptyDir: {} 85   - name: sdb  #挂载宿主机上面的目录 86     hostPath: 87       path: /any/path/it/will/be/replaced 88   - name: example-volume-config  # 供ConfigMap文件内容到指定路径使用 89     configMap: 90       name: example-volume-config  #ConfigMap中名称 91       items: 92       - key: log-script           #ConfigMap中的Key 93         path: path/to/log-script  #指定目录下的一个相对路径path/to/log-script 94       - key: backup-script        #ConfigMap中的Key 95         path: path/to/backup-script  #指定目录下的一个相对路径path/to/backup-script 96   - name: nfs-client-root         #供挂载NFS存储类型 97     nfs: 98       server: 10.42.0.55          #NFS服务器地址 99       path: /opt/public           #showmount -e 看一下路径100   - name: rbd-pvc                 #挂载PVC磁盘101     persistentVolumeClaim:102       claimName: rbd-pvc1         #挂载已经申请的pvc磁盘