Kubernetes——Kubectl_YAML文件創建資源

概述

Kubernetes支持YAML和JSON格式創建資源對象

  • JSON格式用於接口之間消息的傳遞(適合二次開發)

  • YAML格式用於配置和管理(適合運維)

YAML是一種簡潔的非標記性語言,語法格式

  • 使用縮進標識層級關係

  • 不支持製表符tab縮進,使用空格縮進(相同層級的元素要左對齊)

  • 通常開頭縮進兩個空格

  • 字符後縮進一個空格(如冒號、逗號、短橫槓等)

  • “—”表示YAML格式,一個文件的開始

  • “#”表示註釋

  • 如果包含特殊字符用單引號引起來

  • 布爾值必須用引號括起來

使用YAML文件創建資源

1、查看資源版本標籤

在寫yaml文件中第一個就要先寫版本標籤

[root@master01 ~]# kubectl api-versions
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
apps/v1
apps/v1beta1
apps/v1beta2
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
autoscaling/v1
autoscaling/v2beta1
autoscaling/v2beta2
batch/v1
batch/v1beta1
certificates.k8s.io/v1beta1
coordination.k8s.io/v1beta1
events.k8s.io/v1beta1
extensions/v1beta1
networking.k8s.io/v1
policy/v1beta1
rbac.authorization.k8s.io/v1
rbac.authorization.k8s.io/v1beta1
scheduling.k8s.io/v1beta1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1

2、創建yaml文件測試

① 創建目錄

[root@master01 ~]# mkdir demo

② 創建nginx-deployment.yaml文件

[root@master01 ~]# cd demo/
[root@master01 demo]# vim nginx-deployment.yaml
#定義資源類型及描述
apiVersion: apps/v1		# apiVersion:語法關鍵字,注意大小寫。apps/v1:版本標籤
kind: Deployment	#資源類型:deployment控制器
metadata:		#資源的元數據
  name: nginx-deployment	#定義資源的名稱,在同一個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		#定義容器的對外端口

③ 使用yaml文件創建資源

[root@master01 demo]# kubectl create -f nginx-deployment.yaml 

③ 查看資源

[root@master01 demo]# kubectl get pods

在這裏插入圖片描述

④ 發佈

#創建ginx-service.yaml文件

[root@master01 demo]# vim nginx-service.yaml
apiVersion: v1  #定義版本
kind: Service  #類型
metadata:	#信息描述
  name: nginx-service	#資源名稱
  labels:	#標籤
    app: nginx  
spec:
  type: NodePort  #發佈的類型:NodePort
  ports:
  - port: 80	#內部端口
    targetPort: 80  #映射指向的端口
  selector:		#選擇器
    app: nginx

#使用ginx-service.yaml文件創建service資源(對外提供訪問)

[root@master01 demo]# kubectl create -f nginx-service.yaml 

#查看service資源

[root@master01 demo]# kubectl get svc

在這裏插入圖片描述

⑤ 訪問
在這裏插入圖片描述

#自動測試命令的正確性,並不執行創建

語法驗證,自動測試命令的正確性,並不去執行創建

[root@master01 demo]# kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run

在這裏插入圖片描述

3、生成yaml格式

兩種方式:

1、新創建(可以使用命令生成模板)

2、基於已有資源生成模板

① 新創建

#查看生成yaml格式

[root@master01 demo]# kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o yaml

在這裏插入圖片描述

#將模板導出並命名爲my-deployment.yaml

可以將生成的模板進行更改使用

[root@master01 demo]# kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o yaml > my-deployment.yaml

在這裏插入圖片描述

② 基於已有資源生成模板

#將現有的資源生成模板並導出命名爲test-nginx.yaml

[root@master01 demo]# kubectl get deploy/nginx --export -o yaml > test-nginx.yaml

在這裏插入圖片描述

#查看生成json格式

[root@master01 demo]# kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o json

③ 查看某字段幫助信息:explain

例如:查看containers的幫助信息

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