【yml文件的解釋】

目錄

  • 一、yml的簡介
  • 二、手寫yml文件進行配置
  • 三、使用yaml格式導出生成模板
  • 四、deployment.yaml文件詳解
  • 五、Pod yaml文件詳解
  • 六、Service yaml文件詳解


一、yml的簡介

Kubernetes 支持 YAML 和 JSON 格式管理資源對象
JSON 格式:主要用于 api 接口之間消息的傳遞
YAML 格式:用于配置和管理,YAML 是一種簡潔的非標記性語言,內容格式人性化,較易讀

YAML 語法格式:

●大小寫敏感
●使用縮進表示層級關系
●不支持Tab鍵制表符縮進,只使用空格縮進
●縮進的空格數目不重要,只要相同層級的元素左側對齊即可,通常開頭縮進兩個空格
●符號字符后縮進一個空格,如冒號,逗號,短橫桿(-)等
●“—”表示YAML格式,一個文件的開始,用于分隔文件間
●“#”表示注釋

二、手寫yml文件進行配置

查看 api 資源版本標簽

kubectl api-versions

在這里插入圖片描述

查看每個資源所使用的 api 版本是什么

kubectl api-resources

在這里插入圖片描述

查看yml編寫時的格式
在這里插入圖片描述
可以加上內容的其他字段來顯示可以寫入什么內容

kubectl explain 來進行查看后續的內容

在這里插入圖片描述寫一個yaml文件demo

mkdir /opt/demo
cd demo/
apiVersion: apps/v1
kind: Deployment
metadata:name: mynginx-dznamespace: dznblabels:app: myapp-deployspec:replicas: 3selector:matchLabels:app: myapp-podtemplate:metadata:labels:app: myapp-podspec:containers:- name: myappimage: nginx:1.15.4ports:- containerPort: 80name: nginxprotocol: TCP- containerPort: 443name: nginx1protocol: TCP

在創建的yaml文件里寫入內容
在這里插入圖片描述

創建資源對象

kubectl apply -f demo1-deploy.yaml

刪除資源對象

kubectl delete -f demo1-deploy.yaml

查看創建的pod資源

kubectl get pods -o wide -n dznb

在這里插入圖片描述
1、創建service服務對外提供訪問并測試

apiVersion: v1
kind: Service
metadata:name: mynginx-servicenamespace: dznb
spec:type: NodePortselector:app: myapp-podports:- name: nginxport: 8080targetPort: 80nodePort: 31000protocol: TCPexternalTrafficPolicy: Cluster

在這里插入圖片描述

什么是external-traffic-policy(外部流量轉發策略)?

在k8s的Service對象(申明一條訪問通道)中,有一個“externalTrafficPolicy”字段可以設置。有2個值可以設置:Cluster或者Local。
1)Cluster表示:流量可以轉發到其他節點上的Pod。
2)Local表示:流量只發給本機的Pod。

在這里插入圖片描述

2、創建資源對象

kubectl create -f demo2-service.yaml

3、查看創建的service

kubectl get pods -n dznb -o wide

在這里插入圖片描述

kubectl get svc -n dznb

在這里插入圖片描述

在瀏覽器輸入 nodeIP:nodePort 即可訪問

在這里插入圖片描述

詳解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。

三、使用yaml格式導出生成模板

kubectl run --dry-run=client 打印相應的 API 對象而不執行創建

kubectl create deployment nginx-deploy -n dznb --image=nginx --port=80 --replicas=3 --dry-run=client

在這里插入圖片描述

查看生成yaml格式

kubectl create deployment nginx-deploy -n dznb --image=nginx --port=80 --replicas=3 --dry-run=client -o yaml

在這里插入圖片描述

查看生成json格式

kubectl create deployment nginx-deploy -n dznb --image=nginx --port=80 --replicas=3 --dry-run=client -o json

在這里插入圖片描述

使用yaml格式導出生成模板,并進行修改以及刪除一些不必要的參數

kubectl create deployment nginx-deploy -n dznb --image=nginx --port=80 --replicas=3 --dry-run=client -o yaml  > demo3-dz.yml

在這里插入圖片描述

將里面不需要的內容進行刪除

在這里插入圖片描述

生成service資源模版的配置

 kubectl expose -n dznb deployment mynginx-dz --target-port=80 --type=NodePort --name=svc-deploy --dry-run=client -o yaml

在這里插入圖片描述
生成一個service資源配置文件

kubectl expose -n dznb deployment mynginx-dz --target-port=80 --type=NodePort --name=svc-deploy --dry-run=client -o yaml > demo4-svc.yml

在這里插入圖片描述

