概述
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