apiVersion: apps/v1
kind: Deployment
apiVersion
: 資源的版本,這裡使用的是apps/v1
,表示這是一個 Deployment 的最新版本。kind
: 資源型別,這裡是Deployment
,表示這是一個 Deployment 資源。
metadata: name: project_name-project_envname
: Deployment 的名字,通常用來標識這個 Deployment 例項。
namespace: baidu-project_envnamespace
: 指定 Deployment 所在的名稱空間,這裡是baidu-project_env
。
labels: app: project_name-project_envlabels
: 用於標識 Deployment 的鍵值對。標籤可以幫助我們管理和選擇特定的資源。
spec: replicas: 1replicas
: 指定要執行的 Pod 副本數量,這裡是 1 個
selector: matchLabels: app: project_name-project_envselector
: 指定如何選擇 Pod。它會選擇帶有app: project_name-project_env
標籤的 Pod。 template: metadata: labels: app: project_name-project_envtemplate
: 定義 Pod 的模板。 spec: nodeSelector: environment: dtm-project_envnodeSelector
: 指定 Pod 應該在哪些節點上執行。這裡 Pod 會執行在帶有environment: dtm-project_env
標籤的節點上。
containers: - name: project_name-project_envname
: 容器的名字。 image: project_images_url
image
: 容器使用的映象 lifecycle:
lifecycle
: 定義容器的生命週期鉤子。 postStart:
postStart
: 在容器啟動後執行的命令 exec:
exec
: 執行 shell 命令,改變/data/logs
、/data/webapps
、/data/cache
目錄的所有者。 command: - /bin/sh - -c - | chown -R www-data.www-data /data/logs /data/webapps /data/cache ports:
ports
: 容器暴露的埠,這裡暴露了 80 埠。 - containerPort: 80 resources:
resources
: 定義容器的資源請求和限制 limits:
limits
用於設定容器可用的最大資源量。如果容器超出這些限制,可能會被 Kubernetes 終止(OOMKilled 或者超出 CPU 限制)。
限制(limits):用於限制容器的資源消耗,防止容器消耗過多的資源,影響其他 Pod。 memory: "1Gi" cpu: "1" requests:
requests
定義了容器正常執行所需的最小資源量。
請求(requests):幫助 Kubernetes 確定在哪個節點上排程 Pod。節點上的總請求量不應該超過節點的總容量。
Kubernetes 根據這些請求值來決定 Pod 應該部署在哪個節點上。確保每個節點上的總請求量不超過其可用資源 memory: "256Mi" cpu: "100m" terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /data/logs/svc/nginx name: nginx-error-log - mountPath: /data/logs/access/project_name name: nginx-access-log - mountPath: /data/logs/svc/php name: php-error-log - mountPath: /data/logs/app/project_name name: app-log - mountPath: /data/cache/project_name name: cache imagePullSecrets: - name: aliyun-registry-secret volumes: - hostPath: path: /data/logs/svc/nginx type: '' name: nginx-error-log - hostPath: path: /data/logs/access/project_name type: '' name: nginx-access-log - hostPath: path: /data/logs/app/project_name type: "" name: app-log - hostPath: path: /data/logs/svc/php type: "" name: php-error-log - hostPath: path: /data/cache/project_name type: "" name: cache