yaml資源清單
阿新 • • 發佈:2021-11-03
目錄
一、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