模擬命令執行
$ kubectl run myapp --image=nginx --dry-run -o yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
creationTimestamp: null
labels:
run: myapp
name: myapp
spec:
replicas: 1
selector:
matchLabels:
run: myapp
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
run: myapp
spec:
containers:
- image: nginx
name: myapp
resources: {}
status: {}複製程式碼
$ kubectl create secret generic mysecret --from-literal=quiet-phrase="Shh! Dont' tell" -o yaml --dry-run
apiVersion: v1
data:
quiet-phrase: U2hoISBEb250JyB0ZWxs
kind: Secret
metadata:
creationTimestamp: null
name: mysecret複製程式碼
匯出資源描述
kubectl get <resource-type> <resource> --export -o yaml
命令會以Yaml格式匯出系統中已有資源描述
比如,我們可以將系統中 mysql 部署的描述導成 Yaml 檔案
$ kubectl get deployment mysql --export -o yaml > mysql.yaml 複製程式碼
Kompose轉換
Docker Compose是最為流行的容器編排開發工具,可以方便地在Docker/Docker Swarm環境下開發、部署容器編排模板。
Kompose是Kubernetes社群開發的一個轉換工具,可以方便地將簡單的Docker Compose模板轉化成為Kubernetes的Yaml描述檔案
我們可以通過 https://github.com/kubernetes/kompose 獲取最新的kompose 工具
version: '2'
services:
wordpress:
image: wordpress:4
environment:
- WORDPRESS_DB_PASSWORD=password
ports:
- 80:80
depends_on:
- mysql
labels:
kompose.service.type: nodeport
mysql:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=password複製程式碼
我們可以通過kompose convert
命令轉換為 Kubernetes 的 Deployment和Service的資源描述,
$ kompose convert
WARN Unsupported depends_on key - ignoring
INFO Kubernetes file "mysql-service.yaml" created
INFO Kubernetes file "wordpress-service.yaml" created
INFO Kubernetes file "mysql-deployment.yaml" created
INFO Kubernetes file "wordpress-deployment.yaml" created 複製程式碼
也可以通過kompose convert --stdout
命令輸出到標準輸出
總結
Kubernetes以其開放的平臺和活躍的社群征服了眾多使用者,然而其陡峭的學習曲線也讓初學者望而生畏。今天希望通過幾個技巧幫助大家簡化 Kubernetes Yaml 檔案的編寫。