应用魔方 AppCube应用魔方 AppCube

计算
弹性云服务器 ECS
裸金属服务器 BMS
云手机 CPH
专属主机 DeH
弹性伸缩 AS
镜像服务 IMS
函数工作流 FunctionGraph
云耀云服务器 HECS
VR云渲游平台 CVR
特惠算力专区
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
弹性文件服务 SFS
存储容灾服务 SDRS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
专属企业存储服务
云存储网关 CSG
专属分布式存储服务 DSS
CDN与智能边缘
内容分发网络 CDN
智能边缘云 IEC
智能边缘小站 IES
智能边缘平台 IEF
人工智能
AI开发平台ModelArts
华为HiLens
图引擎服务 GES
图像识别 Image
文字识别 OCR
自然语言处理 NLP
内容审核 Moderation
图像搜索 ImageSearch
医疗智能体 EIHealth
园区智能体 CampusGo
企业级AI应用开发专业套件 ModelArts Pro
人脸识别服务 FRS
对话机器人服务 CBS
视频分析服务 VAS
语音交互服务 SIS
知识图谱 KG
人证核身服务 IVS
IoT物联网
设备接入 IoTDA
设备管理 IoTDM(联通用户专用)
全球SIM联接 GSL
IoT数据分析
路网数字化服务 DRIS
IoT边缘 IoTEdge
设备发放 IoTDP
开发与运维
软件开发平台 DevCloud
项目管理 ProjectMan
代码托管 CodeHub
流水线 CloudPipeline
代码检查 CodeCheck
编译构建 CloudBuild
部署 CloudDeploy
云测 CloudTest
发布 CloudRelease
移动应用测试 MobileAPPTest
CloudIDE
Classroom
开源镜像站 Mirrors
应用魔方 AppCube
云性能测试服务 CPTS
应用管理与运维平台 ServiceStage
云应用引擎 CAE
视频
实时音视频 SparkRTC
视频直播 Live
视频点播 VOD
媒体处理 MPC
视频接入服务 VIS
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
资源管理服务 RMS
应用身份管理服务 OneAccess
区块链
区块链服务 BCS
可信跨链服务 TCS
可信分布式身份服务
智能协作
IdeaHub
开发者工具
SDK开发指南
API签名指南
DevStar
HCloud CLI
Terraform
Ansible
云生态
云市场
合作伙伴中心
华为云培训中心
其他
管理控制台
消息中心
产品价格详情
系统权限
我的凭证
客户关联华为云合作伙伴须知
公共问题
宽限期保留期
奖励推广计划
活动
容器
云容器引擎 CCE
云容器实例 CCI
容器镜像服务 SWR
应用编排服务 AOS
多云容器平台 MCP
基因容器 GCS
容器洞察引擎 CIE
云原生服务中心 OSC
容器批量计算 BCE
容器交付流水线 ContainerOps
应用服务网格 ASM
网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
数据库
云数据库 RDS
数据复制服务 DRS
文档数据库服务 DDS
分布式数据库中间件 DDM
云数据库 GaussDB (for openGauss)
云数据库 GaussDB(for MySQL)
云数据库 GaussDB NoSQL
数据管理服务 DAS
数据库和应用迁移 UGO
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
可信智能计算服务 TICS
推荐系统 RES
云搜索服务 CSS
数据可视化 DLV
数据湖治理中心 DGC
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
API网关 APIG
分布式缓存服务 DCS
分布式消息服务RocketMQ版
企业应用
域名注册服务 Domains
云解析服务 DNS
云速建站 CloudSite
网站备案
商标注册
华为云WeLink
会议
隐私保护通话 PrivateNumber
语音通话 VoiceCall
消息&短信 MSGSMS
云管理网络
SD-WAN 云服务
边缘数据中心管理 EDCM
云桌面 Workspace
应用与数据集成平台 ROMA Connect
ROMA资产中心 ROMAExchange
API全生命周期管理 ROMA API
安全与合规
安全技术与应用
DDoS防护 ADS
Web应用防火墙 WAF
云防火墙 CFW
应用信任中心 ATC
企业主机安全 HSS
容器安全服务 CGS
云堡垒机 CBH
数据库安全服务 DBSS
数据加密服务 DEW
数据安全中心 DSC
云证书管理服务 CCM
SSL证书管理 SCM
漏洞扫描服务 VSS
态势感知 SA
威胁检测服务 MTD
管理检测与响应 MDR
安全治理云图 Compass
认证测试中心 CTC
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
专属云
专属计算集群 DCC
解决方案
高性能计算 HPC
SAP
混合云灾备
华为工业云平台 IMC
价格
成本优化最佳实践
专属云商业逻辑
用户服务
帐号中心
费用中心
成本中心
资源中心
企业管理
工单管理
客户运营能力
国际站常见问题
支持计划
专业服务
合作伙伴支持计划
更新时间:2022-01-05 GMT+08:00
分享

配置Chart

您可以通过AppCube提供的图形化界面,配置部署Docker容器时需要的资源、存储、网络等一系列参数,配置后生成Chart包并进行导出。导出后可通过云容器引擎(Cloud Container Engine)在其他平台上部署安装Docker容器。

