天天看點

yaml資源清單

目錄

  • 一、yaml文法格式
    • 1.1、yaml文法格式
    • 1.2、檢視api資源版本标簽
    • 1.3、寫一個yaml檔案demo
    • 1.4、建立service服務對外提供通路并測試
    • 1.5、kubectl --dry-run
    • 1.6、将現有的資源生成模闆導出生成yaml檔案
  • 二、詳解k8s中的port
    • port
    • nodeport
    • targetport
    • containerPort
kubecnetes支援yaml和json格式管理資源對象
json格式:主要用于api接口之間消息的傳遞
yaml格式:用于配置和管理,yaml是一種簡介的非标記性語言,内容格式人性化,較易讀
           

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

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

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
           
yaml資源清單
yaml資源清單

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通路
           
yaml資源清單
yaml資源清單
yaml資源清單

#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
           
yaml資源清單
yaml資源清單
yaml資源清單
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
           
yaml資源清單

port是k8s叢集内部通路service的端口,即通過clusterIP:port可以從pod所在的node上通路到service
           

nodeport是外部通路k8s叢集中service的端口,通過nodeIP:nodePort可以從外部通路到某個service
           

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

containerPort是pod内部容器的端口,targetport映射到containerPort           

繼續閱讀