当涉及到企业级的Kubernetes Deployment时,通常需要考虑
高可用性、
资源管理、
安全性
升级回滚
持久性
探活等因素。以下是一个经过注释和简单讲解的企业级Kubernetes Deployment的示例YAML文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment # Deployment的名称
labels:
app: my-app # 标签,用于标识和选择Deployment
spec:
replicas: 3 # 副本数,指定要创建的Pod副本数量
selector:
matchLabels:
app: my-app # 选择器,用于选择要管理的Pod副本
template:
metadata:
labels:
app: my-app # Pod模板中的标签
spec:
containers:
- name: my-container
image: my-image:latest # 容器镜像,包括版本标签
ports:
- containerPort: 80 # 容器监听的端口号
resources:
limits:
cpu: "2" # 容器的CPU资源限制
memory: "2Gi" # 容器的内存资源限制
requests:
cpu: "1" # 容器的CPU资源请求
memory: "1Gi" # 容器的内存资源请求
readinessProbe: # 就绪探针
httpGet:
path: /health # 探针使用的HTTP路径
port: 80 # 探针使用的端口号
initialDelaySeconds: 10 # 容器启动后首次探测的等待时间
periodSeconds: 5 # 两次探测之间的间隔时间
livenessProbe: # 存活探针
httpGet:
path: /health # 探针使用的HTTP路径
port: 80 # 探针使用的端口号
initialDelaySeconds: 30 # 容器启动后首次探测的等待时间
periodSeconds: 10 # 两次探测之间的间隔时间
env: # 环境变量
- name: ENV_VAR1 # 环境变量1的名称
value: value1 # 环境变量1的值
- name: ENV_VAR2 # 环境变量2的名称
valueFrom:
secretKeyRef:
name: my-secret # 引用的Secret对象的名称
key: secret-key # 引用的Secret对象中的键名
volumeMounts: # 挂载的卷
- name: data-volume # 挂载的卷的名称
mountPath: /data # 挂载路径
volumes: # 卷
- name: data-volume # 卷的名称
emptyDir: {} # 空目录卷
strategy: # 更新策略
type: RollingUpdate # 滚动更新策略
rollingUpdate:
maxSurge: 1 # 滚动更新期间允许的最大额外副本数
maxUnavailable: 1 # 滚动更新期间允许的最大不可用副本数
minReadySeconds: 30 # Pod变为就绪状态所需的最小时间
在这个示例中,对Deployment的各个部分进行了注释和简单讲解,以下是各部分的说明:
-
metadata
字段中的name
属性定义了Deployment的名称,labels
属性定义了一个标签,用于标识和选择Deployment。 -
spec
字段中的replicas
属性指定了要创建的Pod副本数量,selector
属性定义了选择器,用于选择要管理的Pod副本。 -
template
字段描述了要创建的Pod的模板,其中的labels
属性定义了Pod的标签,spec
属性定义了Pod的规范。-
在
containers
列表中,我们可以定义一个或多个容器。每个容器具有名称(name
)、容器镜像(image
)、端口(ports
)和资源限制(resources
)等属性。 -
readinessProbe
和livenessProbe
字段分别定义了容器的就绪探针和存活探针。就绪探针用于检查容器是否准备好接收流量,存活探针用于检查容器是否仍然存活。这些探针可以根据需要进行配置,以确保容器的健康状态。 -
env
字段定义了容器的环境变量。可以直接指定环境变量的值,或者从Secret中获取值。 -
volumeMounts
字段定义了容器的卷挂载配置,可以将卷挂载到容器的指定路径上。
-
-
volumes
字段定义了卷的配置,这里使用了一个空目录卷(emptyDir
),它是一个在容器之间共享的临时存储。 -
strategy
字段定义了Deployment的更新策略,这里采用了滚动更新方式(RollingUpdate
)。maxSurge
属性指定了滚动更新期间允许的最大额外副本数,maxUnavailable
属性指定了滚动更新期间允许的最大不可用副本数。 -
minReadySeconds
属性定义了Pod变为就绪状态所需的最小时间,以确保在进行下一次滚动更新之前Pod已经可以接收流量。
这个示例提供了一个注释和简单讲解的企业级Kubernetes Deployment的YAML文件,帮助理解各个部分的配置和作用。你可以根据自己的需求进行修改和扩展。