1.登录边缘容器集群控制台。
2.在控制台左侧导航栏中,单击集群管理。
3.在集群列表页面中,单击目标集群右侧操作列下的详情。
4.在控制台左侧导航栏中,单击工作负载>有状态。
5.在有状态负载列表,单击左上角的创建有状态负载。
6.在应用配置页面,设置应用的配置信息。
配置项 | 描述 |
应用名称 | 设置应用的名称,名称为1~60个字符,支持小写字母、数字、"-"以及"."等字符。 |
命名空间 | 设置应用所在的命名空间。默认命名空间为default。 |
副本数量 | 应用包含的Pod数量,默认数量为2。 |
类型 | 定义资源对象的类型,选择有状态(StatefulSet)。 |
标签 | 为应用添加标签,标识该应用。 |
注解 | 为应用添加标签。 |
容器配置
配置项 | 描述 |
容器镜像 | 镜像类型:可以选择公有镜像或私有镜像。 公有镜像:填入需要使用的公有镜像地址。 私有镜像:选择上传到镜像仓库的私有镜像。 支持以下三种镜像拉取策略(imagePullPolicy): 优先使用本地镜像(IfNotPresent):如果本地有该镜像(之前拉取过该镜像至宿主机中),则使用本地镜像,本地不存在时拉取镜像。 总是拉取镜像(Always):表示每次部署或扩容都会从容器镜像服务重新拉取镜像,而不会从本地拉取镜像。 仅使用本地镜像(Never):仅使用本地镜像。 单击设置镜像密钥,您可以实现免密拉取镜像。 |
资源限制 | 可指定该应用所能使用的资源上限,包括CPU、内存和GPU三种资源,防止占用过多资源。 |
所需资源 | 即为该应用预留资源额度,包括CPU和内存两种资源,即容器独占该资源,防止因资源不足而被其他服务或进程争夺资源,导致应用不可用。 |
容器启动项 | stdin:表示为该容器开启标准输入。 tty:表示为该容器分配一个虚拟终端,以便于向容器发送信号。 通常这两个选项是一起使用的,表示将终端(tty)绑定到容器的标准输入(stdin)上。例如,一个交互式的程序从用户获取标准输入,并显示到终端中。 |
特权容器 | 选择特权容器,则privileged=true,开启特权模式。 不选择特权容器,则privileged=false,关闭特权模式。 |
Init Container | 勾选该项,表示创建一个Init Container。 |
可选:在端口设置区域,单击添加设置容器的端口。
配置项 | 描述 |
名称 | 设置容器端口名称。 |
容器端口 | 设置暴露的容器访问端口或端口名,端口号必须介于1~65535。 |
协议 | 支持TCP和UDP。 |
可选:在环境变量区域,单击添加设置环境变量。支持通过键值对的形式为Pod配置环境变量。用于给Pod添加环境标志或传递配置等。
配置项 | 描述 |
类型 | 设置环境变量的类型,支持: 自定义 配置项 保密字典 变量/变量引用 资源引用 配置项、保密字典支持全部文件的引用,以保密字典为例。选择保密字典类型,只选择目标保密字典,则默认引用全部文件。 |
变量名称 | 设置环境变量名称。 |
变量/变量引用 | 设置变量引用的值。 |
可选:在健康检查区域,根据需要开启存活检查、就绪检查及启动探测。
存活检查(Liveness):用于检测何时重启容器。
就绪检查(Readiness):确定容器是否已经就绪,且可以接受流量。
启动探测(Startup Probes):用于检测何时启动容器。
请求类型 | 描述 |
HTTP请求 | 即向容器发送一个HTTP Get请求,支持的参数包括: 协议:HTTP/HTTPS。 路径:访问HTTP Server的路径。 端口:容器暴露的访问端口或端口名,端口号必须介于1~65535。 HTTP头:即HTTP Headers,HTTP请求中自定义的请求头,HTTP允许重复的Header。支持键值对的配置方式。 延迟探测时间(秒):即initialDelaySeconds,容器启动后第一次执行探测时需要等待多少秒,默认为3秒。 执行探测频率(秒):即periodSeconds,指执行探测的时间间隔,默认为10秒,最小为1秒。 超时时间(秒):即timeoutSeconds,探测超时时间。默认1秒,最小1秒。 健康阈值:探测失败后,最少连续探测成功多少次才被认定为成功。默认是1,最小值是1。对于存活检查(liveness)必须是1。 不健康阈值:探测成功后,最少连续探测失败多少次才被认定为失败。默认是3,最小值是1。 |
TCP连接 | 即向容器发送一个TCP Socket,Kubelet将尝试在指定端口上打开容器的套接字。 如果可以建立连接,容器被认为是健康的,如果不能就认为是失败的。支持的参数包括: 容器端口:容器暴露的访问端口或端口名,端口号必须介于1~65535。 延迟探测时间(秒):即initialDelaySeconds,容器启动后第一次执行探测时需要等待多少秒,默认为15秒。 执行探测频率(秒):即periodSeconds,指执行探测的时间间隔,默认为10秒,最小为1秒。 超时时间(秒):即timeoutSeconds,探测超时时间。默认1秒,最小1秒。 健康阈值:探测失败后,最少连续探测成功多少次才被认定为成功。默认是1,最小值是1。对于存活检查(liveness)必须是1。 不健康阈值:探测成功后,最少连续探测失败多少次才被认定为失败。默认是3,最小值是1。 |
命令行 | 通过在容器中执行探针检测命令,来检测容器的健康情况。支持的参数包括: 命令行:用于检测容器健康情况的探测命令。 延迟探测时间(秒):即initialDelaySeconds,容器启动后第一次执行探测时需要等待多少秒,默认为5秒。 执行探测频率(秒):即periodSeconds,指执行探测的时间间隔,默认为10秒,最小为1秒。 超时时间(秒):即timeoutSeconds,探测超时时间。默认1秒,最小1秒。 健康阈值(次):探测失败后,最少连续探测成功多少次才被认定为成功。默认是1,最小值是1。对于存活检查(Liveness)必须是1。 不健康阈值(次):探测成功后,最少连续探测失败多少次才被认定为失败。默认是3,最小值是1。 |
可选:在生命周期区域,设置容器的生命周期。
您可以为容器的生命周期配置启动后处理和停止前处理。
配置项 | 描述 |
启动后处理 | 为容器设置启动后的命令。 |
停止前处理 | 为容器设置预结束命令。 |
可选:在数据卷区域,增加本地存储或云存储。
配置项 | 描述 |
本地存储 | 本地存储:支持主机目录(HostPath)、配置项(ConfigMap)、保密字典(Secret)和临时目录,将对应的挂载源挂载到容器路径中。 |
云存储 | 支持通过PVC挂载云存储卷。在选择目标挂载源前,您需要创建云存储声明。 |
高级配置
在高级配置配置向导页面中设置访问、伸缩、调度和标签注解。
在访问配置区域,通过设置服务暴露后端Pod。
配置服务(Service):
配置项 | 描述 |
名称 | 输入服务的名称。 |
类型 | 选择服务访问的方式 虚拟集群IP:即ClusterIP,指通过集群的内部IP暴露服务,选择该值,服务只能够在集群内部可以访问,这也是默认的ServiceType。 节点端口:即NodePort,通过每个Node上的IP和静态端口(NodePort)暴露服务。NodePort服务会路由到ClusterIP服务,该ClusterIP服务会自动创建。通过请求<NodeIP>:<NodePort>,可以从集群的外部访问一个NodePort服务。 负载均衡器:即LoadBalancer,负载均衡类型的服务可以通过弹性负载均衡从公网访问到工作负载。 |
实例间发现服务 | 服务类型为虚拟集群IP时,才能设置实例间发现服务(Headless Service)。 |
外部流量策略 | Local:流量只发给本机的Pod。 Cluster:流量可以转发到其他节点上的Pod。 服务类型为节点端口或负载均衡器时,才能设置外部流量策略。 |
端口映射 | 添加服务端口和容器端口。容器端口需要与后端的Pod中暴露的容器端口一致。 |
标签 | 为该服务添加一个标签,标识该服务。 |
注解 | 为该服务添加一个注解(Annotation),配置负载均衡的参数。 |
可选:在伸缩配置区域,配置是否开启指标伸缩。
指标伸缩:根据容器CPU和内存占用情况自动调整容器组数量。
配置项 | 描述 |
指标 | 支持CPU和内存,需要和设置的所需资源类型相同。 |
触发条件 | 资源使用量的百分比,超过该使用量,容器开始扩容。 |
最大副本数 | 该负载类型可扩容的容器数量上限。 |
最小副本数 | 该负载类型可缩容的容器数量下限。 |
可选:在调度设置区域,设置升级方式、节点亲和性、应用亲和性、应用反亲和性和调度容忍。
配置项 | 描述 |
升级方式 | 升级方式包括滚动升级(rollingupdate)和替换升级(recreate)。 |
节点亲和性 | 设置节点亲和性,通过Worker节点的Label标签进行设置。节点调度支持硬约束和软约束(Required/Preferred),以及丰富的匹配表达式(In, NotIn, Exists, DoesNotExist. Gt, and Lt): 必须满足,即硬约束,一定要满足,对应requiredDuringSchedulingIgnoredDuringExecution,效果与NodeSelector相同。本例中Pod只能调度到具有对应标签的Worker节点。您可以定义多条硬约束规则,但只需满足其中一条。 尽量满足,即软约束,不一定满足,对应preferredDuringSchedulingIgnoredDuringExecution。调度会尽量调度Pod到具有对应标签的Node节点。您还可为软约束规则设定权重,具体调度时,若存在多个符合条件的节点,权重最大的节点会被优先调度。您可定义多条软约束规则,但必须满足全部约束,才会进行调度。 |
应用亲和性 | 决定应用的Pod可以和哪些Pod部署在同一拓扑域。例如,对于相互通信的服务,可通过应用亲和性调度,将其部署到同一拓扑域(如同一个主机)中,减少它们之间的网络延迟。 根据节点上运行的Pod的标签(Label)来进行调度,支持硬约束和软约束,匹配的表达式有:In, NotIn, Exists, DoesNotExist,Gt,Lt。 必须满足,即硬约束,一定要满足,对应requiredDuringSchedulingIgnoredDuringExecution,Pod的亲和性调度必须要满足后续定义的约束条件。 命名空间:该策略是依据Pod的Label进行调度,所以会受到命名空间的约束。 拓扑域:即topologyKey,指定调度时作用域,这是通过Node节点的标签来实现的,例如指定为kubernetes.io/hostname,那就是以Node节点为区分范围;如果指定为beta.kubernetes.io/os,则以Node节点的操作系统类型来区分。 选择器:单击选择器右侧的加号按钮,您可添加多条硬约束规则。 尽量满足,即软约束,不一定满足,对应preferredDuringSchedulingIgnoredDuringExecution。Pod的亲和性调度会尽量满足后续定义的约束条件。对于软约束规则,您可配置每条规则的权重,其他配置规则与硬约束规则相同。 权重:设置一条软约束规则的权重,介于1~100,通过算法计算满足软约束规则的节点的权重,将Pod调度到权重最大的节点上。 |
应用反亲和性 | 决定应用的Pod不与哪些Pod部署在同一拓扑域。应用非亲和性调度的场景包括: 将一个服务的Pod分散部署到不同的拓扑域(如不同主机)中,提高服务本身的稳定性。 给予Pod一个节点的独占访问权限来保证资源隔离,保证不会有其它Pod来分享节点资源。 把可能会相互影响的服务的Pod分散在不同的主机上。 |
调度容忍 | 容忍被应用于Pod,允许这个Pod被调度到相对应的污点上。 |
可选:在标签和注释区域,单击添加设置容器组的标签和注释。
配置项 | 描述 |
Pod标签 | 为该Pod添加一个标签,标识该应用。 |
Pod注解 | 为该Pod添加一个注解(Annotation)。 |
单击创建。