1. 程式人生 > >k8s yaml檔案詳解

k8s yaml檔案詳解

1、yaml檔案詳解如下:

apiVersion: v1             #指定api版本,此值必須在kubectl apiversion中  
kind: Pod                  #指定建立資源的角色/型別  
metadata:                  #資源的元資料/屬性  
  name: web04-pod          #資源的名字,在同一個namespace中必須唯一  
  labels:                  #設定資源的標籤,詳情請見http://blog.csdn.net/liyingke112/article/details/77482384
    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: web04-pod        #容器的名字  
    image: web:apache      #容器使用的映象地址  
    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:             #資源管理,請求請見http://blog.csdn.net/liyingke112/article/details/77452630
      requests:            #容器執行時,最低資源需求,也就是說最少需要多少資源容器才能正常執行  
        cpu: 0.1           #CPU資源(核數),兩種方式,浮點數或者是整數+m,0.1=100m,最少值為0.001核(1m)
        memory: 32Mi       #記憶體使用量  
      limits:              #資源限制  
        cpu: 0.5  
        memory: 32Mi  
    ports:  
    - containerPort: 80    #容器開發對外的埠
      name: httpd          #名稱
      protocol: TCP  
    livenessProbe:         #pod內容器健康檢查的設定,詳情請見http://blog.csdn.net/liyingke112/article/details/77531584
      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:          #詳情請見http://blog.csdn.net/liyingke112/article/details/76577520
    - name: volume         #掛載裝置的名字,與volumes[*].name 需要對應    
      mountPath: /data     #掛載到容器的某個路徑下  
      readOnly: True  
  volumes:                 #定義一組掛載裝置  
  - name: volume           #定義一個掛載裝置的名字  
    #meptyDir: {}  
    hostPath:  
      path: /opt           #掛載裝置型別為hostPath,路徑為宿主機下的/opt,這裡裝置型別支援很多種