1. 程式人生 > 其它 >yaml資源清單

yaml資源清單

目錄

一、yaml語法格式

kubecnetes支援yaml和json格式管理資源物件
json格式:主要用於api介面之間訊息的傳遞
yaml格式:用於配置和管理,yaml是一種簡介的非標記性語言,內容格式人性化,較易讀

1.1、yaml語法格式

大小寫敏感
使用縮排表示層級關係
不支援tab鍵製表符縮排,只是用空格縮排
縮排的空格數目不重要,只要相同層級的元素左側對齊即可,通常開頭縮排兩個空格
符號字元後縮排一個空格,如冒號,逗號,短橫槓(-)等
“---”表示yaml格式,一個檔案的開始,用於分隔檔案
“#”表示註釋

1.2、檢視api資源版本標籤

kubectl api-version
#apps/v1	    #如果是業務場景一般首選使用apps/v1
#apps/v1beta1	#帶有beta字樣的代表的是測試版本,不用再生產環境中

1.3、寫一個yaml檔案demo

mkdir /opt/demo
cd demo/

vim nginx-deployment.yaml
apiVersion: apps/v1	 #指定api版本標籤
kind: Deployment	#定義資源的型別/角色,deployment為副本控制器,此處資源型別可以是Deployment、Job、Ingress、Service等
metadata: 	#定義資源的元資料資訊,比如資源的名稱、namespaces、標籤等資訊
  name: nginx-deployment	#定義資源的名稱,在同一個namespace空間中必須是惟一的
  labels: 	#定義Deployment資源標籤
    app: nginx
spec:	#定義deployment資源需要的引數屬性,諸如是否在容器失敗時重新啟動容器的屬性
  replicas: 3	#定義副本數量
  selector:	#定義標籤選擇器
    matchLabels:	#定義匹配標籤
      app: nginx	#需與 .spec.template.metadata.labels定義的標籤保持一致
  template:	#定義業務模板,如果有多個副本,所有副本的屬性會按照模板的相關配置進行匹配
    metadata:	
      labels:	#定義pod副本將使用的標籤,需與.spec.template.metadata.labe定義的標籤保持一致
        app: nginx	
    spec:	
      containers:	#定義容器屬性
      - name: nginx		#定義一個容器名,一個 -name定義一個容器
        image: nginx:1.15.4	#定義容器使用的映象以及版本
        ports:	
	    - containerPort: 80		#定義容器的對外的埠

#建立資源物件
kubectl create -f nginx-deployment.yaml

#檢視建立的pod資源
kubectl get pod -o wide

1.4、建立service服務對外提供訪問並測試

vim nginx-service.yaml
apiVersion: v1
kind: Service
metadata: 
  name: nginx-service
  labels:
    app: nginx
spec:
  type: NodePort
  ports:
  - port: 12345
    tartgetPort: 80
  selector:
    app: nginx-demo

#建立資源物件
kubectl create -f nginx-service.yaml

#檢視建立的service
kubectl get svc

#在瀏覽器輸入nodeIP:nodeport訪問

1.5、kubectl --dry-run

#kubectl run --dry-run 列印相應的API物件而不執行建立
kubectl run nginx-test --image=nginx --port=80 --replicas=3 --dry-run

#檢視生成yaml格式
kubectl run nginx-test --image=nginx --port=80 --replicas=3 --dry-run -o yaml

#檢視生成json格式
kubectl run nginx-test --image=nginx --port=80 --replicas=3 --dry-run -o json

#使用yaml格式匯出生成模板,並進行修改以及刪除一些不必要的引數
kubectl run nginx-test --image=nginx --port=80 --replicas=3 --dry-run -o yaml > nginx.test.yaml

1.6、將現有的資源生成模板匯出生成yaml檔案

kubectl get deployment/nginx-deployment --export -o yaml

#儲存到檔案中
kubectl get deployment/nginx-deployment --export -o yaml > deploy-test.yaml

#檢視欄位幫助資訊,可一層層的檢視相關資源物件的幫助資訊
kubectl explain deployment.spec.template.spec.containers
或
kubectl explain pods.spec.containers

二、詳解k8s中的port

port

port是k8s叢集內部訪問service的埠,即通過clusterIP:port可以從pod所在的node上訪問到service

nodeport

nodeport是外部訪問k8s叢集中service的埠,通過nodeIP:nodePort可以從外部訪問到某個service

targetport

targetport是pod埠,從port或nodeport來的流量經過kube-proxy反向代理負載均衡轉發到後端pod的targetport,最後進入容器

containerPort

containerPort是pod內部容器的埠,targetport對映到containerPort