也可以將之前的service模版進行導出使用,并進行保持到新的文件當中

在這里插入圖片描述

寫yaml太累怎么辦?

●用 --dry-run 命令生成
kubectl run my-deploy --image=nginx --dry-run=client -o yaml > my-deploy.yaml●用get命令導出
kubectl get svc nginx-service -o yaml > my-svc.yaml
或
kubectl edit svc nginx-service  #復制配置,再粘貼到新文件

四、deployment.yaml文件詳解

apiVersion: extensions/v1beta1   #接口版本
kind: Deployment                 #接口類型
metadata:name: cango-demo               #Deployment名稱namespace: cango-prd           #命名空間labels:app: cango-demo              #標簽
spec:replicas: 3strategy:rollingUpdate:  ##由于replicas為3,則整個升級,pod個數在2-4個之間maxSurge: 1      #滾動升級時會先啟動1個podmaxUnavailable: 1 #滾動升級時允許的最大Unavailable的pod個數template:         metadata:labels:app: cango-demo  #模板名稱必填sepc: #定義容器模板,該模板可以包含多個容器containers:                                                                   - name: cango-demo                                                           #鏡像名稱image: swr.cn-east-2.myhuaweicloud.com/cango-prd/cango-demo:0.0.1-SNAPSHOT #鏡像地址command: [ "/bin/sh","-c","cat /etc/config/path/to/special-key" ]    #啟動命令args:                                                                #啟動參數- '-storage.local.retention=$(STORAGE_RETENTION)'- '-storage.local.memory-chunks=$(STORAGE_MEMORY_CHUNKS)'- '-config.file=/etc/prometheus/prometheus.yml'- '-alertmanager.url=http://alertmanager:9093/alertmanager'- '-web.external-url=$(EXTERNAL_URL)'#如果command和args均沒有寫,那么用Docker默認的配置。#如果command寫了,但args沒有寫,那么Docker默認的配置會被忽略而且僅僅執行.yaml文件的command(不帶任何參數的)。#如果command沒寫,但args寫了,那么Docker默認配置的ENTRYPOINT的命令行會被執行,但是調用的參數是.yaml中的args。#如果如果command和args都寫了,那么Docker默認的配置被忽略,使用.yaml的配置。imagePullPolicy: IfNotPresent  #如果不存在則拉取livenessProbe:       #表示container是否處于live狀態。如果LivenessProbe失敗,LivenessProbe將會通知kubelet對應的container不健康了。隨后kubelet將kill掉container,并根據RestarPolicy進行進一步的操作。默認情況下LivenessProbe在第一次檢測之前初始化值為Success,如果container沒有提供LivenessProbe,則也認為是Success;httpGet:path: /health #如果沒有心跳檢測接口就為/port: 8080scheme: HTTPinitialDelaySeconds: 60 ##啟動后延時多久開始運行檢測timeoutSeconds: 5successThreshold: 1failureThreshold: 5readinessProbe:httpGet:path: /health #如果沒有心跳檢測接口就為/port: 8080scheme: HTTPinitialDelaySeconds: 30 ##啟動后延時多久開始運行檢測timeoutSeconds: 5successThreshold: 1failureThreshold: 5resources:              ##CPU內存限制requests:cpu: 2memory: 2048Milimits:cpu: 2memory: 2048Mienv:                    ##通過環境變量的方式,直接傳遞pod=自定義Linux OS環境變量- name: LOCAL_KEY     #本地Keyvalue: value- name: CONFIG_MAP_KEY  #局策略可使用configMap的配置Key,valueFrom:configMapKeyRef:name: special-config   #configmap中找到name為special-configkey: special.type      #找到name為special-config里data下的keyports:- name: httpcontainerPort: 8080 #對service暴露端口volumeMounts:     #掛載volumes中定義的磁盤- name: log-cachemount: /tmp/log- name: sdb       #普通用法,該卷跟隨容器銷毀,掛載一個目錄mountPath: /data/media    - name: nfs-client-root    #直接掛載硬盤方法,如掛載下面的nfs目錄到/mnt/nfsmountPath: /mnt/nfs- name: example-volume-config  #高級用法第1種,將ConfigMap的log-script,backup-script分別掛載到/etc/config目錄下的一個相對路徑path/to/...下,如果存在同名文件,直接覆蓋。mountPath: /etc/config       - name: rbd-pvc                #高級用法第2中,掛載PVC(PresistentVolumeClaim)#使用volume將ConfigMap作為文件或目錄直接掛載,其中每一個key-value鍵值對都會生成一個文件,key為文件名,value為內容,volumes:  # 定義磁盤給上面volumeMounts掛載- name: log-cacheemptyDir: {}- name: sdb  #掛載宿主機上面的目錄hostPath:path: /any/path/it/will/be/replaced- name: example-volume-config  # 供ConfigMap文件內容到指定路徑使用configMap:name: example-volume-config  #ConfigMap中名稱items:- key: log-script           #ConfigMap中的Keypath: path/to/log-script  #指定目錄下的一個相對路徑path/to/log-script- key: backup-script        #ConfigMap中的Keypath: path/to/backup-script  #指定目錄下的一個相對路徑path/to/backup-script- name: nfs-client-root         #供掛載NFS存儲類型nfs:server: 10.42.0.55          #NFS服務器地址path: /opt/public           #showmount -e 看一下路徑- name: rbd-pvc                 #掛載PVC磁盤persistentVolumeClaim:claimName: rbd-pvc1         #掛載已經申請的pvc磁盤

