kubernetes yaml
阿新 • • 發佈:2018-01-03
ice 沒有 創建 健康 pre 核數 相關 主機 and
apiVersion: v1 #指定api版本,此值必須在kubectl apiversion中 kind: Deployment #指定創建資源的角色/類型 metadata: #資源的元數據/屬性 name: my-pod #資源的名字,在同一個namespace中必須唯一 namespace: devlopment labels: #設定資源的標簽 k8s-app: my-pod version: v1 kubernetes.io/cluster-service: "true" annotations: #自定義註解列表- name: String #自定義註解名字 spec:#specification of the resource content 指定該資源的內容 replicas: 3 template: metadata: labels: k8s-app: my-pod nodeSelector: #節點選擇,先給主機打標簽kubectl label nodes kube-node1 zone=node1 zone: node1 restartPolicy: Always #表明該容器一直運行,默認k8s的策略,在此容器退出後,會立即創建一個相同的容器 spec: serviceAccount:default #服務權限相關 containers: - name: my-container #容器的名字 image: image:tag #容器使用的鏡像地址 imagePullPolicy: Never #三個選擇Always、Never、IfNotPresent,每次啟動時檢查和更新(從registery)images的策略, # Always,每次都檢查 # Never,每次都不檢查(不管本地是否有) # IfNotPresent,如果本地有就不檢查,如果沒有就拉取 command: [‘sh‘] #啟動容器的運行命令,將覆蓋容器中的Entrypoint,對應Dockefile中的ENTRYPOINT args: ["$(str)"] #啟動容器的命令參數,對應Dockerfile中CMD參數 env: #指定容器中的環境變量 ,從ConfigMap或secrit中獲取 - name: key #變量的名字 value: value #變量的值 resources: #資源管理 requests: #容器運行時,最低資源需求,也就是說最少需要多少資源容器才能正常運行 cpu: 0.1 #CPU資源(核數),兩種方式,浮點數或者是整數+m,0.1=100m,最少值為0.001核(1m) memory: 32Mi #內存使用量 limits: #資源限制 cpu: 0.5 memory: 32Mi ports: - containerPort: 80 # 容器開放對外的端口 targetPort: 80 # 外部訪問端口 #nodePort: # 映射到實體機端口,不需指定自動分配 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 readinessProbe: #pod內容器對外提供服務檢測的設置 httpGet: exec: tcpSocket: lifecycle: #生命周期管理 postStart: #容器運行之前運行的任務 exec: command: - ‘sh‘ - ‘yum upgrade -y‘ preStop:#容器關閉之前運行的任務 exec: command: [‘service httpd stop‘] #有數據持久話需求時 volumeMounts: #TODO PersistentVolume Claim - name: volume #掛載設備的名字,與volumes[*].name 需要對應 mountPath: /data #掛載到容器的某個路徑下 readOnly: True volumes: #定義一組掛載設備 - name: volume #定義一個掛載設備的名字 #meptyDir: {} hostPath: # 宿主機 path: /opt #掛載設備類型為hostPath,路徑為宿主機下的/opt,這裏設備類型支持很多種 nfs: #nfs 服務 server: 192.168.6.1 path: "/data/nfs" #-name:my-container2 第二個容器 --- apiVersion: v1 kind: Service #指定創建資源的角色/類型 metadata: #元數據管理配置 name: my-service namespace: devlopment spec: #服務端口號配置 ports: - port: 80 targetPort: 80 name: web - port: 50000 targetPort: 50000 name: admin selector: #應用選擇器配置 k8s-app: my-pod #type: NodePort --- apiVersion: extensions/v1beta1 kind: Ingress #指定創建資源的角色/類型 metadata: #元數據管理配置 name: my-ingress namespace: default spec: rules: #訪問規則配置 - host: test.myaddress.com #訪問域名 http: paths: - path: / #匹配路徑 backend: #對應的後端服務 serviceName: my-service #服務名稱 servicePort: 80 #服務的端口號 - path: /admin backend: serviceName: my-service servicePort: 80 #TODO Configmap 配置文件管理 #https://www.jianshu.com/p/571383da7adf #TODO Secrit 安全敏感信息管理 https://www.jianshu.com/p/530b3642c642
kubernetes yaml