创建应用
平台以应用的形式来管理Kubernetes资源,并提供界面化应用编排。在平台中部署新应用有以下三种途径,请根据需求合理选择。
界面化创建
使用镜像创建
使用应用模板创建
前提条件
以项目用户登录管理平台。
集群类型为Kubernetes集群。
已上传镜像或创建应用模板。
界面化部署应用
在左侧导航树中选择应用 applications。
单击创建新应用。
设置应用名称。
应用名称以字母开头,且只能包含字母,数字或-,并且必须唯一。
添加至少一个与工作负载关联的服务, 开启服务治理后会在每个Pod中以SideCar的方式注入Istio-proxy容器,只有集群开启服务治理才存在此开关。
设置工作负载参数。
工作负载参数如表 1所示。
表 1 工作负载参数
参数 设置说明 设置示例 名称 应用中包含的工作负载的名称。
应用名称设定后,管理平台会自动生成工作负载名称,可自定义工作负载名称。demo-web-v1 副本数 工作负载的副本数量。
默认值为1,可根据需要设置为其他数量。3 运行环境 支持Linux和Windows两种系统。
只有kubernete集群开启支持Windows开关后才能使用。- 升级策略 设置工作负载的升级策略,可设置为以下值: - 滚动升级:一次只更新一小部分副本,成功后,再更新更多的副本,最终完成所有副本的更新。滚动升级的最大的好处是零停机,整个更新过程始终有副本在运行,从而保证了业务的连续性。
升级策略设置为“滚动升级”后,可设置滚动升级参数“”最大不可用数,即副本为多个时,滚动升级过程中的最大不可用数,例如副本数为5,最大不可用数设置为3,则单次最多升级2个副本。 - 重建:升级时先删除原来的副本,再创建新的副本。
滚动升级 服务治理版本 为区别服务治理版本,此处需标明当前版本,应用开启服务治理时存在此设置。 v1 工作负载类型 界面化创建的应用包含的工作负载类型,可设置为“部署Deployment”或者“有状态副本集StatefuleSet”、“守护进程集DaemonSet”。
工作负载类型为“部署Deployment”请选择升级策略。部署Deployment - 滚动升级:一次只更新一小部分副本,成功后,再更新更多的副本,最终完成所有副本的更新。滚动升级的最大的好处是零停机,整个更新过程始终有副本在运行,从而保证了业务的连续性。
设置容器组,可设置主机亲和和容器组亲和两种调度规则,单击添加主机亲和规则或者添加容器组亲和规则添加需要的调度规则。
调度策略参数说明如表 2所示。
表 2 容器组设置
参数 配置说明 配置示例 时区同步 开启“时区同步后,通过挂载节点的/etc/location路径到容器中,使容器内时区与节点同步”。 - 退出等待时间 运行在容器里的进程在接受到结束信号后,截止被强制终止前的等待时间。
默认值是30秒,设置为0表示立即结束。30 Multus附加网络 集群网络类型为Multus网络时,有此选项。
单击“增加附加网络”后,选择网络名称、填写IP和默认网关。- 主机别名 为主机自定义对应的名称,用于标识主机。单击“增加主机别名”,配置IP地址和主机名。多个主机名请使用“,”分隔。 - 主机网络 默认使用集群网络,若启用主机网络,将使用主机网络作为pod网络。 - Pod安全策略设置 指定运行的用户ID。
定义Pod存储卷的组ID,控制应用于该Pod数据卷的用户组。根据所执行用户及用户组设置 主机亲和 亲和模式 亲和模式包括亲和、反亲和。
亲和:容器组倾向于调度到相同的主机上。
反亲和:容器组倾向于调度到不同的主机上。亲和策略 主机亲和策略包括强制、尝试两种。
强制亲和:保证满足亲和条件,在无法满足时调度失败并报错。
尝试亲和:优先满足亲和条件,在无法满足时采取默认调度策略。主机标签 主机标签包含当前项目可使用的Kubernetes集群节点的标签。 容器组亲和 亲和模式 亲和模式包括亲和、反亲和。 - 亲和:容器组倾向于调度到所选容器组所在主机上。
- 反亲和:容器组倾向于调度到所选容器组所在节点之外的其他主机上。
亲和策略 主机亲和策略包括强制和尝试两种。 - 强制亲和:保证满足亲和条件,在无法满足时调度失败并报错。
- 尝试亲和:优先满足亲和条件,在无法满足时采取默认调度策略。
应用 应用包含该项目中的所有应用。 工作负载 工作负载包含该项目中的所有工作负载。 容器组安全策略设置 - 指定运行的用户ID (RunASUser) RunASUser: 控制运行容器的用户ID。
- 定义Pod存储卷的组ID (fsGroup) fsGroup: 控制应用于该Pod数据卷的用户组。
- 服务账户(ServiceAccount)。
- 容器组容忍模式设置 可根据集群节点设置的Taints进行选择,可以选单个或者多个设置驱逐等待时间。 驱逐和容忍时间都可自定义,单位为秒。 启动依赖 当工作负载超过两个时,可以指定启动顺序,
可以打开此开关进行设置,当所依赖的工作负载未启动时,
此工作负载一直在等待中,超过等待时间时应用状态为错误。当指定工作负载启动后才会启动本部署,支持选择Deployment、StatefulSet、DaemonSet类型的工作负载,并且支持多依赖
超时时限默认为300秒,可自定义设置。不收集日志 当集群开启**日志中心**功能时,如该应用无需收集日志,可开启不收集日志。 - 设置创建的容器参数,包括镜像、容器规格等。
选择镜像后,可以单击拉取镜像配置,将镜像中设置的配置参数填充到对应设置项中,也可设定镜像拉取策略。
容器的参数如表 3所示。
表 3 容器参数
参数 配置说明 配置示例 镜像 创建应用使用的镜像。
输入镜像名称后,可自动匹配镜像的路径。也可以通过选择镜像在本地镜像仓库手动选择已有的镜像。- CPU限制 容器使用的CPU最大值。
如果不设置将使用该项目的默认值,也可自定义资源配额。- 内存限制 容器使用的内存最大值。
如果不设置将使用该项目的默认值,也可自定义资源配额。- CPU预留 容器使用的CPU最小值。
如果不设置将使用该项目的默认值,也可自定义资源配额。- 内存预留 容器使用的内存最小值。
如果不设置将使用该项目的默认值,也可自定义资源配额。- GPU设置 集群开启Pod GPU调度开关时,有此选项。 - 不使用GPU。
- GPU共享:设置GPU大小,单位为GiB。
- GPU独立:设置GPU个数。
- 启动命令 容器的启动入口和启动命令。启动命令用于指定容器主进程的启动命令。启动入口用于指定容器启动程序及参数,与启动命令搭配使用。
如果镜像中定义了启动入口和启动命令,单击“拉取镜像配置”可填充为镜像中的设置值。如果在此处设置了不同改的值,则会覆盖镜像中的设置值。- 启动参数 - 特权模式 开启特权模式后,容器可以以root用户权限访问宿主机。
默认为关闭状态。开启 虚拟终端 开启时,容器默认打开一个虚拟终端,如执行busybox类似镜像时,没有启动命令时,容器不会立即退出。 - 环境变量 设置容器的环境变量。
环境变量包括KEY变量名、VALUE变量值和选择变量值来源,单击+添加环境变量可添加多个环境变量。
支持将Pod中的字段当做环境变量引入到容器中,如spec.nodeName、metadata.namespace等。- 容器端口 设置容器的端口映射列表。通过将容器内的某一端口映射到节点的端口上,提供容器对外访问的方式。
添加自定义端口映射时,单击+添加容器端口,设置容器端口和协议(可选TCP或者UDP)。- 采集自定义监控指标 开启时,可设置自定义指标的收集地址和端口,创建好后,在监控指标中可以找到。 - 单击+添加存储挂载设置应用的存储配置。
应用的存储配置如表 4所示。
表 4 存储配置
参数 配置说明 配置示例 存储卷 应用的存储设置。 - 单击+添加日志文件,设置容器内文件路径。
收集指定容器内固定路径文件的日志,也可以指定多个路径,支持通配符匹配文件夹下的文件,如test/匹配test目录下所有的文件、test/.log匹配test目录下的以.log为后缀的文件。
设置生命周期回调。
创建后 (PostStart)
在容器被创建之后立即被执行。
停止前 (PreStop)
在容器退出前执行。
健康检查设置。
健康检查是指容器运行过程中,根据用户需要,定时检查容器健康状况。健康检查设置包括健康检查类型、健康检查方式和命令。
管理平台提供了两种健康检查的方式:
存活检查
该检查方式用于检测容器是否存活,类似于我们执行ps命令检查进程是否存在。如果容器的存活检查失败,集群会对该容器执行重启操作,若容器的存活检查成功则不执行任何操作。
就绪检查
检查方式用于检测容器是否准备好开始处理用户请求。一些程序的启动时间可能很长,比如要加载磁盘数据或者要依赖外部的某个模块启动完成才能提供服务。这时候程序进程在,但是并不能对外提供服务。这种场景下该检查方式就非常有用。如果容器的就绪检查失败,集群会屏蔽请求访问该容器,若检查成功,则会开放对该容器的访问。
管理平台提供的健康检查方式有如下三种:
Shell检查
命令检查是一种强大的检查方式,该方式要求用户指定一个容器内的可执行命令,集群会周期性地在容器内执行该命令,如果命令的返回结果是 0 则检查成功,否则检查失败。
使用Shell进行健康检查需要设定公共参数并指定Shell命令,公共参数的说明请参见表 5。
HTTP 请求检查
HTTP 请求方式针对的是提供 HTTP/HTTPS 服务的容器,集群周期性地对该容器发起HTTP/HTTPS GET 请求,如果 HTTP/HTTPS response 返回码属于 200~399范围,则证明探测成功,否则探测失败。
使用HTTP探测需设定公共参数并指定主机域名(主机名称或IP地址)、端口、路径、协议、HTTP头的名称和值,公共参数的说明请参见表 5。
TCP 端口检查
对于提供 TCP 通信服务的容器,集群周期性地对该容器建立 TCP 连接,如果连接成功,则证明探测成功,否则探测失败。
使用 TCP 端口探测方式需设置公共参数并指定主机域名(主机名称或IP地址)和端口,公共参数的说明请参见表 5。
表 5 健康检查参数
参数 配置说明 配置示例 初始化等待时间 健康检查初始化等待时间,单位为秒。 5 超时时间 超时时间,单位为秒。
例如,设置为10,表明执行健康检查的超时等待时间为10秒,如果超过这个时间,本次健康检查就被视为失败。若设置为0或不设置,默认超时等待时间为1秒。20 检测间隔时间 两次检查的间隔时间,单位为秒。
例如,设置为10,表明两次健康检查的时间间隔为10秒。10 最小探测失败次数 探测结果为失败的最小连续失败次数。 3 最小探测成功次数 探测结果为成功的最小连续失败次数。 3
设置容器安全策略。
特权模式 (Privileged)
提升特权 (Privilege Escalation)
只读根文件系统 (Read-Only Root Filesystem)
以非root用户身份运行 (Run as Non-Root)
运行容器进程入口点的GID (RunAsGroup)
指定运行的用户ID (RunASUser)
增加内核能力 (Add Capabilities)
移除内核能力 (Drop Capabilities)
配置文件设置,单击添加,可选配置集和保密字典。
配置文件的设置包括配置集和保密字典两种方式:
配置集
新建配置集:
配置集名称
配置集名称必须以小写字母或者数字开头和结尾,长度为2~64位,只能是小写字母、数字和特殊符号的集合。
配置方式
可通过导入文件和手动配置增加配置集。
通过上传文件
一个文件即为一个配置项,文件名称为配置集的key值,文件内容为value。
将文件拖拽至框中或者单击“从电脑选择”选择文件,可一次导入多个文件。
通过导入配置文件
一个文件包括多个配置项,一行为一个配置项,格式为key=value。
将文件拖拽至框中或者单击“从电脑选择”选择文件,一次只能导入一个文件。
手动配置
手动填写key和value值,单击加号可增加。
触发重启
当配置集的内容发生变更时,自动触发应用重启以加载最新的配置。
纳管已有配置集
可以选择已有配置集作为配置挂载入应用。
保密字典
创建新的保密字典
保密字典名称
保密字典名称必须以小写字母或者数字开头和结尾,长度为2~64位,只能是小写字母、数字和特殊符号的集合。
保密字典类型
保密字典类型分为以下几种:
通用
普通的保密字典。
Docker Registry
给Docker Registry使用过的保密字典,存放拉取私有仓库镜像所需的认证信息。
TLS
从给定的证书和私钥创建一个TLS的保密字典。
通用保密字典参数
可通过导入文件和手动配置增加配置集。
通过上传文件
一个文件即为一个配置项,文件名称为配置集的key值,文件内容为value值。
将文件拖拽至框中或者单击“从电脑选择”选择文件,可一次导入多个文件。
通过导入配置文件
一个文件包括多个配置项,一行为一个配置项,格式为key=value。
将文件拖拽至框中或者单击“从电脑选择”选择文件,一次只能导入一个文件。
手动配置
手动填写key和value值,单击加号可增加。
Docker Registry保密字典参数
Docker Registry服务地址
用户名称
用户密码
用户邮箱
TLS保密字典
证书文件
密钥文件
触发重启
当保密字典的内容发生变更时,自动触发应用重启以加载最新的配置。
纳管已有保密字典
选择已有的保密字典作为配置挂入应用使用。
设置服务和访问,单击添加。
设置服务和访问的参数说明如表 6所示。
表 6 负载均衡参数说明
参数 配置说明 配置示例 创建服务 Service是kubernetes最核心的概念,通过创建Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址,并且将请求进行负载分发到后端的各个容器应用上。设置创建服务的类型。 - 无服务:应用不提供集群外的访问服务。
- 主机端口:可以通过集群内任意主机的IP加服务端口号从外部访问应用。
- 集群IP:服务分配一个集群IP,可供集群内访问。
- Headless:不占用集群IP,但是必须通过Podname访问,只有当工作负载类型为“有状态副本集StatefuleSet”可创建该类型的服务。和普通Service相比,Headless Service没有ClusterIP(所以没有负载均衡),它会给一个集群内部的每个成员提供一个唯一的DNS域名来作为每个成员的网络标识,集群内部成员之间使用域名通信。
主机端口 会话保持 会话保持是指在负载均衡器上的一种机制,可以识别客户端与服务器之间交互过程的关连性。选中后在作负载均衡的同时可保证同一个客户端(根据客户端的IP地址决定)的访问请求会保持分配到同一个后端Pod上。 - 服务名称 服务的名称。
创建服务时选择“集群IP”、“主机端口”或者开启“无头服务Headless Service”时需要设置。- 服务端口 如果创建了服务,请设置服务端口映射。
如果服务类型为“集群IP”或者“Headless”,需要设置服务端口、容器端口和协议:- 服务端口:为组件的访问端口号配置一个映射端口号来指向容器,需用户确定。例如nginx程序实际监听端口为80。
- 容器端口:容器端口默认域服务端口一致。
- 协议:访问容器时的请求协议,可设置为TCP或者UDP。
如果服务类型为“主机端口”,需要设置服务端口、容器端口、主机端口和协议:- 服务端口:为组件的访问端口号配置一个映射端口号来指向容器,需用户确定。例如nginx程序实际监听端口为80。
- 容器端口:容器端口默认域服务端口一致。
- 主机端口:容器对外访问时映射到的主机端口,范围为创建集群时指定的集群对外暴露的端口范围,如果在创建集群时未指定对外暴露的端口范围,则端口范围为30000~32767,默认自动分配,也可手动指定,手动指定时,请避免端口冲突。
- 服务端口自动填充: 当在容器设置里面,填写镜像时,选择了拉取镜像配置以后,在创建服务时服务端口和容器端口可自动填充。
- web服务 当此开关打开时,此服务标记为web服务,在应用列表和服务列表显示对外访问链接。
创建服务时选择“主机端口”时需要设置。- 对外域名 设置从外部访问当前服务的域名, 请确保您设置的域名可以解析到当前集群管理节点的IP地址。
开启服务治理与web服务时,可进行此设置。
对应用进行流量治理时,需要配置此域名,通过此域名访问应用才可统计流量。
应用开启服务治理后,请打开本地终端路径“C:\Windows\System32\drivers\etc”下的hosts文件,在文件中增加“Kubernetes集群的VIP或集群管理节点ip地址 域名”。- 访问入口 开启了访问入口设置后,对设置的域名对应路径的访问都会按照设置的规则被映射到服务的对应端口,其中规则为一一对应的路径和端口。需要设置如下参数:
- 域名:访问域名,打开自动生成域名开关后,系统会自动根据nip.io格式生成一个域名,如需访问需要联网;手动填写的域名,访问不需要联网,但需要在访问的主机hosts文件中配置相应的内容后,才能访问。
- 路径:访问路径,以“/”开头。
- 端口:已设置的服务端口,通过下拉列表选择。
未选择自动生成域名,手动填写域名后进行配置:请打开本地终端路径“C:\Windows\System32\drivers\etc”下的hosts文件,在文件中增加“Kubernetes集群的VIP或集群管理节点ip地址 域名”。
设置完成后可通过“http:// _域名_:_自定义端口/路径_ ”访问服务的相关端口。- 设置版本管理。
可以设置应用版本的描述信息,用以区分应用各版本。
一个模块由一个工作负载和一个服务构成,一个应用可包含多个模块。如果应用包含多个模块,请单击再设置一个模块添加多个模块并设置部署参数。
单击立即创建。
使用应用模板创建
在左侧导航树中选择应用模板。
单击模板名称,进入模板详细信息页面。
在版本列表页签,单击创建应用所使用版本后的创建新应用。
模板名称和模板版本自动填充,也可重新选择所使用的模板和版本。
设置应用名称,单击下一项。
开启服务治理。
开启服务治理时,请确保你的YAML内容满足以下要求:
至少有一个与工作负载关联的服务(Service),并且服务中端口必须有name和port,name规则是:协议类型或协议类型-suffix,例:http或http-web;
工作负载中必须指定容器端口(containerPort);
工作负载的metadata.labels, spec.template.metadata.labels, spec.selector.matchLabels对象中必须存在以下2个键值对:app, version, 其中app的值对应的是工作负载名称, version的值对应的是版本号;
服务(Service)中的metadata.labels, spec.selector对象中必须存在键值名称为app的label, 值对应的是工作负载名称。
设置应用模板中定义的参数及参数值,并单击生成应用YAML。
在应用区域检查最终创建应用使用的YAML文件。如果需要更新,单击更改进入编辑模式,修改完成后单击确认。
对YAML文件修改后,建议把文件内容粘贴到任意的YAML编辑器中进行语法检查,以保证应用可以创建成功。
单击立即创建。
使用镜像创建
在左侧导航树中选择镜像管理。
将鼠标放在有无VM标识的镜像上,单击部署新应用。
或单击镜像名称,进入镜像详细信息页面,单击选择部署新应用。
应用名称、部署名称、容器名称和镜像信息自动填充,也可重新选择所使用的镜像和版本。
设置应用的其他参数。
应用参数与在界面创建应用时一致,请参见本节描述。
单击立即创建。