华为云用户手册

  • 公共参数说明 表1 公共参数说明 参数 参数说明 检测周期(periodSeconds) 探针检测周期,单位为秒。 例如,设置为30,表示每30秒检测一次。 延迟时间(initialDelaySeconds) 延迟检查时间,单位为秒,此设置与业务程序正常启动时间相关。 例如,设置为30,表明容器启动后30秒才开始健康检查,该时间是预留给业务程序启动的时间。 超时时间(timeoutSeconds) 超时时间,单位为秒。 例如,设置为10,表明执行健康检查的超时等待时间为10秒,如果超过这个时间,本次健康检查就被视为失败。若设置为0或不设置,默认超时等待时间为1秒。 成功阈值(successThreshold) 探测失败后,将状态转变为成功所需要的最小连续成功次数。例如,设置为1时,表明健康检查失败后,健康检查需要连续成功1次,才认为工作负载状态正常。 默认值是 1,最小值是 1。 存活和启动探测的这个值必须是 1。 最大失败次数(failureThreshold) 当探测失败时重试的次数。 存活探测情况下的放弃就意味着重新启动容器。就绪探测情况下的放弃 Pod 会被打上未就绪的标签。 默认值是 3。最小值是 1。
  • 容器引擎和Kubelet共享磁盘空间说明 容器引擎和Kubelet共享磁盘空间即在节点上不再划分容器引擎 (Docker/Containerd) 和Kubelet组件的空间,二者共用磁盘空间。 容器引擎和Kubelet共享磁盘空间仅v1.21.10-r0、v1.23.8-r0、v1.25.3-r0及以上的集群支持。 容器存储Rootfs为OverlayFS类型时支持共享磁盘空间,Device Mapper类型不支持。 若您在集群中安装了npd插件,请将插件升级至1.18.10版本及以上,否则会产生误报警。 若您在集群中安装了log-agent插件,请将插件升级至1.3.0版本及以上,否则会影响日志采集。 若您在集群中安装了ICAgent,请将ICAgent升级至5.12.140版本及以上,否则会影响日志采集。查看或升级ICAgent版本请参见CCE接入。 图5 共享磁盘空间配置 对于共享磁盘空间的节点,容器存储Rootfs为OverlayFS类型。节点创建完成后,数据盘空间(以100G大小为例)不再划分容器引擎和容器镜像空间和Kubelet组件空间,均在/mnt/paas目录下,并通过两个文件系统区分: dockersys:/mnt/paas/runtime kubernetes:/mnt/paas/kubernetes/kubelet 图6 共享数据盘空间分配
  • 镜像回收策略说明 当容器引擎空间不足时,会触发镜像垃圾回收。 镜像垃圾回收策略只考虑两个因素:HighThresholdPercent 和 LowThresholdPercent。 磁盘使用率超过上限阈值(HighThresholdPercent,默认值为80%)将触发垃圾回收。 垃圾回收将删除最近最少使用的镜像,直到磁盘使用率满足下限阈值(LowThresholdPercent,默认值为70%)。
  • 容器引擎空间分配 对于容器引擎和Kubelet共享磁盘空间的节点,容器存储Rootfs为OverlayFS类型,数据盘空间分配详情请参见容器引擎和Kubelet共享磁盘空间说明。 对于容器引擎和Kubelet不共享磁盘空间的节点,数据盘根据容器存储Rootfs不同具有两种划分方式(以100G大小为例):Device Mapper类型和OverlayFS类型。不同操作系统对应的容器存储Rootfs请参见操作系统与容器存储Rootfs对应关系。 Device Mapper类型存储Rootfs 其中默认占90%的容器引擎和容器镜像空间又可分为以下两个部分: 其中/var/lib/docker用于Docker工作目录,默认占比20%,其空间大小 = 数据盘空间 * 90% * 20% thinpool用于存储容器镜像数据、镜像元数据以及容器使用的磁盘空间,默认占比为80%,其空间大小 = 数据盘空间 * 90% * 80% thinpool是动态挂载,在节点上使用df -h命令无法查看到,使用lsblk命令可以查看到。 图2 Device Mapper类型容器引擎空间分配 OverlayFS类型存储Rootfs 相比Device Mapper存储引擎,没有单独划分thinpool,容器引擎和容器镜像空间(默认占90%)都在/var/lib/docker目录下。 图3 OverlayFS类型容器引擎空间分配
  • 设置数据盘空间分配 在创建节点时,您需要配置节点数据盘,您可单击“展开高级配置”,自定义节点数据盘的空间分配。 图1 设置数据盘空间分配 容器引擎空间分配: 指定磁盘空间:CCE将数据盘空间默认划分为两块,一块用于存放容器引擎 (Docker/Containerd) 工作目录、容器镜像的数据和镜像元数据;另一块用于Kubelet组件和EmptyDir临时存储等。容器引擎空间的剩余容量将会影响镜像下载和容器的启动及运行。 容器引擎和容器镜像空间(默认占90%):用于容器运行时工作目录、存储容器镜像数据以及镜像元数据。 Kubelet组件和EmptyDir临时存储(默认占10%):用于存储Pod配置文件、密钥以及临时存储EmptyDir等挂载数据。 共享磁盘空间:v1.21.10-r0、v1.23.8-r0、v1.25.3-r0及之后版本的集群中,CCE使用的数据盘支持采用容器引擎和Kubelet共享磁盘空间的方式,即不再划分容器引擎 (Docker/Containerd) 和Kubelet组件的空间。 Pod容器空间分配:即容器的basesize设置,每个工作负载下的容器组 Pod 占用的磁盘空间设置上限(包含容器镜像占用的空间)。合理的配置可避免容器组无节制使用磁盘空间导致业务异常。建议此值不超过容器引擎空间的 80%。该参数与节点操作系统和容器存储Rootfs相关,部分场景下不支持设置。详情请参见操作系统与容器存储Rootfs对应关系。 写入模式: 线性:线性逻辑卷是将一个或多个物理卷整合为一个逻辑卷,实际写入数据时会先往一个基本物理卷上写入,当存储空间占满时再往另一个基本物理卷写入。 条带化:有两块以上数据盘时才可支持选择条带化模式。创建逻辑卷时指定条带化,当实际写入数据时会将连续数据分成大小相同的块,然后依次存储在多个物理卷上,实现数据的并发读写从而提高读写性能。条带化模式的存储池不支持扩容。
  • 操作系统与容器存储Rootfs对应关系 表1 CCE集群节点操作系统与容器引擎对应关系 操作系统 容器存储Rootfs 自定义Pod容器空间(basesize) CentOS 7.x v1.19.16以下版本集群使用Device Mapper v1.19.16及以上版本集群使用OverlayFS Rootfs为Device Mapper且容器引擎为Docker时支持,默认值为10G。 Rootfs为OverlayFS时不支持。 EulerOS 2.3 Device Mapper 仅容器引擎为Docker时支持,默认值为10G。 EulerOS 2.5 Device Mapper 仅容器引擎为Docker时支持,默认值为10G。 EulerOS 2.8 v1.19.16-r2以下版本集群使用Device Mapper v1.19.16-r2及以上版本集群使用OverlayFS Rootfs为Device Mapper且容器引擎为Docker时支持,默认值为10G。 Rootfs为OverlayFS且容器引擎为Docker时支持,默认值为不限制。 EulerOS 2.9 OverlayFS 仅v1.19.16、v1.21.3、v1.23.3及以上的集群版本支持,默认值为不限制。 v1.19.16、v1.21.3、v1.23.3以前的集群版本不支持。 EulerOS 2.10 OverlayFS 集群版本为v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0以下时,仅容器引擎为Docker时支持,默认值为不限制。 集群版本为v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0及以上时,Docker和containerd均支持,默认值为不限制。 Ubuntu 18.04 OverlayFS 不支持。 Huawei Cloud EulerOS 1.1 OverlayFS 不支持。 Huawei Cloud EulerOS 2.0 OverlayFS 集群版本为v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0以下时,仅容器引擎为Docker时支持,默认值为不限制。 集群版本为v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0及以上时,Docker和containerd均支持,默认值为不限制。 表2 CCE Turbo 集群节点操作系统与容器引擎对应关系 操作系统 容器存储Rootfs 自定义Pod容器空间(basesize) CentOS 7.x OverlayFS 不支持。 Ubuntu 18.04 OverlayFS 不支持。 EulerOS 2.9 弹性云服务器-虚拟机使用OverlayFS 弹性云服务器-物理机使用Device Mapper Rootfs为OverlayFS且仅容器引擎为Docker时支持,默认值为不限制。集群版本为v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0及以上时,Docker和containerd均支持。 Rootfs为Device Mapper且容器引擎为Docker时支持,默认值为10G。 Huawei Cloud EulerOS 1.1 OverlayFS 不支持。 Huawei Cloud EulerOS 2.0 OverlayFS 集群版本为v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0以下时,仅容器引擎为Docker时支持,默认值为不限制。 集群版本为v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0及以上时,Docker和containerd均支持,默认值为不限制。
  • 管理内核参数配置 CCE Autopilot是云容器引擎服务推出的Serverless版集群,同物理机系统内核隔离且互不影响。对于资深业务部署场景,内核参数调优是比较通用的方式。在安全范围内,CCE Autopilot服务允许客户根据Kubernetes社区推荐的方案,通过Pod的安全上下文(Security Context)对内核参数进行配置,极大提升用户业务部署的灵活性。如果你对securityContext概念不够熟悉,更多信息可阅读Security Context。 在 Linux 中,最通用的内核参数修改方式是通过sysctl接口进行配置。在Kubernetes中,也是通过Pod的sysctl安全上下文(Security Context)对内核参数进行配置,如果你对sysctl概念不够熟悉,可阅读在 Kubernetes 集群中使用 sysctl。安全上下文(Security Context)作用于同一个Pod内的所有容器。 CCE Autopilot服务支持修改的非安全的sysctl参数范围如下: kernel.shm*, kernel.msg*, kernel.sem, fs.mqueue.*, net.* 为了避免破坏操作系统的稳定性,请你在了解变更后果之后再修改sysctl参数。 有命名空间的sysctl参数,在未来的Linux内核版本中,可能会发生变化。 由于非安全的sysctl参数其本身具有不稳定性,在使用非安全的 sysctl 参数时可能会导致一些严重问题, 如容器的错误行为,用户需自行承担风险。 以下示例中,使用Pod SecurityContext来对两个sysctl参数kernel.msgmax和net.core.somaxconn进行设置。 apiVersion: v1 kind: Pod metadata: name: sysctls-context-example spec: securityContext: sysctls: - name: kernel.msgmax value: "65536" - name: net.core.somaxconn value: "1024" ... 进入容器确认配置生效: kubectl exec -it podname -c container-1 -- /bin/sh 父主题: 工作负载
  • 指标清单 Pod视图使用的指标清单如下: 表4 Pod视图指标清单 指标 指标类型 说明 kube_pod_container_status_running gauge 容器当前是否在运行中的状态 kube_pod_container_info gauge Pod中的容器信息 kube_pod_status_phase gauge Pod当前的阶段 kube_pod_container_status_restarts_total counter 容器重启次数 container_cpu_usage_seconds_total counter 容器CPU累计使用时间 kube_pod_container_resource_requests gauge 容器请求的请求资源数 container_spec_cpu_quota gauge 容器的CPU配额 container_memory_working_set_bytes gauge 容器内存使用量 container_spec_memory_limit_bytes gauge 容器内存限制量 container_cpu_cfs_throttled_periods_total counter 容器限制周期间隔数 container_cpu_cfs_periods_total counter 容器经过强制限制的周期间隔数 container_network_receive_bytes_total counter 容器接收字节的累计计数 container_network_transmit_bytes_total counter 容器传输字节的累计计数 container_network_receive_packets_total counter 容器接收数据包的累计计数 container_network_transmit_packets_total counter 容器传输数据包的累计计数 container_network_receive_packets_dropped_total counter 容器接收丢失的数据包的累计计数 container_network_transmit_packets_dropped_total counter 容器传输丢失的数据包的累计计数 container_fs_reads_total counter 容器已完成磁盘读取的累计计数 container_fs_writes_total counter 容器已完成磁盘写入的累计计数 container_fs_reads_bytes_total counter 容器读取的累计字节数 container_fs_writes_bytes_total counter 容器写入的累计在节数 container_fs_usage_bytes gauge 文件系统上容器已经使用的字节数 container_fs_limit_bytes gauge 文件系统上容器限制的字节数
  • 指标说明 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策略,不满足您的授权要求,可以创建自定义策略。自定义策略中可以添加的授权项(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操作的后端鉴权逻辑如下:
  • CCE集群权限与企业项目 CCE支持以集群为粒度,基于企业项目维度进行资源管理以及权限分配。 如下事项需特别注意: IAM项目是基于资源的物理隔离进行管理,而企业项目则是提供资源的全局逻辑分组,更符合企业实际场景,并且支持基于企业项目维度的IAM策略管理,因此推荐您使用企业项目。详细信息请参见如何创建企业项目。 IAM项目与企业项目共存时,IAM将优先匹配IAM项目策略、未决则匹配企业项目策略。 CCE集群基于已有基础资源(VPC)创建集群、节点时,请确保IAM用户在已有资源的企业项目下有相关权限,否则可能导致集群或者节点创建失败。 当资源不支持企业项目时,为企业项目授予该资源的权限将不会生效。 是否支持企业项目 资源名称 说明 支持企业项目的资源 cluster 集群 node 节点 nodepool 节点池 job 任务 tag 集群标签 addonInstance 插件实例 release Helm版本 storage 存储资源 不支持企业项目的资源 quota 集群配额 chart 模板 addonTemplate 插件模板
  • 系统策略 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:*:* - E CS (弹性云服务器)服务的所有权限。 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(云日志服务)的所有资源列表的查看权限。
  • 示例流程 图1 给用户授予CCE权限流程 创建用户组并授权。 在IAM控制台创建用户组,并授予CCE权限,例如CCE ReadOnlyAccess。 CCE服务按区域部署,在IAM控制台授予CCE权限时请选择“区域级项目”。 创建用户并加入用户组。 在IAM控制台创建用户,并将其加入1中创建的用户组。 用户登录并验证权限。 新创建的用户登录控制台,切换至授权区域,验证权限: 在“服务列表”中选择云容器引擎,进入CCE主界面尝试购买集群,如果无法无法成功操作(假设当前权限仅包含CCE ReadOnlyAccess),表示“CCE ReadOnlyAccess”已生效。 在“服务列表”中选择除云容器引擎外(假设当前策略仅包含CCE ReadOnlyAccess)的任一服务,若提示权限不足,表示“CCE ReadOnlyAccess”已生效。
  • 前提条件 给用户组授权之前,请您了解用户组可以添加的CCE系统策略,并结合实际需求进行选择,CCE支持的系统策略及策略间的对比,请参见CCE系统权限。若您需要对除CCE之外的其它服务授权,IAM支持服务的所有策略请参见系统权限。 拥有Security Administrator(IAM除切换角色外所有权限)权限的用户(如账号默认拥有此权限),才能看见CCE控制台权限管理页面当前用户组及用户组所拥有的权限。
  • 系统角色 角色是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上限。
  • 节点容器引擎为docker时采集不到容器文件日志 问题现象: 配置了容器文件路径采集,采集的目录不是挂载到容器内的,且节点容器引擎为docker,采集不到日志。 解决方案: 请检查工作负载所在节点的容器存储模式是否为Device Mapper,Device Mapper不支持采集容器内日志(创建日志策略时已提示此限制)。检查方法如下: 进入业务工作负载所在节点。 执行docker info | grep "Storage Driver"。 若返回的Storage Driver值为Device Mapper,则该日志无法采集。 图4 创建日志策略
  • 索引 如何关闭日志中心? 插件中除log-operator外组件均未就绪 log-operator标准输出报错 节点容器引擎为docker时采集不到容器文件日志 日志无法上报,otel组件标准输出报错:log's quota has full 采集容器内日志,且采集目录配置了通配符,日志无法采集 fluent-bit容器组一直重启 节点OS为Ubuntu 18.04时出现日志无法采集 采集Job日志时出现日志无法采集 云原生日志采集插件运行正常,部分日志策略未生效 log-agent-otel-collector组件出现OOM 节点负载过多,采集日志时缺少部分Pod信息 如何修改集群日志中心的日志存储时间?
  • 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个联系组。
共100000条