五、Pod yaml文件詳解

apiVersion: v1			#必選,版本號,例如v1
kind: Pod				#必選,Pod
metadata:				#必選,元數據name: string			  #必選,Pod名稱namespace: string		  #必選,Pod所屬的命名空間labels:				  #自定義標簽- name: string		    #自定義標簽名字annotations:			    #自定義注釋列表- name: string
spec:					#必選,Pod中容器的詳細定義containers:			  #必選,Pod中容器列表- name: string		    #必選,容器名稱image: string		    #必選,容器的鏡像名稱imagePullPolicy: [Always | Never | IfNotPresent]	#獲取鏡像的策略:Alawys表示總是下載鏡像,IfnotPresent表示優先使用本地鏡像,否則下載鏡像,Nerver表示僅使用本地鏡像command: [string]		#容器的啟動命令列表,如不指定,使用打包時使用的啟動命令args: [string]			#容器的啟動命令參數列表workingDir: string		#容器的工作目錄volumeMounts:			#掛載到容器內部的存儲卷配置- name: string			  #引用pod定義的共享存儲卷的名稱,需用volumes[]部分定義的的卷名mountPath: string		  #存儲卷在容器內mount的絕對路徑,應少于512字符readOnly: boolean		  #是否為只讀模式ports:					#需要暴露的端口庫號列表- name: string			  #端口號名稱containerPort: int	  #容器需要監聽的端口號hostPort: int			  #容器所在主機需要監聽的端口號,默認與Container相同protocol: string		  #端口協議,支持TCP和UDP,默認TCPenv:					#容器運行前需設置的環境變量列表- name: string			  #環境變量名稱value: string			  #環境變量的值resources:				#資源限制和請求的設置limits:				  #資源限制的設置cpu: string			    #Cpu的限制,單位為core數,將用于docker run --cpu-shares參數memory: string			#內存限制,單位可以為Mib/Gib,將用于docker run --memory參數requests:				  #資源請求的設置cpu: string			    #Cpu請求,容器啟動的初始可用數量memory: string		    #內存清楚,容器啟動的初始可用數量livenessProbe:     		#對Pod內個容器健康檢查的設置,當探測無響應幾次后將自動重啟該容器,檢查方法有exec、httpGet和tcpSocket,對一個容器只需設置其中一種方法即可exec:					#對Pod容器內檢查方式設置為exec方式command: [string]	  #exec方式需要制定的命令或腳本httpGet:				#對Pod內個容器健康檢查方法設置為HttpGet,需要制定Path、portpath: stringport: numberhost: stringscheme: stringHttpHeaders:- name: stringvalue: stringtcpSocket:			#對Pod內個容器健康檢查方式設置為tcpSocket方式port: numberinitialDelaySeconds: 0	#容器啟動完成后首次探測的時間,單位為秒timeoutSeconds: 0		#對容器健康檢查探測等待響應的超時時間,單位秒,默認1秒periodSeconds: 0			#對容器監控檢查的定期探測時間設置,單位秒,默認10秒一次successThreshold: 0failureThreshold: 0securityContext:privileged:falserestartPolicy: [Always | Never | OnFailure]		#Pod的重啟策略,Always表示一旦不管以何種方式終止運行,kubelet都將重啟,OnFailure表示只有Pod以非0退出碼退出才重啟,Nerver表示不再重啟該PodnodeSelector: obeject		#設置NodeSelector表示將該Pod調度到包含這個label的node上,以key:value的格式指定imagePullSecrets:			#Pull鏡像時使用的secret名稱,以key:secretkey格式指定- name: stringhostNetwork:false			#是否使用主機網絡模式,默認為false,如果設置為true,表示使用宿主機網絡volumes:					#在該pod上定義共享存儲卷列表- name: string				  #共享存儲卷名稱 (volumes類型有很多種)emptyDir: {}				  #類型為emtyDir的存儲卷,與Pod同生命周期的一個臨時目錄。為空值hostPath: string			  #類型為hostPath的存儲卷,表示掛載Pod所在宿主機的目錄path: string			    #Pod所在宿主機的目錄,將被用于同期中mount的目錄secret:					#類型為secret的存儲卷,掛載集群與定義的secre對象到容器內部scretname: string  items:     - key: stringpath: stringconfigMap:				#類型為configMap的存儲卷,掛載預定義的configMap對象到容器內部name: stringitems:- key: string

