一、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