k8s集羣中的yaml文件詳解

一、yaml文件簡介

  • Kubernetes只支持YAML和JSON格式創建資源對象,JSON格式用於接口之間消息的傳遞,適用於開發

  • YAML格式用於配置和管理,適用於雲平臺管理,YAML是一種簡潔的非標記性語言

  • yaml的語法格式:

縮進標識層級關係
不支持製表符縮進,使用空格縮進
通常開頭縮進兩個空格
字符後縮進一個空格, 如冒號,逗號,- 等
“—”表示YAML格式,一個文件的開始,用於分隔文件間。
“#”表示註釋

二、使用YAML文件創建資源對象

1、查看資源版本標籤

[root@master ~]# kubectl api-versions

在這裏插入圖片描述
2、例如:寫一個yaml文件

[root@master ~]# mkdir demo
[root@master ~]# cd demo/
[root@master1 demo]# vim nginx-test.yaml
apiVersion: apps/v1      #指定api版本標籤
kind: Deployment	    #定義資源的類型/角色,deployment爲控制器
metadata:	           #定義資源的元數據信息
  name: nginx-test	  #定義資源的名稱,在同一個namespace空間中必須是唯一的
  labels:	          #定義資源標籤
    app: nginx	
spec:	     
  replicas: 3	       #定義副本數量
  selector:	           #定義選擇器
    matchLabels:	   #匹配上面的標籤
      app: nginx	   #匹配模板名稱
  template:	           #定義模板
    metadata:	
      labels:
        app: nginx
    spec:
      containers:                #定義容器信息
      - name: nginx	             #容器名,與標籤名要相同
        image: nginx:1.15.4      #容器使用的鏡像以及版本
        ports:
        - containerPort: 80	    #定義容器的對外端口

3、創建資源對象

[root@master1 demo]# kubectl create -f nginx.yaml 
deployment.apps/nginx created

[root@master demo]# kubectl get pod	查看創建的pod資源
NAME                              READY   STATUS    RESTARTS   AGE
nginx-deployment-d55b94fd-df6wp   1/1     Running   0          84s
nginx-deployment-d55b94fd-j9mhz   1/1     Running   0          84s
nginx-deployment-d55b94fd-qzc8r   1/1     Running   0          84s

4、創建service服務對外提供訪問並測試

[root@master1 demo]# vi nginx-service.yaml
apiVersion: v1  
kind: Service  
metadata:
  name: nginx-service
  labels:
    app: nginx  
spec:
  type: NodePort  
  ports:
  - port: 80
    targetPort: 80  
  selector:
    app: nginx
[root@master1 demo]# kubectl create -f nginx-service.yaml 
service/nginx-service created

[root@master1 demo]# kubectl get svc
NAME            TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
kubernetes      ClusterIP   10.0.0.1     <none>        443/TCP        5d13h
nginx-service   NodePort    10.0.0.227   <none>        80:38425/TCP   14s

在瀏覽器輸入node節點:端口即可訪問。
在這裏插入圖片描述
使用命令快速生成YAML或者JSON文件
1、自動測試命令的正確性,並不執行創建(類似shell腳本中的sh -n)

[root@master1 demo]# kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run
kubectl run --generator=deployment/apps.v1beta1 is DEPRECATED and will be removed in a future version. Use kubectl create instead.
deployment.apps/nginx-deployment created (dry run)

2、自動生成yaml格式的文件不保存

#此命令直接生成yaml文件內容展示出來,並不會保存
[root@master ~]# kubectl run nginx-1 --image=nginx --port=80 --replicas=3 --dry-run -o yaml

在這裏插入圖片描述
3、自動生成json格式的文件

[root@master ~]# kubectl run nginx-2 --image=nginx --port=80 --replicas=3 --dry-run -o json

在這裏插入圖片描述
4、將生成YAML格式或者JSON格式文件導出

[root@master ~]# kubectl run nginx-1 --image=nginx --port=80 --replicas=3 --dry-run -o json(yaml) > test.json(yaml)

在這裏插入圖片描述
5、將現有的資源生成模板並導出

#可以用pod中的nginx來生成模板並導出
[root@master1 demo]# kubectl get pods
NAME                              READY   STATUS    RESTARTS   AGE
nginx-deployment-d55b94fd-df6wp   1/1     Running   0          14m
nginx-deployment-d55b94fd-j9mhz   1/1     Running   0          14m
nginx-deployment-d55b94fd-qzc8r   1/1     Running   0          14m

[root@master1 demo]# kubectl get deployment/nginx-deployment --export -o yaml > nginx-backup.yaml
[root@master1 demo]# ls
nginx-backup.yaml  nginx-service.yaml  nginx.yaml

6、查看yaml文件某一字段的幫助信息

[root@master ~]# kubectl explain pods.spec.containers
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章