Deployment管理
概述
用户可以通过表单方式基于镜像创建部署,也可以通过百度智能云提供的 YAML 文件模板创建和修改部署,对已部署应用的资源进行实时监控,同时还可以便捷地对应用及其所关联的服务(Service)、容器组(Pod)的生命周期和部署方式进行控制管理。
前提条件
- 已成功创建 CCE 集群,操作说明参见 创建 CCE 集群。
创建无状态工作负载(Deployment)
用户可以选择通过 CCE 控制台使用表单形式或者通过 yaml 形式创建新的无状态工作负载,也可以选择通过 kubectl 命令创建。
方式一:通过控制台表单形式创建
-
登录无状态负载管理页面。
a. 登录 容器引擎CCE控制台。
b. 在左侧导航栏,点击 "集群管理->集群列表",进入集群列表页,点击集群名称,进入集群管理页面。
c. 在集群管理页面的左侧导航栏中,单击 工作负载 > 无状态。 - 点击无状态工作负载列表左上角新建无状态,进入创建工作负载页面。
- 在基本信息模块填写工作负载名称、命名空间、容器组数量、Pod 标签,点击下一步进入容器配置。
基本信息
参数 | 说明 |
---|---|
工作负载名称 | 根据系统提示,配置工作负载的名称。在同一个命名空间下,名称必须唯一。 |
命名空间 | 选择工作负载部署的命名空间,默认为default。支持选择自定义创建的命名空间,自定义命名空间,请参见 命名空间操作。 |
工作负载类型 | 选择无状态工作负载Deployment。 |
期望 Pod 数 | 输入工作负载的 Pod 实例个数。 |
K8s标签 | Kubernetes 中的 Label,用于识别工作负载的键值对,配合选择器,帮助 Kubernetes 快速筛选目标工作负载。详细信息参考K8S 标签说明。 |
注释 | 填写工作负载的注解信息,对应 Kubernetes 中的 Annotation,主要记录用于应用部署、安全策略、调度策略的附加信息,不用于标识和区分资源。详细信息参考K8S 注释说明。 |
-
在容器配置模块,填写容器名称和镜像地址,可点击选择镜像后在弹窗中选择 CCR 中的镜像地址。点击下一步进入高级配置模块。
说明:
- Pod 中可以配置多个容器,您可以单击右侧“添加容器”为 Pod 配置多个容器。
- 若使用了私有镜像,需在当前页面的高级设置中配置仓库访问凭证。
容器配置
参数 | 说明 |
---|---|
容器名称 | 根据系统提示的命名规则,输入容器名称。同一个工作负载下容器名称必须唯一。 |
镜像地址 | 单击后方“选择镜像”,选择容器使用的镜像。支持选择以下两种种类型的镜像。
|
镜像版本 | 选择需要部署的镜像版本。 |
镜像拉取策略 | 选择镜像拉取策略。CCE 支持以下三种镜像拉取策略(imagePullPolicy):
|
容器配额 | 配置容器资源的resources.limits和容器资源的resources.requests。如不填写申请值和限制值,表示不限制配额。申请值和限制值的配置说明及建议,请参见Requests and Limits。
|
容器端口 | 设置容器端口名称、协议、端口。 |
环境变量 | 单击 添加环境变量,配置环境变量。Kubernetes 在创建 Pod 时,会将环境变量的信息注入到容器中。 支持以下类型: |
特权容器 | 默认不开启。开启后,特权模式允许容器拥有与所在的Worker节点操作系统近似的权限,例如访问硬件设备、挂载文件系统等。 |
初始化容器 | 默认不开启。选择容器是否作为初始化(Init)容器。初始化(Init)容器不支持设置健康检查。Init容器是一种特殊容器,可以在Pod中的其他应用容器启动之前运行。每个Pod中可以包含多个容器,同时Pod中也可以有一个或多个先于应用容器启动的Init容器,当所有的Init 容器运行完成时,Pod中的应用容器才会启动并运行。详细说明请参见Init 容器。 |
生命周期 | 在容器的生命周期的特定阶段配置需要执行的操作,例如启动命令、启动后处理和停止前处理,详情请参见设置容器生命周期。 |
仓库访问凭证 | 若有容器使用了私有镜像,请务必添加对应的镜像仓库的访问凭证。支持新建访问凭证和选择已有的,详细信息参考配置访问凭证。 |
- 在高级设置模块中,配置伸缩策略、更新策略和调度策略,点击完成进行工作负载的创建。
高级设置
参数 | 说明 |
---|---|
伸缩配置 | 支持两种伸缩配置:水平伸缩和定时水平伸缩。
|
更新策略 | Pod配置发生变更时,工作负载使用新Pod替换旧Pod的机制,包含两种策略:
|
调度策略 | 通过配置亲和与反亲和规则,可实现灵活的工作负载调度,支持负载亲和与节点亲和。
|
方式二:通过 YAML 创建
- 点击部署列表左上角使用YAML创建,进入新建工作负载页面。
- 点击下拉列表选择命名空间,填写 yaml 文件,点击确定。
说明:
- 模板类型:可使用示例模板或“我的模板”创建。
- 复制:复制当前 YAML 文件的内容。
- 另存为:将当前文件模版另存为“我的模版”。
- 取消:返回列表页。
工作负载YAML示例
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment-example
labels:
app: nginx
spec:
replicas: 2
minReadySeconds: 0
strategy:
type: RollingUpdate # 策略:滚动更新
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
restartPolicy: Always
# restartPolicy: OnFailure
# restartPolicy: Never
containers:
- name: nginx
image: registry.baidubce.com/cce/nginx-alpine-go:latest
imagePullPolicy: Always
# imagePullPolicy: IfNotPresent
# imagePullPolicy: Never
ports:
- containerPort: 80
resources: # 资源限制
limits:
cpu: 250m
memory: 512Mi
requests:
cpu: 250m
memory: 512Mi
livenessProbe: # 健康检查:存活探针
httpGet:
path: /
port: 80
initialDelaySeconds: 20
timeoutSeconds: 5
periodSeconds: 5
readinessProbe: # 健康检查:就绪探针
httpGet:
path: /
port: 80
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 5
# volumeMounts:
# - name: nginx-volume
# mountPath: "/usr/share/nginx"
# volumes:
# - name: nginx-volume
# flexVolume:
# driver: "baidubce/cds"
# fsType: "ext4"
# options:
# volumeID: "{id}" # 填写cds的id,注意:cds必须和pod在同一可用区!!
# nodeSelector:
# beta.kubernetes.io/os: linux
# tolerations: # 容忍污点
# - effect: NoExecute
# operator: Exists
# - effect: NoSchedule
# operator: Exists
# affinity: # 亲和性
# nodeAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# - key: failure-domain.beta.kubernetes.io/zone
# operator: In
# values:
# - zoneA
# - zoneB
# - zoneC
方式三:通过 kubectl 创建
- 准备 Deployment yaml 文件。
- 安装 kubectl,并连接集群,详情参见 通过 kubectl 连接集群。
- 复制下方的YAML文件,并保存到 deployment.yaml中。下方的YAML中定义了一个Deployment以及用于ClusterIP类型Service。
apiVersion: apps/v1
kind: Deployment # 工作负载类型
metadata:
name: nginx-test
namespace: default # 根据需要更改命名空间
labels:
app: nginx
spec:
replicas: 2 # 指定Pod数量
selector:
matchLabels:
app: nginx
template: # Pod配置
metadata:
labels: # Pod标签
app: nginx
spec:
containers:
- name: nginx # 容器名称
image: registry.baidubce.com/cce/nginx-alpine-go:latest # 使用特定版本的 Nginx 镜像
ports:
- containerPort: 80 # 容器暴露的端口
protocol: TCP # 指定协议为 TCP/UDP,默认也是 TCP
---
# service
apiVersion: v1
kind: Service
metadata:
name: nginx-test-svc
namespace: default # 根据需要更改命名空间
labels:
app: nginx
spec:
selector:
app: nginx # 匹配标签,确保服务指向正确的 Pods
ports:
- port: 80 # Service 在集群内提供的端口
targetPort: 80 # 指向容器内部应用程序监听的端口 (containerPort)
protocol: TCP # 协议,默认是 TCP
type: ClusterIP # 服务类型,默认是 ClusterIP,内部访问
sessionAffinity: None # 默认值,不使用客户端会话亲和性
-
执行以下命令,创建Deployment及Service。
kubectl apply -f deployment.yaml
预期输出:
deployment.apps/nginx-test created service/nginx-test-svc created
-
执行以下命令,查看Service的公网IP地址
kubectl get svc
-
执行以下命令,验证 Deployment 是否创建成功:
kubectl get deployments
查看工作负载详情
点击列表页任何一行的工作负载名称,即可进入工作负载详情页,详情页内容包括: 工作负载详情、关联容器组、关联服务、更新升级、伸缩策略、调度策略、监控、事件等信息。
更新 Pod 数
支持通过控制台快速更新无状态负载中的 Pod 实例个数。
-
登录无状态负载管理页面。
a. 登录 容器引擎CCE控制台。
b. 在左侧导航栏,点击 "集群管理->集群列表",进入集群列表页,点击集群名称,进入集群管理页面。
c. 在集群管理页面的左侧导航栏中,单击 工作负载 > 无状态。 - 在目标无状态负载的列表,点击需要调整的无状态行中的“伸缩”,在伸缩的弹框页中,填写需要的容器组数量,点击“确认”。
更新无状态工作负载
支持通过控制台界面或 YAML 文件编辑已创建的无状态负载。
-
登录无状态负载管理页面。
a. 登录 容器引擎CCE控制台。
b. 在左侧导航栏,点击 "集群管理->集群列表",进入集群列表页,点击集群名称,进入集群管理页面。
c. 在集群管理页面的左侧导航栏中,单击 工作负载 > 无状态负载。 - 在目标无状态负载的操作列,单击 更新升级 或 编辑 YAML。
说明:
通过控制台界面更新和编辑 YAML 文件更新,均不支持更新无状态负载名称、命名空间。
a. 更新:在控制台更新配置信息。详细的参数说明,请参见 [通过控制台创建](https://cloud.baidu.com/doc/CCE/s/cjxpoxrgi)。<br>
b. 编辑 YAML:编辑 YAML 文件更新配置信息。详细的 YAML 配置说明,请参见[通过 YAML 创建](https://cloud.baidu.com/doc/CCE/s/cjxpoxrgi)。<br>
- 更新完成后,单击提交。
重启工作负载
支持通过控制台重启无状态负载。重启后,将重启工作负载下的全部容器组(Pod)。
-
登录无状态负载管理页面。
a. 登录 容器引擎CCE控制台。
b. 在左侧导航栏,点击 "集群管理->集群列表",进入集群列表页,点击集群名称,进入集群管理页面。
c. 在集群管理页面的左侧导航栏中,单击 工作负载 > 无状态。 - 选择“无状态”页签,单击工作负载后的“更多 > 重启”。
- 在弹出的提示框中单击“确认”,即可完成工作负载的重启。
标签注解管理
标签是以key/value键值对的形式附加在无状态工作负载上的。添加标签后,可通过标签对无状态工作负载进行管理和选择。您可以给多个工作负载打标签,也可以给指定的某个工作负载打标签。
说明:
标签格式要求如下:以字母和数字开头或结尾,由字母、数字、连接符(-)、下划线(_)、点号(.)组成且63字符以内,详细 K8S标签说明。
-
登录无状态负载管理页面。
a. 登录 容器引擎CCE控制台。
b. 在左侧导航栏,点击 "集群管理->集群列表",进入集群列表页,点击集群名称,进入集群管理页面。
c. 在集群管理页面的左侧导航栏中,单击 工作负载 > 无状态。 - 选择“无状态”页签,单击工作负载后的“更多 > 标签注解”。
- 单击添加标签,输入键和值后单击更新。
查看监控
您可以通过 CCE 控制台查看工作负载和容器组的 CPU 和内存占用情况,以确定需要的资源规格。
说明:
查看工作负载的监控信息时,依赖集群接入 Prometheus 监控服务。若集群未接入Prometheues 监控服务,请根据界面提示接入,详细信息请参见使用Prometheus监控集群。
-
登录无状态负载管理页面。
a. 登录 容器引擎CCE控制台。
b. 在左侧导航栏,点击 "集群管理->集群列表",进入集群列表页,点击集群名称,进入集群管理页面。
c. 在集群管理页面的左侧导航栏中,单击 工作负载 > 无状态。 - 在目标无状态负载的列表,点击需要调整的无状态行中的“监控”。
- 在监控页面查看无状态负载的监控数据。容器相关监控指标说明,请参见 监控指标说明。
查看日志
您可以通过“日志”功能查看无状态工作负载的日志信息。
说明:
当前显示的日志内容为容器标准输出日志,不具备持久化和高阶运维能力,如需使用更完善的日志能力,可使用日志中心功能。
-
登录无状态负载管理页面。
a. 登录 容器引擎CCE控制台。
b. 在左侧导航栏,点击 "集群管理->集群列表",进入集群列表页,点击集群名称,进入集群管理页面。
c. 在集群管理页面的左侧导航栏中,单击 工作负载 > 无状态。 - 在目标无状态负载的列表,单击工作负载后的“更多 > 日志”。
- 在日志页面查看容器日志数据。
删除无状态负载
若工作负载无需再使用,您可以将工作负载删除。
说明:
删除无状态负载可能导致服务不可用,请谨慎操作。
-
登录无状态负载管理页面。
a. 登录 容器引擎CCE控制台。
b. 在左侧导航栏,点击 "集群管理->集群列表",进入集群列表页,点击集群名称,进入集群管理页面。
c. 在集群管理页面的左侧导航栏中,单击 工作负载 > 无状态。 - 在目标无状态负载的列表,单击工作负载后的“更多 > 删除”。
- 在系统弹出的二次确认对话框,确认信息后,点击确认。