请参考官方 Kubernetes 文档:Deployments
Deployment 是 Kubernetes 中一种高级的工作负载资源,用于声明式地管理和更新应用的 Pod 副本。它提供了一种稳健且灵活的方式来定义应用的运行方式,包括维护多少副本以及如何安全地执行滚动更新。
Deployment 是 Kubernetes API 中管理 Pods 和 ReplicaSets 的对象。当你创建一个 Deployment 时,Kubernetes 会自动创建一个 ReplicaSet,负责维护指定数量的 Pod 副本。
使用 Deployments,您可以:
工作原理:
kubectl
。获取镜像地址。镜像来源可以是平台管理员通过工具链集成的镜像仓库,也可以是第三方平台的镜像仓库。
在 Container Platform,左侧导航栏进入 Workloads > Deployments。
点击 Create Deployment。
选择或输入镜像,点击 Confirm。
注意:使用 Web 控制台集成的镜像仓库时,可以通过 Already Integrated 过滤镜像。集成项目名称示例:镜像(docker-registry-projectname),其中 projectname 是该 Web 控制台中的项目名,也是镜像仓库中的项目名。
在 Basic Info 部分,配置 Deployment 工作负载的声明式参数:
参数 | 说明 |
---|---|
Replicas | 定义 Deployment 中期望的 Pod 副本数(默认:1 )。根据工作负载需求调整。 |
More > Update Strategy | 配置 rollingUpdate 策略,实现零停机部署:Max surge ( maxSurge ):
maxUnavailable ):
1. 默认值:未显式设置时, maxSurge=1 ,maxUnavailable=1 。2. 非运行状态的 Pod(如 Pending /CrashLoopBackOff )视为不可用。3. 同时约束:
对于 10 个副本的 Deployment:
|
注意:在混合架构集群中部署单架构镜像时,需正确配置 Node Affinity Rules 以保证 Pod 调度。
在 Pod 部分,配置容器运行时参数和生命周期管理:
参数 | 说明 |
---|---|
Volumes | 挂载持久卷到容器。支持的卷类型包括 PVC 、ConfigMap 、Secret 、emptyDir 、hostPath 等。具体实现请参见 Volume Mounting Guide。 |
Pull Secret | 仅在从第三方镜像仓库拉取镜像(通过手动输入镜像 URL)时需要。 注意:用于从安全镜像仓库拉取镜像的认证 Secret。 |
Close Grace Period | Pod 接收到终止信号后允许的优雅关闭时间(默认:30s )。- 在此期间,Pod 会完成正在处理的请求并释放资源。 - 设置为 0 会强制立即删除(SIGKILL),可能导致请求中断。 |
参数 | 说明 |
---|---|
More > Node Selector | 限制 Pod 调度到具有特定标签的节点(例如 kubernetes.io/os: linux )。![]() |
More > Affinity | 基于现有规则定义细粒度调度策略。 Affinity 类型:
|
网络配置
Kube-OVN
参数 | 说明 |
---|---|
Bandwidth Limits | 对 Pod 网络流量实施 QoS:
|
Subnet | 从预定义子网池分配 IP。未指定时,使用命名空间的默认子网。 |
Static IP Address | 绑定持久 IP 地址到 Pod:
|
Calico
参数 | 说明 |
---|---|
Static IP Address | 分配固定 IP,严格唯一:
|
在 Container 部分,参考以下说明配置相关信息。
参数 | 说明 |
---|---|
Resource Requests & Limits |
|
Extended Resources | 配置集群可用的扩展资源(如 vGPU、pGPU)。 |
Volume Mounts | 持久存储配置。详见 Storage Volume Mounting Instructions。 操作:
|
Ports | 暴露容器端口。 示例:暴露 TCP 端口 6379 ,名称为 redis 。字段:
|
Startup Commands & Arguments | 覆盖默认 ENTRYPOINT/CMD: 示例 1:执行 top -b - Command: ["top", "-b"] - 或 Command: ["top"] ,Args:["-b"] 示例 2:输出 $MESSAGE :/bin/sh -c "while true; do echo $(MESSAGE); sleep 10; done" 详见 Defining Commands。 |
More > Environment Variables |
|
More > Referenced ConfigMaps | 注入整个 ConfigMap/Secret 作为环境变量。支持的 Secret 类型:Opaque 、kubernetes.io/basic-auth 。 |
More > Health Checks |
|
More > Log Files | 配置日志路径: - 默认采集 stdout - 文件模式:如 /var/log/*.log 要求:
|
More > Exclude Log Files | 排除特定日志采集(如 /var/log/aaa.log )。 |
More > Execute before Stopping | 容器终止前执行命令。 示例: echo "stop" 注意:命令执行时间必须短于 Pod 的 terminationGracePeriodSeconds 。 |
点击右上角 Add Container 或 Add Init Container。
参见 Init Containers。 Init Container:
点击 Create。
类型 | 用途 |
---|---|
Persistent Volume Claim | 绑定已有的 PVC 以请求持久存储。 注意:仅可选择已绑定(关联 PV)的 PVC。未绑定 PVC 会导致 Pod 创建失败。 |
ConfigMap | 挂载完整或部分 ConfigMap 数据为文件:
|
Secret | 挂载完整或部分 Secret 数据为文件:
|
Ephemeral Volumes | 集群动态提供的临时卷,具备:
使用场景:临时数据存储。详见 Ephemeral Volumes |
Empty Directory | Pod 内容器间共享的临时存储: - Pod 启动时在节点创建 - Pod 删除时删除 使用场景:容器间文件共享、临时数据存储。详见 EmptyDir |
Host Path | 挂载宿主机目录(必须以 / 开头,如 /volumepath )。 |
按照以下步骤更新 Deployment:
或者使用以下命令:
也可以编辑 Deployment,将 .spec.template.spec.containers[0].image
从 nginx:1.14.2
改为 nginx:1.16.1
:
kubectl get rs
查看 Deployment 通过创建新 ReplicaSet 并扩容到 3 个副本,同时缩容旧 ReplicaSet 到 0 副本来更新 Pods。kubectl get pods
应只显示新 Pods:使用以下命令扩缩 Deployment:
nginx:1.161
(应为 nginx:1.16.1
):删除 Deployment 会同时删除其管理的 ReplicaSet 及所有关联的 Pods。
您可以查看 Deployment 以获取应用信息。
当 Deployment 遇到问题时,以下是一些常用的排查方法。
确保 livenessProbe 和 readinessProbe 配置正确,且应用的健康检查端点响应正常。探针失败排查
确保容器资源请求和限制合理,避免因资源不足导致容器被杀死。