Docker Kubernetes YAML檔案常用指令
阿新 • • 發佈:2021-01-11
YAML檔案常用指令
配置檔案說明:
- 定義配置時,指定最新穩定版API(當前為v1)。
- 配置檔案應該儲存在叢集之外的版本控制倉庫中。如果需要,可以快速回滾配置、重新建立和恢復。
- 應該使用YAML格式編寫配置檔案,而不是JSON。儘管這些格式都可以使用,但YAML對使用者更加友好。
- 可以將相關物件組合成單個檔案,通常會更容易管理。
- 不要沒必要的指定預設值,簡單和最小配置減少錯誤。
- 在註釋中說明一個物件描述更好維護。
- YAML是一種標記語言很直觀的資料序列化格式,可讀性高。類似於XML資料描述語言,語法比XML簡單的很多。
- YAML資料結構通過縮排來表示,連續的專案通過減號來表示,鍵值對用冒號分隔,陣列用中括號括起來,hash用花括號括起
YAML檔案格式注意事項:
- 1. 不支援製表符tab鍵縮排,需要使用空格縮排
- 2. 通常開頭縮排2個空格
- 3. 字元後縮排1個空格,
- 4. “---” 表示YAML格式,一個檔案的開始
- 5. “#”註釋
- # 指定api版本
- apiVersion:
- # 指定需要建立的資源物件
- kind:
- # 源資料、可以寫name,名稱空間,物件標籤
- metadata:
- # 指定物件名稱
- name:
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: nginx-deployment
- # 描述資源相關資訊
- spec:
- # 指定pod 副本數,預設1
- replicas:
apiVersion: apps/v1beta2 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3
- # 資源標籤選擇器
- selector:
- # 描述資源具體資訊
- template:
- # 匹配標籤欄位
- matchLabels:
- # 指定pod標籤value:key
- labels:
kind: Deployment metadata: name: nginx-deployment spec: replicas:3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx
- # 指定容器資訊
- containers:
- # 指定容器名稱
- - name:
apiVersion: apps/v1beta2 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.9 ports: - containerPort: 80
- # 指定映象名稱
- image:
apiVersion: apps/v1beta2 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.9 ports: - containerPort: 80
- # 暴露容器埠
- ports:
apiVersion: apps/v1beta2 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.9 ports: - containerPort: 80
- # 指定暴露容器埠
- - containerPort:
apiVersion: apps/v1beta2 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.9 ports: - containerPort: 80
- # 新增環境變數
- env:
apiVersion: v1 kind: Pod metadata: name: pod-test labels: os: centos spec: containers: - name: hello image: centos:6 env: # 變數key - name: Test # 變數value value: "123456"
- # 啟動容器後執行命令
- command:
apiVersion: v1 kind: Pod metadata: name: pod-test labels: os: centos spec: containers: - name: hello image: centos:6 command: ["bash","-c","while true;do date;sleep 1;done"]
- #重啟策略 可新增(Always,OnFailure,Never)
- restartPolicy:
apiVersion: v1 kind: Pod metadata: name: pod-test labels: os: centos spec: containers: - name: hello image: centos:6 restartPolicy: OnFailure
- # 健康檢查模式(httpGet、exec、tcpSocket)
- livenessProbe:
apiVersion: v1 kind: Pod metadata: name: nginx-pod labels: app: nginx spec: containers: - name: nginx image: nginx:1.10 ports: - containerPort: 80 livenessProbe: # 健康檢查模式 httpGet: # 指定檢查目錄 path: /index.html # 訪問埠 port: 80
- # 容器內管理volume資料卷
- volumeMounts:
apiVersion: v1 kind: Pod metadata: name: pod-test labels: test: centos spec: containers: - name: hello-read image: centos:6 # 容器內管理資料卷 volumeMounts: # 資料卷名稱 - name: data # 容器資料卷路徑 mountPath: /data # 資料卷 volumes: # 資料卷名稱 - name: data # 資料宿主機卷路徑 hostPath: # 指定宿主機資料卷路徑 path: /data
- # 宿主級管理volume資料卷管理
- volumes:
apiVersion: v1 kind: Pod metadata: name: pod-test labels: test: centos spec: containers: - name: hello-read image: centos:6 # 容器內管理資料卷 volumeMounts: # 資料卷名稱 - name: data # 容器資料卷路徑 mountPath: /data # 資料卷 volumes: # 資料卷名稱 - name: data # 資料宿主機卷路徑 hostPath: # 指定宿主機資料卷路徑 path: /data
- #hsotip監聽IP,可通過哪些宿主級ip訪問
- hostIP:
apiVersion: v1 kind: Pod metadata: name: nginx-pod2 labels: app: nginx spec: containers: - name: nginx image: nginx:1.10 # hostport管理 ports: # 指定http - name: http # 指定埠 containerPort: 80 # hsotip監聽IP,可通過哪些宿主級ip訪問 hostIP: 0.0.0.0 # 宿主級暴露埠,它會對映到containerport的容器埠 hostPort: 89 # 指定協議型別 protocol: TCP
- # 宿主級暴露埠,它會對映到containerport的容器埠
- hostPort:
apiVersion: v1 kind: Pod metadata: name: nginx-pod2 labels: app: nginx spec: containers: - name: nginx image: nginx:1.10 # hostport管理 ports: # 指定http - name: http # 指定埠 containerPort: 80 # hsotip監聽IP,可通過哪些宿主級ip訪問 hostIP: 0.0.0.0 # 宿主級暴露埠,它會對映到containerport的容器埠 hostPort: 89 # 指定協議型別 protocol: TCP
- # 暴露埠的協議型別
- protocol:
apiVersion: v1 kind: Pod metadata: name: nginx-pod2 labels: app: nginx spec: containers: - name: nginx image: nginx:1.10 # hostport管理 ports: # 指定http - name: http # 指定埠 containerPort: 80 # hsotip監聽IP,可通過哪些宿主級ip訪問 hostIP: 0.0.0.0 # 宿主級暴露埠,它會對映到containerport的容器埠 hostPort: 89 # 指定協議型別 protocol: TCP
- # 固定IP地址
- clusterIP:
apiVersion: v1 kind: Service metadata: name: nginx-service spec: selector: app: nginx ports: - name: http protocol: TCP port: 888 targetPort: 80 clusterIP: "10.10.10.11"
- # 服務型別
- type:
apiVersion: v1 kind: Service metadata: name: nginx-service2 labels: app: nginx spec: selector: app: nginx ports: - name: http port: 8080 targetPort: 80 # 服務型別 type: NodePort
- # node節點建立socker的暴露埠,預設30000~32767
- nodePort:
apiVersion: v1 kind: Service metadata: name: nginx-service2 labels: app: nginx spec: selector: app: nginx ports: - name: http port: 8080 targetPort: 80 # 服務型別 type: NodePort