一條yaml中有很多字段,如果去背這些字段,其實也能背過,但是去寫一條yaml,也往往浪費很多的時間,也會出錯,其實我們可以用一條命令就能快速來寫一段自定義的yaml,工作中去修改相應的yaml也得心應手,效率也會很高,接下來我們來看一下
[root@k8s-master ~]# kubectl create deployment nginx --image=nginx -o yaml --dry-run > my-deployment.yaml
-o yaml指定我們的yaml文件
--dry-run 不在k8s中執行
>重定向到我們的文件中
[root@k8s-master ~]# vim my-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: nginx
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: nginx
spec:
containers:
- image: nginx
name: nginx
resources: {}
status: {}
這是新創建一條yaml文件,我們也可以根據我們的原有的pod來生成yaml,或者修改
[root@k8s-master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-7bb7cd8db5-jrzgg 1/1 Running 0 93m
[root@k8s-master ~]# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx 1/1 1 1 93m
[root@k8s-master ~]# kubectl get deploy nginx -o yaml --export > my-deploy2.yaml
-o yaml:指定yaml文件
--export:輸出
Flag --export has been deprecated, This flag is deprecated and will be removed in future.
[root@k8s-master ~]# vim my-deploy2.yaml
[root@k8s-master ~]# cat my-deploy2.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "1"
creationTimestamp: null
generation: 1
labels:
run: nginx
name: nginx
selfLink: /apis/extensions/v1beta1/namespaces/default/deployments/nginx
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
run: nginx
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
run: nginx
spec:
containers:
- image: nginx
imagePullPolicy: Always
name: nginx
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
status: {}
這樣的yaml效率很高,也不易出錯,希望可以幫到你