前提条件

  1. 用户要使用NativeService这个业务时,需要具有查看NativeService和管理NativeService权限。添加权限方法:在“管理 > 用户管理 > 权限配置”中设置,勾选用户对应的权限配置文件中系统权限“查看原生服务”和“管理原生服务”。
  2. 您已开通云容器引擎(Cloud Container Engine,简称“CCE”)服务,相关资料请参考CCE资料中“入门指引”章节。
  3. 已创建虚拟私有云。

    虚拟私有云为CCE集群提供一个隔离的、用户自主配置和管理的虚拟网络环境。

    创建首个集群前,您必须先确保已存在虚拟私有云,否则无法创建集群。创建方法请参见创建虚拟私有云和子网

  4. 已创建Kubernetes集群,您的服务将部署在这个集群内。创建方法请参见创建Kubernetes混合集群
  5. 在配置Chart前,您已准备好Docker镜像,Docker镜像可自行开发并上传到CCE华为云容器中,您也可使用第三方镜像仓库的镜像。

    在进行镜像开发时,如何制作Docker镜像可参考如何编写高效的Dockerfile,如何上传镜像到CCE中可参考在CCE中上传镜像

  6. 您需要熟悉CCE云容器引擎相关产品,熟悉CCE控制台配置,包括工作负载、模板市场、配置中心和镜像仓库,相关资料请参考CCE资料
  7. 已登录CCE控制台。
    1. 单击此处,根据页面提示,登录华为云,单击左上角的“控制台”,进入“管理控制台”界面。
    2. 单击管理控制台左上角的,选择区域和项目。
    3. 单击管理控制台左上角的选择“容器服务 > 云容器引擎CCE”,进入云容器引擎控制台界面。