六、Service yaml文件詳解

apiVersion: v1
kind: Service
matadata:                                #元數據name: string                           #service的名稱namespace: string                      #命名空間  labels:                                #自定義標簽屬性列表- name: stringannotations:                           #自定義注解屬性列表  - name: string
spec:                                    #詳細描述selector: []                           #label selector配置,將選擇具有label標簽的Pod作為管理 #范圍type: string                           #service的類型,指定service的訪問方式,默認為 #clusterIpclusterIP: string                      #虛擬服務地址      sessionAffinity: string                #是否支持sessionports:                                 #service需要暴露的端口列表- name: string                         #端口名稱protocol: string                     #端口協議,支持TCP和UDP,默認TCPport: int                            #服務監聽的端口號targetPort: int                      #需要轉發到后端Pod的端口號nodePort: int                        #當type = NodePort時,指定映射到物理機的端口號status:                                #當spce.type=LoadBalancer時,設置外部負載均衡器的地址loadBalancer:                        #外部負載均衡器    ingress:                           #外部負載均衡器 ip: string                       #外部負載均衡器的Ip地址值hostname: string                 #外部負載均衡器的主機名

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/37604.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/37604.shtml
英文地址,請注明出處:http://en.pswp.cn/news/37604.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

路由器和交換機的區別

交換機和路由器的區別 交換機實現局域網內點對點通信,路由器實現收集發散,相當于一個獵頭實現的中介的功能 路由器屬于網絡層,可以處理TCP/IP協議,通過IP地址尋址;交換機屬于中繼層,通過MAC地址尋址(列表)…

護眼燈值不值得買?什么護眼燈對眼睛好

想要選好護眼臺燈首先我們要知道什么是護眼臺燈,大的方向來看,護眼臺燈就是可以保護視力的臺燈,深入些講就是具備讓燈發出接近自然光特性的光線,同時光線不會傷害人眼而出現造成眼部不適甚至是視力降低的照明設備。 從細節上看就…

【數據結構】二叉樹篇|『構造二叉樹』刷題

博主簡介:努力學習的22級計算機科學與技術本科生一枚🌸博主主頁: 是瑤瑤子啦每日一言🌼: 所謂自由,不是隨心所欲,而是自我主宰。——康德 目錄 一、前言二、刷題1、最大二叉樹2、從前序與中序遍歷序列構造二…

怎么使用手機遠程控制Win10電腦?

可以使用手機遠程控制電腦嗎? “近期,我將出差一段時間。問題是,我希望能夠從很遠的地方瀏覽家里電腦上的一些東西,但我不會一直隨身攜帶笨重的筆記本電腦。我可以手機遠程訪問Windows電腦嗎? ” 當然&am…

SpringBoot請求響應

