华为云用户手册

  • 指标说明 Pod视图暴露的指标包括Pod资源指标、Pod网络指标和Pod磁盘指标,具体说明如下: 图1 Pod资源指标 表1 Pod资源指标说明 指标名称 单位 说明 容器数 个 Pod中的容器总数 运行中容器数 个 Pod中正在运行的容器个数 Pod状态 个 处在不同状态下的Pod个数 容器重启次数 次 容器被重启的次数 CPU使用量 Cores Pod CPU使用量 CPU 有效率&使用率 百分比 有效率:使用量/请求量;使用率:使用量/总量 内存使用量 字节 内存使用量 内存 有效率&使用率 百分比 有效率:使用量/请求量;使用率:使用量/总量 CPU Throttling 百分比 CPU节流周期限制率 图2 Pod网络指标 表2 Pod网络指标说明 指标名称 单位 说明 网络接收速 字节/秒 容器每秒接收的字节数 网络发送速率 字节/秒 容器每秒发送的字节数 接收数据包速率 个/秒 容器每秒接收数据包数 发送数据包速 个/秒 容器每秒发送数据包数 丢包速率(接收) 字节/秒 容器每秒接收的数据丢包数 丢包速率(发送) 字节/秒 容器每秒发送的数据丢包数 图3 Pod磁盘指标 表3 Pod磁盘指标说明 指标名称 单位 说明 Pod容器磁盘读写IO速率(读+写) 次数/秒 Pod磁盘每秒读写IO次数 Pod磁盘读写吞吐量(读+写) 字节/秒 Pod磁盘每秒读写字节数 容器磁盘读写IO速率(读+写) 次数/秒 容器磁盘每秒读写IO次数 容器磁盘读写吞吐量(读+写) 字节/秒 容器磁盘每秒读写字节数 文件系统使用率 百分比 文件系统的使用率 文件系统使用量 字节 文件系统已经使用的字节数
  • Nginx Ingress Controller进阶功能 使用多套Nginx Ingress Controller 在应用中,您可能会因为内外网隔离等需要,在集群中部署多套Nginx Ingress Controller。操作详情请参见安装多个NGINX Ingress控制器。 通过Nginx Ingress Controller进行应用的蓝绿或灰度发布 支持通过Nginx Ingress实现对服务的灰度发布,操作详情请参见使用Nginx Ingress实现灰度发布和蓝绿发布。 通过Nginx Ingress Controller配置重定向规则 支持通过Nginx Ingress设置重定向规则,操作详情请参见Nginx Ingress配置重定向规则。 Nginx Ingress对接不同协议的后端服务 Ingress默认使用HTTP协议连接到后端服务,但也可以代理不同协议的后端服务: HTTPS:请参见Nginx Ingress对接HTTPS协议的后端服务。 gRPC:请参见Nginx Ingress对接gRPC协议的后端服务。
  • Nginx Ingress Controller优化设置 使用合适的副本数和资源限制 默认情况下,通过插件中心安装的Nginx Ingress Controller的实例数为2,您可以根据业务的实际需要进行调整。 在部署Nginx Ingress Controller时,多实例会默认分配到不同可用区或者是同一可用区的不同节点。 同时建议您不要将Nginx Ingress Controller的资源限制设置太小,避免OOM所带来的流量中断。建议CPU限制值不低于1000m、内存限制值不低于2 GiB。 使用独占节点来提升Nginx Ingress性能与稳定性 提前在创建节点时,设置节点的污点。在安装Nginx Ingress Controller插件时,在容忍策略中添加该节点的污点。详情请参见独占节点部署。 优化Nginx Ingress性能 Nginx Ingress Controller性能调优主要分为系统参数调优和Nginx参数调优: 系统参数调优:华为云上的操作系统已经默认优化了一些常见参数,其他还需要调优的系统参数主要包括连接队列的大小、源端口的范围。系统参数调优后可以保证Nginx处理高并发请求的能力,以及在连接后端时不会因为端口耗尽而失败。 Nginx参数调优: 调高 keepalive 连接最大请求数:高并发环境中,增大 Nginx 与 client 的 keepalive 连接的最大请求数量,避免产生大量的TIME_WAIT 连接。 调高单个 Worker 最大连接数:Nginx参数主要可以调整单个Worker的最大连接数来保证Nginx Ingress Controller处理高并发请求的能力。 调高 keepalive 最大空闲连接数:高并发环境下,建议将 keepalive 值配置为1000。 设置网关超时:请您确保后端的业务长连接的超时时间不低于Nginx Ingress Controller的连接超时时间。 对Nginx Ingress Controller配置HPA进行自动扩容 一般情况下,Nginx Ingress Controller已经有足够的能力应对业务的突发流量。如果在高负载情况下仍不满足您的要求,也可以配置HPA对Nginx Ingress Controller进行扩容。具体操作,请参见HPA策略。 为后端服务配置合理的preStop Hook 后端服务滚动更新时,Nginx Ingress Controller会将正在终止的Pod从后端服务器中移除,但会保持还在处理的请求的连接。如果后端服务Pod在收到结束信号后立即退出,可能会导致正在处理的请求失败或部分流量仍被转发到已经退出的Pod中,导致部分流量损失。为了避免这种情况,建议在后端服务的Pod中配置preStop Hook,在Pod被移除后继续工作一段时间,以解决流量中断的问题。 工作负载配置示例如下: ... spec: template: spec: containers: - name: app lifecycle: # 配置preStop Hook,等待30秒后退出。 # 需要容器中存在sleep命令。 preStop: exec: command: - sleep - 30
  • 安装插件 登录CCE控制台,单击集群名称进入集群,单击左侧导航栏的“插件中心”,在右侧找到swr-cosign,单击“安装”。 在安装插件页面,设置“规格配置”。 表1 swr-cosign插件规格配置 参数 参数说明 插件规格 该插件可配置“单实例”、“高可用”或“自定义”规格。 实例数 选择上方插件规格后,显示插件中的实例数。 选择“自定义”规格时,您可根据需求调整插件实例数。 容器 选择“自定义”规格时,您可根据需求调整插件实例的容器规格。 设置插件支持的“参数配置”。 表2 swr-cosign插件参数配置 参数 参数说明 KMS密钥 选择一个密钥,仅支持 EC_P256、EC_P384、SM2 类型的密钥。 您可以前往密钥管理服务新增密钥。 验签镜像 验签镜像地址通过正则表达式进行匹配,例如填写docker.io/**表示对docker.io镜像仓库的镜像进行验签。如需对所有镜像验签,请填写**。 单击“安装”。 待插件安装完成后,选择对应的集群,然后单击左侧导航栏的“插件中心”,可筛选“已安装插件”查看相应的插件。
  • cce_cluster_agency委托说明 cce_cluster_agency委托没有Tenant Administrator系统角色,只包含CCE组件需要的云服务资源操作权限,用于生成CCE集群中组件使用的临时访问凭证。 cce_cluster_agency委托仅支持1.21及以上版本新建的集群。 创建cce_cluster_agency委托时将会自动创建名为“CCE cluster policies”的自定义策略,请勿删除该策略。 若当前cce_cluster_agency委托的权限与CCE期望的权限不同时,控制台会提示权限变化,需要您重新授权。 以下场景中,可能会出现cce_cluster_agency委托重新授权: CCE组件依赖的权限可能会随版本变动而发生变化。例如新增组件需要依赖新的权限,CCE将会更新期望的权限列表,此时需要您重新为cce_cluster_agency委托授权。 当您手动修改了cce_cluster_agency委托的权限时,该委托中拥有的权限与CCE期望的权限不相同,此时也会出现重新授权的提示。若您重新进行授权,该委托中手动修改的权限可能会失效。
  • 通过kubectl命令行创建 请参见通过kubectl连接集群,使用kubectl连接集群。 创建一个名为securitygroup-demo.yaml的描述文件。 vi securitygroup-demo.yaml 例如,用户创建如下的SecurityGroup资源对象,给所有的app:nginx工作负载绑定上提前已经创建的64566556-bd6f-48fb-b2c6-df8f44617953,5451f1b0-bd6f-48fb-b2c6-df8f44617953的两个安全组。示例如下: apiVersion: crd.yangtse.cni/v1 kind: SecurityGroup metadata: name: demo namespace: default spec: podSelector: matchLabels: app: nginx securityGroups: - id: 64566556-bd6f-48fb-b2c6-df8f44617953 - id: 5451f1b0-bd6f-48fb-b2c6-df8f44617953 以上yaml参数说明如表2。 表2 参数说明 字段名称 字段说明 必选/可选 apiVersion 表示API的版本号,版本号为crd.yangtse.cni/v1。 必选 kind 创建的对象类别。 必选 metadata 资源对象的元数据定义。 必选 name SecurityGroup的名称。 必选 namespace 工作空间名称。 必选 spec 用户对SecurityGroup的详细描述的主体部分都在spec中给出。 必选 podSelector 定义SecurityGroup中需要关联安全组的工作负载。 必选 securityGroups id为安全组的ID。 必选 执行以下命令,创建SecurityGroup。 kubectl create -f securitygroup-demo.yaml 回显如下表示已开始创建SecurityGroup securitygroup.crd.yangtse.cni/demo created 执行以下命令,查看SecurityGroup。 kubectl get sg 回显信息中有创建的SecurityGroup名称为demo,表示SecurityGroup已创建成功。 NAME POD-SELECTOR AGE all-no map[matchLabels:map[app:nginx]] 4h1m s001test map[matchLabels:map[app:nginx]] 19m demo map[matchLabels:map[app:nginx]] 2m9s
  • 通过界面创建 登录CCE控制台,单击集群名称,进入集群。 在左侧选择“工作负载”,单击工作负载名称。 在“安全组策略”页签下,单击“创建”。 根据界面提示,配置参数, 具体如表1所示。 表1 配置参数 参数名称 描述 示例 安全组策略名称 输入安全组策略名称。 请输入1-63个字符,以小写字母开头,由小写字母、数字、连接符(-)组成,且不能以连接符(-)结尾。 security-group 关联安全组 选中的安全组将绑定到选中的工作负载的弹性网卡/辅助弹性网卡上,在下拉框中最多可以选择5条,安全组必选,不可缺省。 如将绑定的安全组未创建,可单击“创建安全组”,完成创建后单击刷新按钮。 须知: 最多可选择5个安全组。 鼠标悬浮在安全组名称旁的图标上,可查看安全组的详细信息。 64566556-bd6f-48fb-b2c6-df8f44617953 5451f1b0-bd6f-48fb-b2c6-df8f44617953 参数配置后,单击“确定”。 创建完成后页面将自动返回到安全组策略列表页,可以看到新添加的安全组策略已在列表中。
  • CCE集群权限与企业项目 CCE支持以集群为粒度,基于企业项目维度进行资源管理以及权限分配。 如下事项需特别注意: IAM项目是基于资源的物理隔离进行管理,而企业项目则是提供资源的全局逻辑分组,更符合企业实际场景,并且支持基于企业项目维度的IAM策略管理,因此推荐您使用企业项目。详细信息请参见如何创建企业项目。 IAM项目与企业项目共存时,IAM将优先匹配IAM项目策略、未决则匹配企业项目策略。 CCE集群基于已有基础资源(VPC)创建集群、节点时,请确保IAM用户在已有资源的企业项目下有相关权限,否则可能导致集群或者节点创建失败。 当资源不支持企业项目时,为企业项目授予该资源的权限将不会生效。 是否支持企业项目 资源名称 说明 支持企业项目的资源 cluster 集群 node 节点 nodepool 节点池 job 任务 tag 集群标签 addonInstance 插件实例 release Helm版本 storage 存储资源 不支持企业项目的资源 quota 集群配额 chart 模板 addonTemplate 插件模板
  • 自定义策略 如果系统预置的CCE策略,不满足您的授权要求,可以创建自定义策略。自定义策略中可以添加的授权项(Action)请参考权限策略和授权项。 目前支持以下两种方式创建自定义策略: 可视化视图创建自定义策略:无需了解策略语法,按可视化视图导航栏选择云服务、操作、资源、条件等策略内容,可自动生成策略。 JSON视图创建自定义策略:可以在选择策略模板后,根据具体需求编辑策略内容;也可以直接在编辑框内编写JSON格式的策略内容。 具体创建步骤请参见:创建自定义策略。本章为您介绍常用的CCE自定义策略样例。
  • CCE集群权限与IAM RBAC CCE兼容IAM传统的系统角色进行权限管理,建议您切换使用IAM的细粒度策略,避免设置过于复杂或不必要的权限管理场景。 CCE当前支持的角色如下: IAM的基础角色: te_admin(Tenant Administrator):可以调用除IAM外所有服务的所有API。 readonly(Tenant Guest):可以调用除IAM外所有服务的只读权限的API。 CCE的自定义管理员角色:CCE Administrator。 如果用户有Tenant Administrator或者CCE Administrator的系统角色,则此用户拥有Kubernetes RBAC的cluster-admin权限,在集群创建后不可移除。 如果用户为集群创建者,则默认被授权Kubernetes RBAC的cluster-admin权限,此项权限可以在集群创建后被手动移除: 方式1:权限管理 - 命名空间权限 - 移除cluster-creator。 方式2:通过API或者kubectl删除资源,ClusterRoleBinding:cluster-creator。 RBAC与IAM策略共存时,CCE开放API或Console操作的后端鉴权逻辑如下:
  • 系统策略 IAM中预置的CCE系统策略当前包含CCE FullAccess和CCE ReadOnlyAccess两种策略: CCE FullAccess:系统策略,CCE服务集群相关资源的普通操作权限,不包括集群(启用Kubernetes RBAC鉴权)的命名空间权限,不包括委托授权、生成集群证书等管理员角色的特权操作。 CCE ReadOnlyAccess:系统策略,CCE服务集群相关资源的只读权限,不包括集群(启用Kubernetes RBAC鉴权)的命名空间权限。 购买包周期集群、节点时,需要为用户添加自定义策略,额外配置费用中心服务的支付相关权限,如bss:*:*。 表1 CCE FullAccess策略主要权限 操作(Action) Action详情 说明 cce:*:* cce:cluster:create 创建集群 cce:cluster:delete 删除集群 cce:cluster:update 更新集群,如后续允许集群支持RBAC,调度参数更新等 cce:cluster:upgrade 升级集群 cce:cluster:start 唤醒集群 cce:cluster:stop 休眠集群 cce:cluster:list 查询集群列表 cce:cluster:get 查询集群详情 cce:node:create 添加节点 cce:node:delete 删除节点/批量删除节点 cce:node:update 更新节点,如更新节点名称 cce:node:get 查询节点详情 cce:node:list 查询节点列表 cce:nodepool:create 创建节点池 cce:nodepool:delete 删除节点池 cce:nodepool:update 更新节点池信息 cce:nodepool:get 获取节点池 cce:nodepool:list 列出集群的所有节点池 cce:release:create 创建模板实例 cce:release:delete 删除模板实例 cce:release:update 更新升级模板实例 cce:job:list 查询任务列表(集群层面的job) cce:job:delete 删除任务/批量删除任务(集群层面的job) cce:job:get 查询任务详情(集群层面的job) cce:storage:create 创建存储 cce:storage:delete 删除存储 cce:storage:list 列出所有磁盘 cce:addonInstance:create 创建插件实例 cce:addonInstance:delete 删除插件实例 cce:addonInstance:update 更新升级插件实例 cce:addonInstance:get 获取插件实例 cce:addonTemplate:get 获取插件模板 cce:addonInstance:list 列出所有插件实例 cce:addonTemplate:list 列出所有插件模板 cce:chart:list 列出所有模板 cce:chart:delete 删除摸板 cce:chart:update 更新模板 cce:chart:upload 上传模板 cce:chart:get 获取模板信息 cce:release:get 获取模板实例信息 cce:release:list 列出所有模板实例 cce:userAuthorization:get 获取CCE用户授权 cce:userAuthorization:create 创建CCE用户授权 ecs:*:* - ECS(弹性云服务器)服务的所有权限。 evs:*:* 具体action详见:云硬盘v2接口的授权信息。 EVS(云硬盘)的所有权限。 可以将云硬盘挂载到云服务器,并可以随时扩容云硬盘容量 vpc:*:* - VPC(虚拟私有云,包含二代ELB)的所有权限。 创建的集群需要运行在虚拟私有云中,创建命名空间时,需要创建或关联VPC,创建在命名空间的容器都运行在VPC之内。 sfs:*:get* - SFS(弹性文件存储服务)资源详情的查看权限。 sfs:shares:ShareAction - SFS(弹性文件存储服务)资源的扩容共享。 aom:*:get - AOM(应用运维管理)资源详情的查看权限。 aom:*:list - AOM(应用运维管理)资源列表的查看权限。 aom:autoScalingRule:* - AOM(应用运维管理)自动扩缩容规则的所有操作权限。 apm:icmgr:* - APM(应用性能管理服务)操作ICAgent权限。 lts:*:* - LTS(云日志服务)的所有权限。 表2 CCE ReadOnlyAccess策略主要权限 操作(Action) 操作(Action) 说明 cce:*:get cce:cluster:get 查询集群详情 cce:node:get 查询节点详情 cce:job:get 查询任务详情(集群层面的job) cce:addonInstance:get 获取插件实例 cce:addonTemplate:get 获取插件模板 cce:chart:get 获取模板信息 cce:nodepool:get 获取节点池 cce:release:get 获取模板实例信息 cce:userAuthorization:get 获取CCE用户授权 cce:*:list cce:cluster:list 查询集群列表 cce:node:list 查询节点列表 cce:job:list 查询任务列表(集群层面的job) cce:addonInstance:list 列出所有插件实例 cce:addonTemplate:list 列出所有插件模板 cce:chart:list 列出所有模板 cce:nodepool:list 列出集群的所有节点池 cce:release:list 列出所有模板实例 cce:storage:list 列出所有磁盘 cce:kubernetes:* - 操作所有Kubernetes资源,具体权限请在命名空间权限中配置。 ecs:*:get - ECS(弹性云服务器)所有资源详情的查看权限。 CCE中的一个节点就是具有多个云硬盘的一台弹性云服务器 ecs:*:list - ECS(弹性云服务器)所有资源列表的查看权限。 bms:*:get* - BMS(裸金属服务器)所有资源详情的查看权限。 bms:*:list - BMS(裸金属服务器)所有资源列表的查看权限。 evs:*:get - EVS(云硬盘)所有资源详情的查看权限。可以将云硬盘挂载到云服务器,并可以随时扩容云硬盘容量 evs:*:list - EVS(云硬盘)所有资源列表的查看权限。 evs:*:count - - vpc:*:get - VPC(虚拟私有云,包含二代ELB)所有资源详情的查看权限。 创建的集群需要运行在虚拟私有云中,创建命名空间时,需要创建或关联VPC,创建在命名空间的容器都运行在VPC之内 vpc:*:list - VPC(虚拟私有云,包含二代ELB)所有资源列表的查看权限。 sfs:*:get* - SFS(弹性文件服务)服务所有资源详情的查看权限。 sfs:shares:ShareAction - SFS(弹性文件服务)资源的扩容共享。 aom:*:get - AOM(应用运维管理)服务所有资源详情的查看权限。 aom:*:list - AOM(应用运维管理)服务所有资源列表的查看权限。 aom:autoScalingRule:* - AOM(应用运维管理)服务自动扩缩容规则的所有操作权限。 lts:*:get - LTS(云日志服务)的所有资源详情的查看权限。 lts:*:list - LTS(云日志服务)的所有资源列表的查看权限。
  • 前提条件 给用户组授权之前,请您了解用户组可以添加的CCE系统策略,并结合实际需求进行选择,CCE支持的系统策略及策略间的对比,请参见CCE系统权限。若您需要对除CCE之外的其它服务授权,IAM支持服务的所有策略请参见系统权限。 拥有Security Administrator(IAM除切换角色外所有权限)权限的用户(如账号默认拥有此权限),才能看见CCE控制台权限管理页面当前用户组及用户组所拥有的权限。
  • 示例流程 图1 给用户授予CCE权限流程 创建用户组并授权。 在IAM控制台创建用户组,并授予CCE权限,例如CCE ReadOnlyAccess。 CCE服务按区域部署,在IAM控制台授予CCE权限时请选择“区域级项目”。 创建用户并加入用户组。 在IAM控制台创建用户,并将其加入1中创建的用户组。 用户登录并验证权限。 新创建的用户登录控制台,切换至授权区域,验证权限: 在“服务列表”中选择云容器引擎,进入CCE主界面尝试购买集群,如果无法无法成功操作(假设当前权限仅包含CCE ReadOnlyAccess),表示“CCE ReadOnlyAccess”已生效。 在“服务列表”中选择除云容器引擎外(假设当前策略仅包含CCE ReadOnlyAccess)的任一服务,若提示权限不足,表示“CCE ReadOnlyAccess”已生效。
  • 系统角色 角色是IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 IAM中预置的CCE系统角色为CCE Administrator,给用户组授予该系统角色权限时,必须同时勾选该角色依赖的其他策略才会生效,例如Tenant Guest、Server Administrator、ELB Administrator、OBS Administrator、SFS Administrator、SWR Admin、APM FullAccess。了解更多角色依赖关系,请参考:系统权限。
  • 插件中除log-operator外组件均未就绪 问题现象:插件中除log-operator外组件均未就绪,且出现异常事件“实例挂卷失败”。 解决方案:请查看log-operator日志,安装插件时,其余组件所需的配置文件需要log-operator生成,log-operator生成配置出错,会导致所有组件无法正常启动。 日志信息如下: MountVolume.SetUp failed for volume "otel-collector-config-vol":configmap "log-agent-otel-collector-config" not found
  • log-agent-otel-collector组件出现OOM 排查方法: 查看log-agent-otel-collector组件标准输出,查看近期是否有错误日志。 kubectl logs -n monitoring log-agent-otel-collector-xxx 若存在报错请优先处理报错,确认日志恢复正常采集。 若日志近期没有报错,且仍然出现OOM,则参考以下步骤进行处理: 进入“日志中心”,单击“展开日志条数统计图”查看日志统计图。若上报的日志组日志流不是默认日志组日志流,则单击“全局日志查询”页签,选择上报的日志组和日志流后进行查看。 图10 查看日志统计 根据统计图中的柱状图,计算每秒上报的日志量,检查是否超过当前规格的日志采集性能。 若超过当前规格的日志采集性能,可尝试增加log-agent-otel-collector副本数或提高log-agent-otel-collector的内存上限。 若CPU使用率超过90%,则需要提高log-agent-otel-collector的CPU上限。
  • 索引 如何关闭日志中心? 插件中除log-operator外组件均未就绪 log-operator标准输出报错 节点容器引擎为docker时采集不到容器文件日志 日志无法上报,otel组件标准输出报错:log's quota has full 采集容器内日志,且采集目录配置了通配符,日志无法采集 fluent-bit容器组一直重启 节点OS为Ubuntu 18.04时出现日志无法采集 采集Job日志时出现日志无法采集 云原生日志采集插件运行正常,部分日志策略未生效 log-agent-otel-collector组件出现OOM 节点负载过多,采集日志时缺少部分Pod信息 如何修改集群日志中心的日志存储时间?
  • 节点容器引擎为docker时采集不到容器文件日志 问题现象: 配置了容器文件路径采集,采集的目录不是挂载到容器内的,且节点容器引擎为docker,采集不到日志。 解决方案: 请检查工作负载所在节点的容器存储模式是否为Device Mapper,Device Mapper不支持采集容器内日志(创建日志策略时已提示此限制)。检查方法如下: 进入业务工作负载所在节点。 执行docker info | grep "Storage Driver"。 若返回的Storage Driver值为Device Mapper,则该日志无法采集。 图4 创建日志策略
  • log-operator标准输出报错 问题现象: 2023/05/05 12:17:20.799 [E] call 3 times failed, resion: create group failed, projectID: xxx, groupName: k8s-log-xxx, err: create groups status code: 400, response: {"error_code":"LTS.0104","error_msg":"Failed to create log group, the number of log groups exceeds the quota"}, url: https://lts.cn-north-4.myhuaweicloud.com/v2/xxx/groups, process will retry after 45s 解决方案:LTS日志组有配额限制,如果出现该报错,请前往LTS下删除部分无用的日志组。限制详情见:日志组。
  • 采集容器内日志,且采集目录配置了通配符,日志无法采集 排查方法:请检查工作负载配置中Volume挂载情况,如果业务容器的数据目录是通过数据卷(Volume)挂载的,插件不支持采集它的父目录,需设置采集目录为完整的数据目录。例如/var/log/service目录是数据卷挂载的路径,则设置采集目录为/var/log或/var/log/*将采集不到该目录下的日志,需设置采集目录为/var/log/service。 解决方案:若日志生成目录为/application/logs/{应用名}/*.log,建议工作负载挂载Volume时,直接挂载/application/logs,日志策略中配置采集路径为/application/logs/*/*.log
  • 开启告警中心 在目标集群左侧导航栏选择“告警中心”。 选择“告警规则”页签,单击“开启告警中心”,在弹出的页面中选择一个或多个联系组,以便分组管理订阅终端并接收告警消息。如果当前还没有联系组,请参考配置告警通知人进行创建。 单击“确认”完成功能开启。 告警中心中的指标类告警规则依赖云原生监控插件上报指标数据到AOM Prometheus实例,需要开通监控中心。当您的集群未安装插件或者在安装插件时未对接AOM Prometheus实例,告警中心将不会创建指标类告警规则。开通监控中心请参考开通监控中心。 表1中的事件类告警依赖日志中心开启收集Kubernetes事件的能力,详情请参见收集Kubernetes事件。
  • 配置告警通知人 联系组是基于消息通知服务 SMN的主题功能实现的,目的是为消息发布者和订阅者提供一个可以相互交流的通道。联系组包含一个或多个订阅终端,您可以通过配置告警联系组,分组管理订阅终端,接收告警信息。联系组创建完成后,需要绑定至告警规则集,这样,当有告警触发时,联系组中的订阅终端就可以收到告警消息了。 登录CCE控制台。 在集群列表页面,单击目标集群名称进入详情页。 在左侧导航栏选择“告警中心”,选择“联系组”页签。 单击“新建联系组”,在弹出的页面中输入联系组参数。 联系组名称:输入联系组名称,创建后不可修改。名称只能包含大写字母、小写字母、数字、-和_,且必须由大写字母、小写字母或数字开头,名称长度为1~255字符。 告警消息显示名:即订阅终端接收消息的标题名称。假设订阅终端为邮件,推送邮件消息时,若已设置告警消息显示名,发件人则呈现为“显示名”,若未设置告警消息显示名,发件人呈现为“username@example.com”。支持在联系组创建完成后修改告警消息显示名。 添加订阅终端:您需要添加一个或多个订阅终端来接收告警消息。终端类型包括短信和邮件,选择“短信”时,请输入有效的手机号码;选择“邮件”时,请输入有效的电子邮件地址。 单击“确定”完成联系组的创建。 返回联系组列表,订阅终端状态为“未确认”,您需要继续执行后续操作,向该终端发送订阅请求,以验证终端有效性。 单击操作列“请求订阅”,向该终端发送订阅请求。若终端收到请求,请按照提示进行确认,确认完成后订阅终端状态将变为“已确认”。 联系组创建并确认后,单击图标启用联系组,实现联系组和告警规则集的绑定。 告警规则集最多支持绑定5个联系组。
  • 查看告警列表 您可以在“告警列表”页面查看最近发送的历史记录。 登录CCE控制台。 在集群列表页面,单击目标集群名称进入详情页。 在左侧导航栏选择“告警中心”,选择“告警列表”页签。 列表中默认展示全部待解决告警,支持按照告警关键字、告警等级,以及告警发生的时间范围筛选。同时支持查看指定筛选条件的告警在不同时间段的分布情况。 如果确认某条告警已排除,可以单击操作列的“清除”,清除后可在历史告警中查询。 图1 告警列表
  • 操作步骤 登录CCE控制台,在左侧导航栏中选择“集群管理”。 单击集群名称,查看总览页面。 在“网络信息”中单击“节点默认安全组”后的按钮。 图1 节点默认安全组 选择一个已有的安全组,并确认安全组规则满足集群要求后,单击“确定”。 请确认选择的安全组设置了正确的端口规则,否则将无法成功创建节点。安全组需要满足的端口规则根据集群类别存在差异,详情请参见集群安全组规则配置。 新安全组只对新创建或纳管的节点生效,存量节点需要手动修改节点安全组规则,即使对存量节点进行重置,也仍会使用原安全组。如需批量修改存量节点的安全组设置,请参考如何批量修改集群node节点安全组?。 图2 编辑节点默认安全组
  • Pod标签 在控制台创建工作负载时,会默认为Pod添加如下标签,其中app的值为工作负载名称。 YAML示例如下: ... spec: selector: matchLabels: app: nginx version: v1 template: metadata: labels: app: nginx version: v1 spec: ...
  • Pod注解 CCE提供一些使用Pod的高级功能,这些功能使用时可以通过给YAML添加注解Annotation实现。具体的Annotation如下表所示。 表1 Pod Annotation 注解 说明 默认值 kubernetes.io/ingress-bandwidth Pod的入口带宽 具体使用请参见为Pod配置QoS。 - kubernetes.io/egress-bandwidth Pod的出口带宽 具体使用请参见为Pod配置QoS。 - node.cce.io/node-az-list Pod亲和的可用区列表。 具体使用请参见设置可用区亲和性。 -
  • Binpack算法原理 Binpack在对一个节点打分时,会根据Binpack插件自身权重和各资源设置的权重值综合打分。首先,对Pod请求资源中的每类资源依次打分,以CPU为例,CPU资源在待调度节点的得分信息如下: CPU.weight * (request + used) / allocatable 即CPU权重值越高,得分越高,节点资源使用量越满,得分越高。Memory、GPU等资源原理类似。其中: CPU.weight为用户设置的CPU权重 request为当前pod请求的CPU资源量 used为当前节点已经分配使用的CPU量 allocatable为当前节点CPU可用总量 通过Binpack策略的节点总得分如下: binpack.weight * (CPU.score + Memory.score + GPU.score) / (CPU.weight+ Memory.weight+ GPU.weight) * 100 即binpack插件的权重值越大,得分越高,某类资源的权重越大,该资源在打分时的占比越大。其中: binpack.weight为用户设置的装箱调度策略权重 CPU.score为CPU资源得分,CPU.weight为CPU权重 Memory.score为Memory资源得分,Memory.weight为Memory权重 GPU.score为GPU资源得分,GPU.weight为GPU权重 图1 Binpack策略示例
  • Binpack功能介绍 Binpack调度算法的目标是尽量把已有的节点填满(即尽量不往空白节点分配)。具体实现上,Binpack调度算法为满足调度条件的节点打分,节点的资源利用率越高得分越高。Binpack算法能够尽可能填满节点,将应用负载靠拢在部分节点,这非常有利于集群节点的自动扩缩容功能。 Binpack为调度器的多个调度插件之一,与其他插件共同为节点打分,用户可以自定义该插件整体权重和各资源维度打分权重,用以提高或降低Binpack在整体调度中的影响力。调度器在计算Binpack策略得分时,会考虑Pod请求的各种资源,如:CPU、Memory和GPU等扩展资源,并根据各种资源所配置的权重做平均。
  • 通过控制台创建 登录CCE控制台,单击集群名称进入集群。 在左侧导航栏中选择“服务”,在右上角单击“创建服务”。 设置Service参数。本示例中仅列举必选参数,其余参数可根据需求参考创建LoadBalancer类型Service进行设置。 Service名称:自定义服务名称,可与工作负载名称保持一致。 访问类型:选择“负载均衡”。 选择器:添加标签,Service根据标签选择Pod,填写后单击“确认添加”。也可以引用已有工作负载的标签,单击“引用负载标签”,在弹出的窗口中选择负载,然后单击“确定”。 负载均衡器:选择弹性负载均衡的类型、创建方式。 类型:“独享型”或“共享型”,其中独享型ELB需选择“应用型(HTTP/HTTPS)”或“网络型(TCP/UDP/TLS)&应用型(HTTP/HTTPS)”,否则监听器端口将无法启用HTTP/HTTPS。 创建方式:本文中以选择已有ELB为例进行说明,关于自动创建的配置参数请参见表1。 端口配置: 协议:请选择TCP协议,选择UDP协议将无法使用HTTP/HTTPS。 服务端口:Service使用的端口,端口范围为1-65535。 容器端口:工作负载程序实际监听的端口,需用户确定。例如nginx默认使用80端口。 监听器前端协议:本例中Service使用HTTP/2需选择开启HTTPS。当选择独享型负载均衡器类型时,需包含“应用型(HTTP/HTTPS)”方可支持配置HTTP/HTTPS。 监听器配置: SSL解析方式: 单向认证:仅进行服务器端认证。如需认证客户端身份,请选择双向认证。 双向认证:双向认证需要负载均衡实例与访问用户互相提供身份认证,从而允许通过认证的用户访问负载均衡实例,后端服务器无需额外配置双向认证。 CA证书:SSL解析方式选择“双向认证”时需要添加CA证书,用于认证客户端身份。CA证书又称客户端CA公钥证书,用于验证客户端证书的签发者;在开启HTTPS双向认证功能时,只有当客户端能够出具指定CA签发的证书时,HTTPS连接才能成功。 服务器证书:使用HTTPS协议时需要选择一个服务器证书。如果当前无可选证书,需前往弹性负载均衡控制台进行创建,详情请参见创建证书。 SNI:选择添加SNI证书,证书中必须包含域名。如果当前无可选证书,需前往弹性负载均衡控制台进行创建,详情请参见创建证书。 高级配置:单击“添加自定义容器网络配置”,选择“开启HTTP/2”,并将状态设置为“开启”。 图1 开启HTTP/2 单击“确定”,创建Service。
  • HPA工作原理 HPA(Horizontal Pod Autoscaler)是用来控制Pod水平伸缩的控制器,HPA周期性检查Pod的度量数据,计算满足HPA资源所配置的目标数值所需的副本数量,进而调整目标资源(如Deployment)的replicas字段。 想要做到自动弹性伸缩,先决条件就是能感知到各种运行数据,例如集群节点、Pod、容器的CPU、内存使用率等等。而这些数据的监控能力Kubernetes也没有自己实现,而是通过其他项目来扩展Kubernetes的能力,CCE提供Prometheus和Metrics Server插件来实现该能力: Prometheus是一套开源的系统监控报警框架,能够采集丰富的Metrics(度量数据),目前已经基本是Kubernetes的标准监控方案。 Metrics Server是Kubernetes集群范围资源使用数据的聚合器。Metrics Server从kubelet公开的Summary API中采集度量数据,能够收集包括了Pod、Node、容器、Service等主要Kubernetes核心资源的度量数据,且对外提供一套标准的API。 使用HPA(Horizontal Pod Autoscaler)配合Metrics Server可以实现基于CPU和内存的自动弹性伸缩,再配合Prometheus还可以实现自定义监控指标的自动弹性伸缩。 HPA主要流程如图1所示。 图1 HPA流程图
共100000条