操作步骤

  1. 登录AppCube开发环境,在首页“我的应用”下单击上一节创建的Native Service,进入NativeService配置页面。如果您还没有创建NativeService,请参照创建Native Service进行创建。

  2. 在NativeService配置页面选择“导航”。

  3. 在右侧“Chart设计”页签单击“新建”。

    有两种方式创建Chart,一种是在界面单击“新建”手动创建;另一种是单击“导入”,选择已配置好的Chart包直接导入。这里以手动创建方式为例进行举例说明。

  1. 配置Chart名称和版本号,单击“确定”。

    图1 创建Chart

    配置后界面显示该Chart的图形化设计界面。

  2. 在Chart的图形化设计界面中单击“+”,创建一组资源,该资源包括负载、配置、服务和Ingress。

    创建后界面显示如图2所示。

    图2 Chart设计界面

    选中该组资源,单击鼠标右键选择“删除”,可删除资源。

  3. 在Chart的图形化设计界面中单击页面上方,在弹出的“全局配置”页签单击“新增行”,将业务的配置项文件内容设置为全局变量。单击“确认”。可避免因为参数变更时修改并重新生成Chart包。

    图3 全局配置

  4. 从页面左侧“配置”中拖拽“ConfigMap”元素至页面右侧的配置区域中,界面中会显示,将元素拖入中。

    图4 拖拽“ConfigMap”元素

  5. 选中拖入的“ConfigMap”元素,单击鼠标右键选择“配置”,参考表1在页面右侧区域进行配置。

    “配置”中有如下两个元素:
    • ConfigMap:ConfigMap是一种用于存储工作负载所需配置信息的资源类型,内容由用户决定。配置项创建完成后,可在工作负载中作为文件或者环境变量使用。允许您将配置文件从容器镜像中解耦,从而增强容器工作负载的可移植性。
    • Secret:密钥Secret)是一种用于存储工作负载所需要认证信息、密钥的敏感信息等的资源类型,内容由用户决定。资源创建完成后,可在容器工作负载中作为文件或者环境变量使用。其配置页面上参数含义与ConfigMap大体相同,差异的参数说明如下:
      • “密钥类型”取值为“Opaque”,表示一般密钥类型。
      • “密钥数据”“值”必须使用Base64编码对字符串进行Base64加密,可以直接使用“echo -n 要编码的内容 | base64”命令即可,示例如下:
        root@ubuntu:~# echo -n "待编码内容" | base64
    图5 “ConfigMap”配置页面
    表1 “ConfigMap”参数说明

    区域

    参数

    说明

    基本信息

    名称

    新建的配置名称,同一个命名空间里命名必须唯一。

    描述

    配置项的描述信息。

    配置数据

    -

    工作负载配置的数据可以在容器中使用,或被用来存储配置数据。

    单击“新增行”可添加配置数据。

    表示配置项文件名。

    表示文件中的内容。单击值中的下拉按钮,选择6中创建的全局变量。

    建议将配置文件内容定义为全局变量。可避免因为文件内容变更时修改并重新生成Chart包。

    注解

    -

    单击“新增行”,您可以使用Kubernetes注解为对象附加任意的非标识的元数据。注解中的元数据,可以很小,也可以很大,可以是结构化的,也可以是非结构化的,能够包含标签不允许的字符。注解存储的形式是键/值对。

  6. (以拖入无状态负载为例介绍)从页面左侧“计算”中拖拽“无状态负载”元素至页面右侧的计算区域中,界面中会显示,将元素拖入中。

    “计算”中有如下两个元素:

    • “无状态负载”等同于Kubernetes中的“Deployment”概念,所有Pod实例之间是对等的,互不依赖,少了任意一个Pod实例,并不影响整个工作负载的功能。
    • “有状态负载”等同于Kubernetes中的“StatefulSet”概念,是用来管理有状态应用的工作负载API对象。和“无状态负载”相同的是,“有状态负载”管理了基于相同容器定义的一组Pod,和“无状态负载”不同的是,“有状态负载”为每个Pod维护了一个固定的ID。这些Pod是基于相同的声明来创建的,但是不能相互替换。无论怎么调度,每个Pod都有一个永久不变的ID。选择“有状态负载”,您必须要配置“实例间发现服务”。
      实例间发现服务:该服务指的是Kubernetes的Headless Service,Headless Service用于控制Pod的网络域名,通过Pod的网络域名可以访问特定的Pod实例。例如:集群域名为cluster.local,有状态负载的名称为web,有3个Pod实例,则3个Pod的名称分别为web-0、web-1、web-2,Headless Service的名称为nginx,则3个Pod的域名分别是web-0.nginx.$(命名空间).svc.cluster.local、web-1.nginx.$(命名空间).svc.cluster.local、web-2.nginx.$(命名空间).svc.cluster.local,可以通过Pod域名访问到具体的Pod实例。
      图6 拖入计算元素

  7. 选中拖入的“无状态负载”元素,单击鼠标右键选择“配置”,在页面右侧区域进行配置。

    图7 “无状态负载”配置页面
    表2 无状态负载参数说明

    区域

    参数

    说明

    基础信息

    名称

    新建工作负载的名称,命名必须唯一。请直接填写。

    实例数量

    工作负载的实例数量。工作负载可以有一个或多个实例,用户可以设置具体实例个数,例如可自定义设置为1。

    每个“无状态负载”实例都由相同的容器部署而成。设置多个实例主要用于实现高可靠性,当某个实例故障时,工作负载还能正常运行。若使用单实例,节点异常或实例异常会导致服务异常。

    升级策略

    “无状态负载”或者“有状态负载”的升级策略。选填项。

    您可从下拉列表中选择“RollingUpdate”,表示执行滚动更新策略。用户希望应用程序始终可用,当开发人员线下开发新版本的应用程序时,在Kubernetes中,可以通过滚动更新(RollingUpdate)来完成更新升级。 “RollingUpdate”允许通过使用新的实例逐步更新旧的Pod实例,零停机进行整个“无状态负载”或者“有状态负载”更新。新的Pod将在具有可用资源的节点上进行调度。

    最大增量

    当“升级策略”配置为“RollingUpdate”,该参数才会显示。表示进行滚动更新(RollingUpdate)时,新实例每次替换旧的Pod实例的最大数量。

    最大不可用

    当“升级策略”配置为“RollingUpdate”,该参数才会显示。表示进行滚动更新(RollingUpdate)时,最大不可用的Pod实例数量。

    拉取镜像的密钥

    用于拉取镜像的镜像仓库的密钥。

    取值说明如下:

    • 若需要拉取CCE华为云容器的镜像仓库的镜像时,参数值固定为“default-secret”。CCE中容器拉取镜像是使用密钥认证方式。
    • 若需要拉取第三方镜像仓库的镜像时,需设置为创建的密钥,创建方法请参考创建第三方镜像仓库的密钥

    您可以单击参数后的下拉按钮,单击“增加全局配置”,将拉取镜像的密钥配置为全局变量,以参数名和值的方式定义变量,后续在修改该密钥时,只需要修改全局变量即可。

    描述

    工作负载描述信息

    容器配置

    -

    容器与VM类似,具有自己的文件系统、CPU、内存、进程空间等,单击“配置”,参考表3配置容器的属性。

    注解

    -

    单击“新增行”,您可以使用Kubernetes注解为对象附加任意的非标识的元数据。注解中的元数据,可以很小,也可以很大,可以是结构化的,也可以是非结构化的,能够包含标签不允许的字符。注解存储的形式是键/值对。

    图8 容器配置
    图9 复制CCE中镜像地址
    图10 镜像地址全局变量配置
    表3 容器配置参数说明

    页签

    参数名

    说明

    基本信息

    容器名称

    容器的名称。

    直接填写。

    镜像地址

    镜像的地址,取值说明如下:

    • 若需要拉取CCE华为云容器的镜像仓库的镜像时,登录CCE控制台,在左侧导航栏中选择“镜像仓库 > 镜像管理”,根据需要选择“自有镜像”或者“公开镜像”页签(“自有镜像”为该租户自有的镜像,“公开镜像”页签的镜像所有用户都可以下载使用),单击需要用到的具体镜像名,进入“镜像详情”,如图9所示,单击“下载指令”列后的复制按钮,在AppCube上“镜像地址”值处进行粘贴,去掉粘贴内容中的“docker pull”,只保留后面部分 。例如镜像地址配置为“10.10.10.1/bingodev/testoauth:fifth”。

      若想使用自己上传到CCE中的镜像,需要在CCE中提前上传镜像,上传方法请参考在CCE中上传镜像

    • 若需要拉取第三方镜像仓库的镜像时,请直接输入第三方镜像仓库的镜像地址,例如“www.3rdregistry.com”“10.10.10.10:443”

    您可以单击参数后的下拉按钮,单击“增加全局配置”,如图10所示,将镜像地址配置为全局变量,后续在修改镜像地址时,只需要修改全局变量即可。建议您使用全局变量方式设置镜像地址。

    镜像拉取策略

    从镜像仓库中下载镜像的策略,选项说明如下。

    • Always:总是从仓库下载镜像。
    • IfNotPresent :如果本地没有则从仓库下载镜像。
    • Never:总是使用本地的镜像。

    申请/Cores

    容器需要使用的最小CPU值,作为容器调度时资源分配的判断依赖。只有当节点上可分配CPU总量 ≥ 容器CPU申请数时,才允许将容器调度到该节点。

    默认0.25Core。

    限制/Cores

    允许容器使用的CPU最大值。建议设容器配额的最高限额,避免容器资源超额导致系统故障。

    申请/Mi

    容器需要使用的内存最小值,作为容器调度时资源分配的判断依赖。只有当节点上可分配内存总量 ≥ 容器内存申请数时,才允许将容器调度到该节点。

    默认512MiB。

    限制/Mi

    允许容器使用的内存最大值。如果超过,容器会被终止。

    环境变量

    变量名称

    在容器中添加环境变量,一般用于通过环境变量设置参数。

    在 “环境变量”页签,单击 “新增行”可进行配置。

    变量/变量引用

    变量或者变量引用。

    数据存储

    -

    给容器挂载数据存储,支持本地磁盘和云存储,适用于需持久化存储、高磁盘IO等场景。

    单击“新增行”进行添加,可选项。

    本地存储

    通过本地磁盘存储将容器所在宿主机的文件目录挂载到容器的指定路径中,也可以不填写源路径。参数如下:

    • 名称:容器所在宿主机的文件目录名。
    • 本地路径:请输入本地路径。
    • 子路径:请输入子路径
    • 挂载路径:请输入挂载路径

    云存储

    为满足数据的持久化需求,CCE支持云硬盘(EVS)挂载到容器中。通过云硬盘,可以将存储系统的远端文件目录挂载到容器中,数据库逻辑卷中的数据将被永久保存,即使删除了容器,数据库逻辑卷中的数据依然保存在存储系统中。参数如下:

    • 名称:云硬盘名。
    • PVC:新建PVC的名称,PVC创建时将自动创建存储卷,一个PVC对应一个存储卷。存储卷名称在PVC创建时自动生成。
    • 子路径:请输入子路径
    • 挂载路径:请输入挂载路径

    ConfigMap

    用于把7~8配置的ConfigMap挂载到容器内。参数说明如下:

    • 名称:ConfigMap的名称。
    • 子路径:系统支持挂载ConfigMap中部分配置项文件。若只需要挂载部分配置项文件,这里“子路径”配置为要挂载的具体配置项文件名。即8配置ConfigMap时,配置数据中的“键”。若需要挂载ConfigMap的所有配置项文件,则不需要配置“子路径”。
    • 挂载路径:请输入挂载路径。当子路径不配置时,请确保挂载路径为空文件夹。
    • 权限:设置ConfigMap挂载文件的权限,例如设置为777,表示所有人具有可读可写可执行权限(即rwxrwxrwx)。

    将ConfigMap中部分配置项文件挂载到容器中,即配置了子路径时,部署Chart的容器将不会收到ConfigMap的更新。如果将ConfigMap中全部配置项文件挂载到容器中,即不配置子路径时, 部署Chart的容器将会收到ConfigMap的更新,此时挂载路径应该是一个空的文件夹,否则ConfigMap更新时,挂载路径里面的文件会被删除。

    Secret

    如果之前配置了Secret,则需要把配置的Secret挂载到容器内。非必填。参数说明如下:

    • 名称:Secret的名称。
    • 子路径:系统支持挂载Secret中部分配置项文件。若只需要挂载部分配置项文件,这里“子路径”配置为要挂载的具体配置项文件名。即Secret中配置数据中的“键”。若需要挂载Secret的所有配置项文件,则不需要配置“子路径”。
    • 挂载路径:请输入挂载路径
    • 权限:设置Secret挂载文件的权限,例如设置为777,表示所有人具有可读可写可执行权限(即rwxrwxrwx)。

    将Secret中部分配置项文件挂载到容器中,即配置了子路径时,部署Chart的容器将不会收到Secret的更新。如果将Secret中全部配置项文件挂载到容器中,即不配置子路径时, 部署Chart的容器将会收到Secret的更新,此时挂载路径应该是一个空的文件夹,否则Secret更新时,挂载路径里面的文件会被删除。

    健康检查

    -

    健康检查是指容器运行过程中,根据用户需要,定时检查容器健康状况。若不配置健康检查,如果服务出现业务异常,pod将无法感知,也不会自动重启去恢复业务。最终导致pod状态正常,但pod中的业务异常的情况。

    CCE提供了两种健康检查的探针:工作负载存活探针工作负载业务探针

    工作负载存活探针

    用于检测容器是否正常,类似于执行ps命令检查进程是否存在。如果容器的存活检查失败,集群会对该容器执行重启操作;若容器的存活检查成功则不执行任何操作。检查方式如下:

    • HTTP请求检查

      HTTP请求方式针对的是提供HTTP/HTTPS服务的容器,集群周期性地对该容器发起HTTP/HTTPS GET请求,如果HTTP/HTTPS response返回码属于200~399范围,则证明探测成功,否则探测失败。使用HTTP请求探测必须指定容器监听的端口和HTTP/HTTPS的请求路径。

      例如:提供HTTP服务的容器,端口为80,HTTP检查路径为 /health-check,主机地址为containerIP,那么集群会周期性地对容器发起如下请求:GET http://containerIP:80/health-check。

    • TCP端口检查

      对于提供TCP通信服务的容器,集群周期性地对该容器建立TCP连接,如果连接成功,则证明探测成功,否则探测失败。选择TCP端口探测方式,必须指定容器监听的端口。比如有一个nginx容器,它的服务端口是80,对该容器配置了TCP端口探测,指定探测端口为80,那么集群会周期性地对该容器的80端口发起TCP连接,如果连接成功则证明检查成功,否则检查失败。

    • 执行命令检查

      命令检查是一种强大的检查方式,该方式要求用户指定一个容器内的可执行命令,集群会周期性地在容器内执行该命令,如果命令的返回结果是0则检查成功,否则检查失败。

      对于上面提到的TCP端口检查和HTTP请求检查,都可以通过执行命令检查的方式来替代:

      • 对于TCP端口探测,可以写一个程序来对容器的端口进行connect,如果connect成功,脚本返回0,否则返回-1。
      • 对于HTTP请求探测,可以写一个脚本来对容器进行wget。

    上述三种检查方式的公共参数说明如下:

    • 延迟时间:延迟检查时间,单位为秒,此设置与业务程序正常启动时间相关。例如,设置为30,表明容器启动后30秒才开始健康检查,该时间是预留给业务程序启动的时间。
    • 超时时间:超时时间,单位为秒。例如,设置为10,表明执行健康检查的超时等待时间为10秒,如果超过这个时间,本次健康检查会被视为失败。若设置为0或不设置,默认超时等待时间为1秒。

    工作负载业务探针

    用于检查用户业务是否就绪,不就绪则不转发流量到当前实例。一些程序的启动时间可能很长,比如要加载磁盘数据或者要依赖外部的某个模块启动完成才能提供服务。这时候程序进程在,但是并不能对外提供服务。这种场景下该检查方式非常有用。如果容器的就绪检查失败,集群会屏蔽请求访问该容器;若检查成功,则会开放对该容器的访问。检查方法和配置请参考“工作负载存活探针”。

    生命周期

    -

    用于设置容器启动和运行时需要执行的命令。

    启动命令/运行命令

    设置容器启动时执行的命令,控制镜像运行的实际命令。

    启动命令/运行参数

    传递给运行命令的参数。

    启动后处理/检查方式

    设置容器成功运行后执行的命令,分为以下两种:

    • 执行命令检查:在容器中执行指定的命令,配置为需要执行的命令。命令的格式为Command Args[1] Args[2]…(Command为系统命令或者用户自定义可执行程序,如果未指定路径则在默认路径下寻找可执行程序),如果需要执行多条命令,建议采用将命令写入脚本执行的方式。
    • HTTP请求检查:发起一个HTTP调用请求。配置参数如下:
      • 路径:请求的URL路径,可选项。
      • 端口:请求的端口,必选项。
      • 主机地址:请求的IP地址,可选项,默认是容器所在的节点IP。

    停止前处理/检查方式

    设置容器结束前执行的命令,通常用于删除日志/临时文件等。分为以下两种:

    • 执行命令检查:在容器中执行指定的命令,配置为需要执行的命令。命令的格式为Command Args[1] Args[2]…(Command为系统命令或者用户自定义可执行程序,如果未指定路径则在默认路径下寻找可执行程序),如果需要执行多条命令,建议采用将命令写入脚本执行的方式。
    • HTTP请求检查:发起一个HTTP调用请求。配置参数如下:
      • 路径:请求的URL路径,可选项。
      • 端口:请求的端口,必选项。
      • 主机地址:请求的IP地址,可选项,默认是容器所在的节点IP。

    容器日志

    -

    支持用户进行容器日志配置(仅在华为云上可用),日志文件内容由采集器上报到华为云的应用运维管理(简称AOM)进行统一管理。AOM是云上应用的一站式立体化运维管理平台,实时监控应用及云资源,采集各项指标、日志及事件等数据分析应用健康状态,提供告警及数据可视化功能,帮助用户及时发现故障,全面掌握应用、资源及业务的实时运行状况。

    单击“新增行”进行添加,可选项。

    主机路径

    日志文件在主机上保存的路径。

    挂载路径

    日志文件挂载到容器上的路径。

    注意:请不要挂载到系统目录下,如“/”、“/var/run”等,否则可能会导致容器异常。

    采集路径

    采集路径是基于挂载路径的扩展功能,设置采集路径可以更精确的指定采集内容。当前支持以下设置方式:

    • 不设置则默认采集当前路径下的.log .trace .out文件。
    • 设置**表示递归采集5层目录下的.log .trace .out文件。
    • 设置*表示模糊匹配。

    例子: 采集路径为/tmp/**/test*.log,表示采集/tmp目录及其1-5层子目录下的全部以test开头的.log文件。

    使用采集路径功能请确认您的采集器ICAgent版本为5.12.22或以上版本。

    主机扩展路径

    通过实例的ID或者容器的名称扩展主机路径,实现同一个主机路径下区分来自不同容器的挂载。

  8. (可选)选中拖入的“无状态负载”元素,在页面右侧区域单击进行调度策略配置。

    图11 节点亲和配置示例
    图12 Pod亲和与反亲和配置示例
    图13 容忍度配置示例1
    图14 容忍度配置示例2
    图15 容忍度配置示例3
    图16 容忍度配置示例4
    表4 调度策略配置参数说明

    区域

    参数

    说明

    节点亲和

    -

    Pod可以理解为在集群上运行的进程,是Kubernetes应用程序的基本执行单元。“节点亲和”是指可以根据节点上的标签来约束Pod只能或者优先调度到哪些节点。kubernetes目前有如下两种类型的节点亲和:

    • 一种是Pod调度到的节点必须满足一定规则,即“requiredDuringSchedulingIgnoredDuringExecution”。
    • 另一种是将Pod优先调度到一些满足规则的节点,如果不满足要求,则可以将Pod调度到其他节点,即“preferredDuringSchedulingIgnoredDuringExecution”。

    AppCube目前两种类型都支持。两种类型的节点亲和有一个共同点:如果节点的标签在运行时发生变更,从而不再满足Pod上的亲和规则,但是Pod将仍然继续在该节点上运行。

    必须满足原则

    “必须满足原则”对应kubernetes的“requiredDuringSchedulingIgnoredDuringExecution”,是指定将Pod调度到某节点上必须满足的规则,不存在Pod被调度到其他节点的可能性。例如按照组网规划,Datatool服务的宿主机是固定的,因此,调度策略应该使用“必须满足原则”。

    单击“添加”可添加多个条件卡片,然后在条件卡片里单击“新增行”可定义规则。您可以在一个条件卡片里添加多条规则,可定义多个条件卡片。其中任意条件卡片中多条规则必须都要满足的节点才会被调度。

    单击“添加”,再单击“新增行”后,界面会出现“键”(节点标签键)、“操作符”和“值”(节点标签值),组合起来便是规则表达式。其中“操作符”可以设置六种匹配关系(In、NotIn、Exists、DoesNotExist、Gt、以及Lt)。In和NotIn操作符可以添加单个值或者多个值(多值使用“,”进行划分),Exists和DoesNotExist判断某个标签是否存在,不需设置值。Gt和Lt判断标签的值大于或者小于某个值(值要求整数)。

    注意:如果节点的标签在运行时发生变更,从而不再满足Pod上的亲和规则,但是Pod将仍然继续在该节点上运行。

    尽量满足原则

    “尽量满足原则”对应kubernetes的“preferredDuringSchedulingIgnoredDuringExecution”,是指将Pod优先调度到一些满足规则的节点,如果不满足要求,则可以将Pod调度到其他节点。即存在被调度器调度到其他节点的可能性。

    单击“添加”可添加多个条件卡片,然后在条件卡片里单击“新增行”可定义规则。您可以在一个条件卡片里添加多条规则,可定义多个条件卡片。其中任意条件卡片中多条规则必须都要满足的节点才会被优先调度。满足条件后,“权重”值(值范围为1~100)总和越高的节点,越会被优先调度。

    单击“添加”,再单击“新增行”后,界面会出现“键”(节点标签键)、“操作符”和“值”(节点标签值),组合起来便是规则表达式。其中“操作符”可以设置六种匹配关系(In、NotIn、Exists、DoesNotExist、Gt、以及Lt)。In和NotIn操作符可以添加单个值或者多个值(多值使用“,”进行划分),Exists和DoesNotExist判断某个标签是否存在,不需设置值。Gt和Lt判断标签的值大于或者小于某个值(值要求整数)。

    注意:如果节点的标签在运行时发生变更,从而不再满足Pod上的亲和规则,但是Pod将仍然继续在该节点上运行。

    配置示例:如图11所示,节点亲和“必须满足原则”中配置“kubernetes.io/e2e-az-name In e2e-az1,e2e-az2”,“尽量满足原则”中配置“another-node-label-key In another-node-label-value”,此节点亲和性规则表示,Pod只能放置在具有标签键“kubernetes.io/e2e-az-name”且标签值为“e2e-az1”或“e2e-az2”的节点上。 另外,在满足这些标准的节点中,具有标签键为“another-node-label-key”且标签值为“another-node-label-value”的节点应该被优先使用。

    说明:一个节点可能有多个标签,即多个标签键值。

    Pod亲和

    -

    Pod间亲和性与反亲和性是指基于已经在节点上运行的Pod的标签来约束Pod可以调度到的节点,而不是基于节点上的标签。 即规则为“如果X节点上已经运行了一个或多个满足规则Y的Pod, 则这个Pod在亲和情况下应该(或者在反亲和的情况下不应该)运行在X节点”。Y表示一个具有可选的关联命令空间列表的LabelSelector;与节点不同,因为Pod是命名空间限定的(因此Pod上的标签也是命名空间限定的),因此作用于Pod标签的标签选择算符必须指定选择算符应用在哪个命名空间。 从概念上讲,X是一个拓扑域,如节点、机架、云供应商可用区、云供应商地理区域等。 你可以使用topologyKey来表示它,topologyKey是节点标签的键,以便系统用来表示这样的拓扑域。

    与节点亲和性一样,当前有两种类型的Pod亲和性与反亲和性,即“requiredDuringSchedulingIgnoredDuringExecution”和“preferredDuringSchedulingIgnoredDuringExecution”。请参阅前面节点亲和性部分中的描述。 亲和性的一个示例是“将服务A和服务B的Pod放置在同一区域,因为它们之间需要进行大量交流”,而反亲和性的示例将是“将此服务的pod跨区域分布”。

    说明:Pod间亲和性与反亲和性需要大量的处理,这可能会显著减慢大规模集群中的调度。 不建议在超过数百个节点的集群中使用它们。

    必须满足原则

    “必须满足原则”对应kubernetes的“requiredDuringSchedulingIgnoredDuringExecution”,是指定将Pod调度到某节点上必须满足的规则,不存在Pod被调度到其他节点的可能性。

    单击“添加”可添加多个条件卡片,然后在条件卡片里单击“新增行”可定义规则。您可以在一个条件卡片里添加多条规则,可定义多个条件卡片。其中任意条件卡片中多条规则必须都要满足的节点才会被调度。

    单击“添加”后界面会出现如下参数:

    • 拓扑域:节点标签的键,同一标签键取值意味着处于同一拓扑域。当节点标签的键是标准标签键时,可从选项中直接选择,当是自定义的标签键时,直接输入键即可。
    • 命名空间:指定Pod标签所在的命名空间列表,用逗号分隔。为空则表示为此Pod的命名空间。
    • 再单击“新增行”后,界面会出现“键”(Pod标签键)、“操作符”和“值”(Pod标签值),组合起来便是规则表达式。其中“操作符”可以设置四种匹配关系(In、NotIn、Exists、DoesNotExist)。In和NotIn操作符可以添加单个值或者多个值(多值使用“,”进行划分),Exists和DoesNotExist判断某个标签是否存在,不需设置值。

    注意:如果节点的标签在运行时发生变更,从而不再满足Pod上的亲和规则,但是Pod将仍然继续在该节点上运行。

    尽量满足原则

    “尽量满足原则”对应kubernetes的“preferredDuringSchedulingIgnoredDuringExecution”,是指将Pod优先调度到一些满足规则的节点,如果不满足要求,则可以将Pod调度到其他节点。即存在被调度器调度到其他节点的可能性。

    单击“添加”可添加多个条件卡片,然后在条件卡片里单击“新增行”可定义规则。您可以在一个条件卡片里添加多条规则,可定义多个条件卡片。其中任意条件卡片中多条规则必须都要满足的节点才会被优先调度。满足条件后,“权重”值(值范围为1~100)总和越高的节点,越会被优先调度。

    单击“添加”后界面会出现如下参数:

    • 拓扑域:节点标签的键,同一标签键取值意味着处于同一拓扑域。当节点标签的键是标准标签键时,可从选项中直接选择,当是自定义的标签键时,直接输入键即可。
    • 命名空间:指定Pod标签所在的命名空间列表,用逗号分隔。为空则表示为此Pod的命名空间。
    • 再单击“新增行”后,界面会出现“键”(Pod标签键)、“操作符”和“值”(Pod标签值),组合起来便是规则表达式。其中“操作符”可以设置四种匹配关系(In、NotIn、Exists、DoesNotExist)。In和NotIn操作符可以添加单个值或者多个值(多值使用“,”进行划分),Exists和DoesNotExist判断某个标签是否存在,不需设置值。

    注意:如果节点的标签在运行时发生变更,从而不再满足Pod上的亲和规则,但是Pod将仍然继续在该节点上运行。

    Pod反亲和

    -

    Pod间亲和性与反亲和性是指基于已经在节点上运行的Pod的标签来约束Pod可以调度到的节点,而不是基于节点上的标签。 即规则为“如果X节点上已经运行了一个或多个满足规则Y的Pod, 则这个Pod在反亲和的情况下不应该运行在X节点”。

    必须满足原则

    “必须满足原则”对应kubernetes的“requiredDuringSchedulingIgnoredDuringExecution”,是指定将Pod不应该调度到某节点上必须满足的规则

    尽量满足原则

    “尽量满足原则”对应kubernetes的“preferredDuringSchedulingIgnoredDuringExecution”,是指将Pod尽量不要调度到某节点上

    配置示例:如图12所示,Pod亲和“必须满足原则”中配置“security In S1”,Pod反亲和“尽量满足原则”中配置“security In S2”,拓扑域都配置为“topology.kubernetes.io/zone”。此规则组合起来配置了一条Pod亲和性规则和一条Pod反亲和性规则。Pod亲和性规则表示,仅当节点和至少一个已运行且有键为“security”值为“S1”的标签的Pod处于同一区域时,才可以将新Pod调度到节点上。Pod反亲和性规则表示,如果节点处于Pod所在的同一可用区且已运行具有键为“security”和值为“S2”的标签的Pod,则新Pod尽量不要调度到该节点所在可用区内。

    容忍度

    -

    节点亲和性是Pod的一种属性,它使Pod被吸引到一类特定的节点上。 这可能出于一种偏好(即优先调度“尽量满足原则”),也可能是硬性要求(即“必须满足原则”)。污点则相反,它使节点能够排斥一类特定的Pod。

    容忍度是应用于Pod上的,允许(但并不要求)Pod调度到带有与之匹配的污点的节点上。

    污点和容忍度是相互配合的,可以用来避免Pod被分配到不合适的节点上。 每个节点上都可以设置一个或多个污点,这表示对于那些不能容忍这些污点的Pod,是不会被该节点接受的。

    例如用户希望把Master节点保留给Kubernetes系统组件使用,或者把一组具有特殊资源预留给某些Pod,则污点就很有用了,Pod不会再被调度到设置了污点的节点。

    • 键:选择器适用的标签键。如果键为空,操作符必须为“Exists”,表示这个容忍度能容忍任意污点。
    • 操作符:表示键与一组值的关系。有效的运算符为“Exists”或“Equal”。
    • 值:如果操作符为“Exists”,值必须为空。如果操作符为“Equal”,值必须要设置。
    • 效果:有三种可选取值,其中“NoSchedule”表示不会被调度到污点节点上去;“PreferNoSchedule”表示尽量不调度到污点节点上去;“NoExecute”表示一旦污点生效,如该节点内正在运行的Pod没有对应容忍度设置,则会直接被逐出。
    • 容忍时间:可容忍时间,单位为秒。仅当效果为“NoExecute”生效。默认不设置,意味着永久容忍。非正数视为0。

    配置示例:如果使用命令“kubectl taint nodes node1 key1=value1:NoSchedule”某节点node1增加一个污点,键是“key1”,操作符是“Equal”,值是“value1”,效果是“NoSchedule”。 若需要该Pod运行在node1节点,则需要按照图13或者图14所示进行配置,配置Pod容忍度为“key1 Equal value1 NoSchedule”或者“key1 Exists NoSchedule”,则该Pod拥有和这个污点相匹配的容忍度,该Pod才能够被分配到node1这个节点。

    您可以给一个节点添加多个污点,也可以给一个Pod添加多个容忍度设置。 系统处理多个污点和容忍度的过程就像一个过滤器:从一个节点的所有污点开始遍历, 过滤掉那些Pod中存在与之相匹配的容忍度的污点,余下未被过滤的污点的效果值决定了Pod是否会被分配到该节点。再举个复杂的例子,如果给一个节点添加了如下污点:

    kubectl taint nodes node1 key1=value1:NoSchedule
    kubectl taint nodes node1 key1=value1:NoExecute
    kubectl taint nodes node1 key2=value2:NoSchedule

    然后按照图15配置了两个容忍度,在这种情况下,该Pod不会被分配到node1节点,因为其没有容忍度和第三个污点“key2=value2:NoSchedule”相匹配。 但是如果在给节点添加上述污点之前,该Pod已经在上述节点运行, 那么它还可以继续运行在该节点上。

    通常情况下,如果给一个节点添加了一个效果值为NoExecute的污点, 则任何不能忍受这个污点的Pod都会马上被驱逐, 任何可以忍受这个污点的Pod都不会被驱逐。配置示例:如果Pod存在一个效果值为“NoExecute”的容忍度且容忍时间为“3600”秒,即配置如图16所示,这表示如果该Pod正在运行,同时一个匹配的污点被添加到其所在的节点, 那么Pod还将继续在节点上运行3600秒,然后被驱逐。 如果在此之前上述污点被删除了,则Pod不会被驱逐。

  9. 从页面左侧“服务”中拖拽“service”元素至页面右侧的服务区域中,界面中会显示,将元素拖入中。

    Pod是Kubernetes应用程序的基本执行单元,即它是Kubernetes对象模型中创建或部署的最小和最简单的单元。Pod表示在集群上运行的进程。Pod封装了一个或者多个应用程序容器、存储资源、唯一网络IP以及控制容器应该如何运行的选项。service可以理解为使用标签选择器(selectors)标识的一组Pod,通过service可以访问到这组Pod。

  10. 选中拖入的“service”元素,单击鼠标右键选择“配置”,参考表5在页面右侧区域进行配置。

    图17 “service”配置页面
    表5 “service”参数说明

    参数

    说明

    名称

    新建服务的名称。请直接填写。

    访问类型

    访问服务的类型。

    • 集群内访问(ClusterIP):表示工作负载暴露给同一集群内其他工作负载访问的方式,可以通过“集群内部域名”访问。集群内部域名格式为“<自定义的访问方式名称>.<工作负载所在命名空间>.svc.cluster.local”,例如“nginx.default.svc.cluster.local”。
    • 节点访问 ( NodePort):是指在每个节点的IP上开放一个静态端口,通过静态端口对外暴露服务。节点访问 ( NodePort )会路由到ClusterIP服务,这个ClusterIP服务会自动创建。通过请求 <NodeIP>:<NodePort>,可以从集群的外部访问一个NodePort服务。

    描述

    服务的描述信息。

    协议

    端口配置,请根据业务的协议类型选择TCP或者UDP。

    容器端口

    容器镜像中工作负载实际监听的端口,取值范围为1-65535。

    访问端口

    若访问类型配置为“集群内访问(ClusterIP)”,则访问端口为容器端口映射到集群虚拟IP上的端口,用虚拟IP访问工作负载时使用,端口范围为1-65535,可任意指定;若访问类型配置为“节点访问 ( NodePort)”,则访问端口为容器端口映射到节点私有IP上的端口

    注解

    单击“新增行”,您可以使用Kubernetes注解为对象附加任意的非标识的元数据。注解中的元数据,可以很小,也可以很大,可以是结构化的,也可以是非结构化的,能够包含标签不允许的字符。注解存储的形式是键/值对。

  11. 从页面左侧“网络”中拖拽“Ingress”元素至页面右侧的网络区域中,界面中会显示,将元素拖入中。

    Ingress是对集群中服务的外部访问进行管理的API对象,访问方式是HTTP或者HTTPS。

  12. 选中拖入的“Ingress”元素,单击鼠标右键选择“配置”,参考表6在页面右侧区域进行配置。

    图18 “Ingress”配置页面
    表6 “Ingress”参数说明

    区域

    参数

    说明

    基本信息

    名称

    新建Ingress的名称。请直接填写。七层负载均衡(Ingress)采用了增强型弹性负载均衡,通过对应的URI将访问流量分发到对应的服务。同时,服务根据不同URI实现不同的功能。

    描述

    Ingress描述信息。

    监听器配置

    -

    Ingress为负载均衡器配置监听器,监听器对负载均衡器上的请求进行监听,并分发流量。

    对外协议

    对外协议支持HTTP和HTTPS。

    • 勾选HTTPS,表示使用HTTPS。
    • 默认不勾选HTTPS,表示使用HTTP。

    Secret证书名称

    若对外协议勾选“HTTPS”,您需要配置密钥名称,取值上传证书到CCE中里配置额密钥名称保持一致。

    创建并上传密钥证书的方法请参见创建并上传HTTPS协议需要的证书

    您可以单击参数后的下拉按钮,单击“增加全局配置”,将密钥证书名称配置为全局变量,后续在修改用到的密钥证书名称时,只需要修改全局变量即可。建议您使用全局变量方式设置密钥证书名称。

    转发策略配置

    -

    请求的访问地址与转发规则匹配时,此请求将被转发到对应的目标Service处理。参数配置如下:

    单击“新增行”可配置多条转发策略。

    域名

    实际访问的域名地址。请确保所填写的域名已注册并备案,在Ingress创建完成后,将域名与自动创建的负载均衡实例的IP(即Ingress访问地址的IP部分)绑定。一旦配置了域名规则,则必须使用域名访问。

    URL

    需要注册的访问路径,例如:/test。URL匹配规则为前缀匹配,例如URL为/test,只要符合此前缀的URL均可访问。例如/test/v1,/test/v2。

    目标服务

    请求将被转发到对应的目标服务,请从下拉框选择12~13中配置的Service。

    服务端口

    目标Service的访问端口,请从下拉框选择13配置的访问端口。

    注解

    -

    单击“新增行”,您可以使用Kubernetes注解为对象附加任意的非标识的元数据。注解中的元数据,可以很小,也可以很大,可以是结构化的,也可以是非结构化的,能够包含标签不允许的字符。注解存储的形式是键/值对。

    • 由于华为云CCE的Kubernetes集群默认部署Nginx控制器,因此需要在Ingress上添加注解,具体需要添加的注解可参考Kubernetes资料
    • AppCube平台在调用Native服务的接口时,无法处理重定向的响应,因此必须给Ingress添加注解,键为“nginx.ingress.kubernetes.io/ssl-redirect”,值为“false”。
    • Nginx控制器默认后端service使用的是http协议,如果后端service使用的是https协议,应添加如下注解:

      键为“nginx.ingress.kubernetes.io/backend-protocol”,值为“HTTPS”。

      键为“nginx.ingress.kubernetes.io/secure-backends”,值为“true”。

  13. (可选)若需要配置多个负载相关的容器,可参考5~15配置另外的容器。
  14. 单击进行保存。
分享:

    相关文档

    相关产品

关闭导读