apiVersion: apps/v1
kind: Deployment
apiVersion: 资源的版本,这里使用的是 apps/v1,表示这是一个 Deployment 的最新版本。
kind: 资源类型,这里是 Deployment,表示这是一个 Deployment 资源。
metadata:
name: project_name-project_env
name: Deployment 的名字,通常用来标识这个 Deployment 实例。
namespace: baidu-project_env
namespace: 指定 Deployment 所在的命名空间,这里是 baidu-project_env。
labels:
app: project_name-project_env
labels: 用于标识 Deployment 的键值对。标签可以帮助我们管理和选择特定的资源。
spec:
replicas: 1
replicas: 指定要运行的 Pod 副本数量,这里是 1 个
selector:
matchLabels:
app: project_name-project_env
selector: 指定如何选择 Pod。它会选择带有 app: project_name-project_env 标签的 Pod。
template:
metadata:
labels:
app: project_name-project_env
template: 定义 Pod 的模板。
spec:
nodeSelector:
environment: dtm-project_env
nodeSelector: 指定 Pod 应该在哪些节点上运行。这里 Pod 会运行在带有 environment: dtm-project_env标签的节点上。
containers:
- name: project_name-project_env
name: 容器的名字。
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表示一个Pod需要的最小CPU和内存资源量。
请求值用来告诉 Kubernetes 调度器(Scheduler),这个 Pod 至少需要这些资源才能运行。
目的:通过定义请求值,Kubernetes 可以更好地将 Pod 安排到能够满足其最低需求的节点上。
memory: "256Mi"
cpu: "100m"
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
volumeMounts: 定义容器的卷挂载点。
- mountPath: /data/logs/svc/nginx
mountPath: 卷在容器中的挂载路径
name: nginx-error-log
name: 引用的卷名称
imagePullSecrets:
imagePullSecrets: 用于拉取私有镜像仓库中的镜像。这里使用了 aliyun-registry-secret。
- name: aliyun-registry-secret
volumes:
volumes: 定义了容器使用的卷
- hostPath:
hostPath: 卷的类型,这里是主机路径。
path: /data/logs/svc/nginx
path: 主机上的实际路径
type: ''
type: 定义路径类型(这里为空,表示默认值)。
name: nginx-error-log
name: 卷的名称,用于在 volumeMounts 中引用。