簡單參數 1. 原始方式獲取請求參數 Controller方法形參中聲明httpServletRequest對象 調用對象的getParameter參數名 RestController public class RequestController {RequestMapping("/simpleParam")public String simpleParam(HttpServletRequest request){Strin…

Pytorch源碼搜索與分析

PyTorch的的代碼主要由C10、ATen、torch三大部分組成的。其中: C10 C10,來自于Caffe Tensor Library的縮寫。這里存放的都是最基礎的Tensor庫的代碼,可以運行在服務端和移動端。PyTorch目前正在將代碼從ATen/core目錄下遷移到C10中。C10的代…

12-數據結構-數組、矩陣、廣義表

數組、矩陣、廣義表 目錄 數組、矩陣、廣義表 一、數組 二.矩陣 三、廣義表 一、數組 這一章節理解基本概念即可。數組要看清其實下標是多少,并且二維數組,存取數據,要先看清楚是按照行存還是按列存,按行則是正常一行一行的去讀…

學習Vue:slot使用

在Vue.js中,組件高級特性之一是插槽(Slots)。插槽允許您在父組件中插入內容到子組件的特定位置,從而實現更靈活的組件復用和布局控制。本文將詳細介紹插槽的使用方法和優勢。 什么是插槽? 插槽是一種讓父組件可以向子…

AIF360入門教學

1、AIF360簡介 AI Fairness 360 工具包(AIF360)是一個開源軟件工具包,可以幫助檢測和緩解整個AI應用程序生命周期中機器學習模型中的偏見。在整個機器學習的過程中,偏見可能存在于初始訓練數據、創建分類器的算法或分類器所做的預測中。AI Fairness 360…

OPENCV C++(十一)

鼠標響應函數 //鼠標響應函數 void on_mouse(int EVENT, int x, int y, int flags, void* userdata) {Mat hh;hh *(Mat*)userdata;switch (EVENT){case EVENT_LBUTTONDOWN:{vP.x x;vP.y y;drawMarker(hh, vP, Scalar(255, 255, 255));//circle(hh, vP, 4, cvScalar(255, 255…

人工智能在監控系統中的預測與優化:提升效率和響應能力

引言:人工智能的發展給監控系統帶來了新的可能性,通過分析歷史監控數據和其他相關數據,人工智能可以預測未來可能發生的事件,如交通擁堵、安全隱患等,并幫助優化監控系統的配置和資源分配。這種預測和優化的能力可以提…

2023年國賽數學建模思路 - 復盤:校園消費行為分析

文章目錄 0 賽題思路1 賽題背景2 分析目標3 數據說明4 數據預處理5 數據分析5.1 食堂就餐行為分析5.2 學生消費行為分析 建模資料 0 賽題思路 (賽題出來以后第一時間在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 賽題背景 校園一卡通是集…

vue3表格,編輯案例

index.vue <script setup> import { onMounted, ref } from "vue"; import Edit from "./components/Edit.vue"; import axios from "axios";// TODO: 列表渲染 const list ref([]); const getList async () > {const res await ax…

6.2.0在線編輯:GrapeCity Documents for Word (GcWord) Crack

GrapeCity Word 文檔 (GcWord) 支持 Office Math 函數以及轉換為 MathML GcWord 現在支持在 Word 文檔中創建和編輯 Office Math 內容。GcWord 中的 OMath 支持包括完整的 API&#xff0c;可處理科學、數學和通用 Word 文檔中廣泛使用的數學符號、公式和方程。以下是通過 OMa…

無法在 macOS Ventura 上啟動 Multipass

異常信息 ? ~ sudo multipass authenticate Please enter passphrase: authenticate failed: Passphrase is not set. Please multipass set local.passphrase with a trusted client. ? ~ multipass set local.passphrase Please enter passphrase: Please re-enter…

大語言模型LLM的一些點

LLM發展史 GPT模型是一種自然語言處理模型,使用Transformer來預測下一個單詞的概率分布,通過訓練在大型文本語料庫上學習到的語言模式來生成自然語言文本。 GPT-1(117億參數),GPT-1有一定的泛化能力。能夠用于和監督任務無關的任務中。GPT-2(15億參數),在生成方面表現出很…

vue自定義指令--動態參數綁定

在企業微信側邊欄應用中&#xff0c;給dialog添加了拖拽功能&#xff0c;但是因為dialog高度超過了頁面高度&#xff0c;所以高度100%時拖拽有個bug--自動貼到窗口頂部而且企業側邊欄寬高都有限制&#xff0c;拖拽效果并不理想&#xff0c;所以就想縮小dialog再進行拖拽。 拖拽…

IntelliJ IDEA和Android studio怎么去掉usage和作者提示

截止到目前我已經寫了 600多道算法題&#xff0c;其中部分已經整理成了pdf文檔&#xff0c;目前總共有1000多頁&#xff08;并且還會不斷的增加&#xff09;&#xff0c;大家可以免費下載 下載鏈接&#xff1a;https://pan.baidu.com/s/1hjwK0ZeRxYGB8lIkbKuQgQ 提取碼&#xf…

java處理CSV文件

文章目錄 1. 方法2. maven依賴3. 示例代碼 1. 方法 opencsv–>CSVParser&#xff1b;commons-csv–>CSVReader&#xff1b;有時候文本里有逗號可能會導致錯誤分割 2. maven依賴 <dependency><groupId>org.apache.commons</groupId><artifactId>…

457. 環形數組是否存在循環

457. 環形數組是否存在循環 原題鏈接&#xff1a;完成情況&#xff1a;解題思路&#xff1a;參考代碼&#xff1a;經驗吸取 原題鏈接&#xff1a; 457. 環形數組是否存在循環 https://leetcode.cn/problems/circular-array-loop/description/ 完成情況&#xff1a; 解題思路…