基本說明
Deployment 資源是 Kubernetes 重要的組成部分之一,通過指定 Deployment 中的 Pod 模板和副本數(shù)量,Kubernetes 可以自動(dòng)地創(chuàng)建并管理一組具有相同配置的 Pod,這樣即使某些 Pod 發(fā)生故障或需要升級(jí),也可以輕松地進(jìn)行控制和管理。
因此,當(dāng)我們使用?kind: Deployment
?時(shí),YAML 文件中應(yīng)該包括?spec
?字段來定義 Deployment 中的 Pod 模板和副本數(shù)量,并可以通過?metadata
?字段來為 Deployment 資源指定名稱,標(biāo)簽和注釋等元數(shù)據(jù)。
基本樣例
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment # Deployment 的名稱
spec:
replicas: 3 # 希望創(chuàng)建的 Pod 副本數(shù)量
selector:
matchLabels:
app: my-app # 用于選擇要控制的 Pod 的標(biāo)簽
template:
metadata:
labels:
app: my-app # Pod 的標(biāo)簽
spec:
containers:
- name: my-container # 容器名稱
image: nginx:latest # 容器所使用的鏡像
ports:
- containerPort: 80 # 容器暴露的端口號(hào)
樣例說明
在這個(gè)示例中,包含了以下關(guān)鍵字:
-
apiVersion
:指定要使用的 Kubernetes API 的版本。對(duì)于 Deployment 類型,通常使用?apps/v1
。 -
kind
:指定對(duì)象類型為 Deployment。 -
metadata
:用于提供對(duì)象的元數(shù)據(jù),其中?name
?字段指定了 Deployment 的名稱。 -
spec
:是 Deployment 對(duì)象的規(guī)格部分,用于定義 Deployment 的具體配置。-
replicas
:指定希望創(chuàng)建的 Pod 副本數(shù)量。 -
selector
:定義用于選擇要控制的 Pod 的標(biāo)簽。 -
template
:定義 Pod 的模板,用于創(chuàng)建實(shí)際的 Pod 對(duì)象。-
metadata
:定義 Pod 的元數(shù)據(jù)部分,其中?labels
?字段用于給 Pod 設(shè)置標(biāo)簽。 -
spec
:定義 Pod 的規(guī)格部分,其中?containers
?字段用于定義容器的配置。-
name
:指定容器的名稱。 -
image
:指定容器所使用的鏡像。 -
ports
:定義容器暴露的端口號(hào)。
-
-
-
擴(kuò)展參數(shù)及舉例說明
擴(kuò)展關(guān)鍵字
Deployment YAML 文件還可以包含其他用于配置 Deployment 的關(guān)鍵字
- strategy: 定義 Deployment 更新策略,如 rollingupdate 和 recreated,還可以指定 RollingUpdate 策略的參數(shù),如?maxUnavailable?和?maxSurge。
- minReadySeconds: 指定一個(gè) Pod 從創(chuàng)建到被標(biāo)記為 Ready 的最小等待時(shí)間。
- revisionHistoryLimit: 定義 Deployment 可以保留的歷史版本數(shù)。
- paused: 設(shè)置 Deployment 是否暫停更新。
- progressDeadlineSeconds: 設(shè)置 Deployment 更新的 Deadline。
- template.metadata.annotations: 用于為模板 Pod 設(shè)置注釋。
- template.spec.nodeName: 用于設(shè)置 Pod 所在的節(jié)點(diǎn)名稱。
- template.spec.serviceAccountName: 用于指定 Pod 使用的 ServiceAccount 的名稱。
使用 RollingUpdate 更新策略
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: nginx:latest
ports:
- containerPort: 80
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
在這個(gè)示例中,通過將?strategy.type
?設(shè)置為?RollingUpdate
,并分別設(shè)置?rollingUpdate.maxUnavailable
?和?rollingUpdate.maxSurge
?的值來定義滾動(dòng)更新策略的參數(shù)。其中?maxUnavailable
?指定允許的不可用 Pod 的最大數(shù)量,maxSurge
?指定允許的超出副本數(shù)量的最大副本數(shù)。
暫停 Deployment 更新
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: nginx:latest
ports:
- containerPort: 80
paused: true
在這個(gè)示例中,通過將?paused
?設(shè)置為?true
,將 Deployment 的更新暫停。這對(duì)于暫時(shí)停止 Deployment 的更新,并保持某個(gè)特定版本的副本運(yùn)行非常有用。
這些關(guān)鍵字可以根據(jù)你的需求進(jìn)行調(diào)整和擴(kuò)展。當(dāng)你編寫完 YAML 文件后,可以使用?kubectl apply -f <YAML文件路徑>
?命令將該文件應(yīng)用到 Kubernetes 集群中,創(chuàng)建或更新 Deployment 對(duì)象。文章來源:http://www.zghlxwxcb.cn/news/detail-820599.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-820599.html
到了這里,關(guān)于常見類型的yaml文件如何編寫?--kind: Deployment的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!