华为云用户手册

  • 方法三:配置Pod Monitor监控自定义指标 云原生监控插件提供了基于PodMonitor与ServiceMonitor配置指标采集任务的能力。Prometheus Operator将watch的PodMonitor的变化,通过Prometheus的reload机制,将Prometheus的采集任务热更新至Prometheus的实例中。 Prometheus Operator定义的CRD资源github地址:https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/charts/crds/crds。 部署示例应用如下: apiVersion: apps/v1 kind: Deployment metadata: name: nginx-test2 namespace: default spec: replicas: 1 selector: matchLabels: app: nginx-test2 template: metadata: labels: app: nginx-test2 spec: containers: - image: nginx:exporter # 替换为您上传到SWR的镜像地址 name: container-0 ports: - containerPort: 9113 # 指标暴露的端口号 name: nginx-test2 # 该名称是后续配置PodMonitor时相匹配的名称 protocol: TCP resources: limits: cpu: 250m memory: 300Mi requests: cpu: 100m memory: 100Mi - name: container-1 image: 'nginx/nginx-prometheus-exporter:0.9.0' command: - nginx-prometheus-exporter args: - '-nginx.scrape-uri=http://127.0.0.1:8080/stub_status' imagePullSecrets: - name: default-secret 配置Pod Monitor示例如下: apiVersion: monitoring.coreos.com/v1 kind: PodMonitor metadata: name: podmonitor-nginx # PodMonitor的名称 namespace: monitoring # 所属命名空间,建议使用monitoring spec: namespaceSelector: # 匹配工作负载所在的命名空间 matchNames: - default # 工作负载所属的命名空间 jobLabel: podmonitor-nginx podMetricsEndpoints: - interval: 15s path: /metrics # 工作负载暴露指标的路径 port: nginx-test2 # 工作负载暴露指标的port名称 tlsConfig: insecureSkipVerify: true selector: matchLabels: app: nginx-test2 # Pod携带的标签,能被选择器选中 查看指标,通过job名称可以判断出该指标是根据PodMonitor配置上报的。 nginx_connections_accepted{cluster="2048c170-8359-11ee-9527-0255ac1000cf", cluster_category="CCE", cluster_name="cce-test", container="container-0", endpoint="nginx-test2", instance="10.0.0.44:9113", job="monitoring/podmonitor-nginx", namespace="default", pod="nginx-test2-746b7f8fdd-krzfp", prometheus="monitoring/server"} 图4 查看监控指标
  • 方法四:配置Service Monitor监控自定义指标 云原生监控插件提供了基于PodMonitor与ServiceMonitor配置指标采集任务的能力。Prometheus Operator将watch的ServiceMonitor的变化,通过Prometheus的reload机制,将Prometheus的采集任务热更新至Prometheus的实例中。 Prometheus Operator定义的CRD资源github地址:https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/charts/crds/crds。 部署示例应用如下: apiVersion: apps/v1 kind: Deployment metadata: name: nginx-test3 namespace: default spec: replicas: 1 selector: matchLabels: app: nginx-test3 template: metadata: labels: app: nginx-test3 spec: containers: - image: nginx:exporter # 替换为您上传到SWR的镜像地址 name: container-0 resources: limits: cpu: 250m memory: 300Mi requests: cpu: 100m memory: 100Mi - name: container-1 image: 'nginx/nginx-prometheus-exporter:0.9.0' command: - nginx-prometheus-exporter args: - '-nginx.scrape-uri=http://127.0.0.1:8080/stub_status' imagePullSecrets: - name: default-secret 部署示例Service如下: apiVersion: v1 kind: Service metadata: name: nginx-test3 labels: app: nginx-test3 namespace: default spec: selector: app: nginx-test3 externalTrafficPolicy: Cluster ports: - name: cce-service-0 targetPort: 80 nodePort: 0 port: 8080 protocol: TCP - name: servicemonitor-ports protocol: TCP port: 9113 targetPort: 9113 type: NodePort 配置Service Monitor示例如下: apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: servicemonitor-nginx namespace: monitoring spec: # 配置service中的暴露指标的port的名称 endpoints: - path: /metrics port: servicemonitor-ports jobLabel: servicemonitor-nginx # 采集任务的作用范围,如果不配置,默认为default namespaceSelector: matchNames: - default selector: matchLabels: app: nginx-test3 查看指标,通过endpoint名称可以判断出该指标是根据ServiceMonitor配置上报的。 nginx_connections_accepted{cluster="2048c170-8359-11ee-9527-0255ac1000cf", cluster_category="CCE", cluster_name="cce-test", endpoint="servicemonitor-ports", instance="10.0.0.47:9113", job="nginx-test3", namespace="default", pod="nginx-test3-6f8bccd9-f27hv", prometheus="monitoring/server", service="nginx-test3"}
  • 约束与限制 使用Prometheus监控自定义指标时,应用程序需要提供监控指标接口,详情请参见Prometheus监控数据采集说明。 使用Pod/Service Annotations的方式暂不支持采集kube-system与monitoring命名空间下的指标,如需采集这两个命名空间下的指标,请通过Pod Monitor与Service Monitor的方式配置。 本文使用Nginx应用示例会拉取nginx/nginx-prometheus-exporter:0.9.0镜像,需要为应用部署的节点添加EIP或先将此镜像上传到SWR,以免部署应用失败。
  • Prometheus监控数据采集说明 Prometheus通过周期性的调用应用程序的监控指标接口(默认为“/metrics”)获取监控数据,应用程序需要提供监控指标接口供Prometheus调用,且监控数据需要满足Prometheus的规范,如下所示。 # TYPE nginx_connections_active gauge nginx_connections_active 2 # TYPE nginx_connections_reading gauge nginx_connections_reading 0 Prometheus提供了各种语言的客户端,客户端具体请参见Prometheus CLIENT LIBRARIES,开发Exporter具体方法请参见WRITING EXPORTERS。Prometheus社区提供丰富的第三方exporter可以直接使用,具体请参见EXPORTERS AND INTEGRATIONS。
  • 使用CloudShell连接集群 CloudShell是一款用于管理与运维云资源的网页版Shell工具,CCE支持使用CloudShell连接集群,如图1所示,单击“命令行工具”即可在CloudShell中使用kubectl访问集群。 CloudShell中kubectl证书有效期为1天,从云容器引擎重新跳转可以重置有效期。 CloudShell基于VPCEP实现,在CloudShell中使用kubectl访问集群需要在集群控制节点的安全组(安全组名称:集群名称-cce-control-随机数)中放通如下网段访问5443端口。5443端口默认对所有网段放通,如果您对安全组做过加固,当出现在CloudShell中无法访问集群时,请检查5443端口是否放通了198.19.0.0/16网段。 集群必须安装CoreDNS才能使用CloudShell。 当前仅北京一、北京四、上海一、上海二、广州、贵阳一和乌兰察布一支持使用CloudShell登录容器。 CloudShell暂不支持委托账号和子项目。 图1 CloudShell 图2 在CloudShell中使用kubectl
  • 约束与限制 “节点访问 ( NodePort )”默认为VPC内网访问,如果需要使用弹性IP通过公网访问该服务,请提前在集群的节点上绑定弹性IP。 创建Service后,如果服务亲和从集群级别切换为节点级别,连接跟踪表将不会被清理,建议用户创建Service后不要修改服务亲和属性,如需修改请重新创建Service。 CCE Turbo集群中,仅当Service的后端对接使用主机网络(HostNetwork)的Pod时,亲和级别支持配置为节点级别。 VPC网络模式下,当某容器A通过NodePort类型服务发布时,且服务亲和设置为节点级别(即externalTrafficPolicy为local),部署在同节点的容器B将无法通过节点IP+NodePort访问容器A。 v1.21.7及以上的集群创建的NodePort类型服务时,节点上的NodePort端口默认不会用netstat显示:如果集群转发模式为iptables,可使用iptables -t nat -L查看端口;如果集群转发模式为IPVS,可使用ipvsadm -Ln查看端口。
  • 创建NodePort类型Service 登录CCE控制台,单击集群名称进入集群。 在左侧导航栏中选择“服务”,在右上角单击“创建服务”。 设置集群内访问参数。 Service名称:自定义服务名称,可与工作负载名称保持一致。 访问类型:选择“节点访问”。 命名空间:工作负载所在命名空间。 服务亲和:详情请参见服务亲和(externalTrafficPolicy)。 集群级别:集群下所有节点的IP+节点端口均可以访问到此服务关联的负载,服务访问会因路由跳转导致一定性能损失,且无法获取到客户端源IP。 节点级别:只有通过负载所在节点的IP+节点端口才可以访问此服务关联的负载,服务访问没有因路由跳转导致的性能损失,且可以获取到客户端源IP。 选择器:添加标签,Service根据标签选择Pod,填写后单击“确认添加”。也可以引用已有工作负载的标签,单击“引用负载标签”,在弹出的窗口中选择负载,然后单击“确定”。 IPv6:默认不开启,开启后服务的集群内IP地址(ClusterIP)变为IPv6地址,具体请参见如何通过CCE搭建IPv4/IPv6双栈集群?。该功能仅在1.15及以上版本的集群创建时开启了IPv6功能才会显示。 端口配置: 协议:请根据业务的协议类型选择。 服务端口:Service使用的端口,端口范围为1-65535。 容器端口:工作负载程序实际监听的端口,需用户确定。例如nginx默认使用80端口。 节点端口:即NodePort,建议选择“自动生成”;也可以指定端口,默认范围为30000-32767。 单击“确定”,创建Service。
  • CCE支持的权限管理能力 CCE的权限管理包括“集群权限”和“命名空间权限”两种能力,能够从集群和命名空间层面对用户组或用户进行细粒度授权,具体解释如下: 集群权限:是基于IAM系统策略的授权,可以通过用户组功能实现IAM用户的授权。用户组是用户的集合,通过集群权限设置可以让某些用户组操作集群(如创建/删除集群、节点、节点池、模板、插件等),而让某些用户组仅能查看集群。 集群权限涉及CCE非Kubernetes API,支持IAM细粒度策略、企业项目管理相关能力。 命名空间权限:是基于Kubernetes RBAC(Role-Based Access Control,基于角色的访问控制)能力的授权,通过权限设置可以让不同的用户或用户组拥有操作不同Kubernetes资源的权限。同时CCE基于开源能力进行了增强,可以支持基于IAM用户或用户组粒度进行RBAC授权、IAM token直接访问API进行RBAC认证鉴权。 命名空间权限涉及CCE Kubernetes API,基于Kubernetes RBAC能力进行增强,支持对接IAM用户/用户组进行授权和认证鉴权,但与IAM细粒度策略独立。 CCE的权限可以从使用的阶段分为两个阶段来看,第一个阶段是创建和管理集群的权限,也就是拥有创建/删除集群、节点等资源的权限。第二个阶段是使用集群Kubernetes资源(如工作负载、Service等)的权限。 图1 权限示例图 清楚了集群权限和命名空间权限后,您就可以通过这两步授权,做到精细化的权限控制。
  • 集群权限(IAM授权)与命名空间权限(Kubernetes RBAC授权)的关系 拥有不同集群权限(IAM授权)的用户,其拥有的命名空间权限(Kubernetes RBAC授权)不同。表1给出了不同用户拥有的命名空间权限详情。 表1 不同用户拥有的命名空间权限 用户类型 1.13及以上版本的集群 拥有Tenant Administrator权限的用户(例如账号) 全部命名空间权限 拥有CCE Administrator权限的IAM用户 全部命名空间权限 拥有CCE FullAccess或者CCE ReadOnlyAccess权限的IAM用户 按Kubernetes RBAC授权 拥有Tenant Guest权限的IAM用户 按Kubernetes RBAC授权
  • IAM支持的授权项 策略包含系统策略和自定义策略,如果系统策略不满足授权要求,管理员可以创建自定义策略,并通过给用户组授予自定义策略来进行精细的访问控制。策略支持的操作与API相对应,授权项列表说明如下: 权限:允许或拒绝某项操作。 对应API接口:自定义策略实际调用的API接口。 授权项:自定义策略中支持的Action,在自定义策略中的Action中写入授权项,可以实现授权项对应的权限功能。 依赖的授权项:部分Action存在对其他Action的依赖,需要将依赖的Action同时写入授权项,才能实现对应的权限功能。 IAM项目(Project)/企业项目(Enterprise Project):自定义策略的授权范围,包括IAM项目与企业项目。授权范围如果同时支持IAM项目和企业项目,表示此授权项对应的自定义策略,可以在IAM和企业管理两个服务中给用户组授权并生效。如果仅支持IAM项目,不支持企业项目,表示仅能在IAM中给用户组授权并生效,如果在企业管理中授权,则该自定义策略不生效。关于IAM项目与企业项目的区别,详情请参见:IAM与企业管理的区别。 “√”表示支持,“x”表示暂不支持。 云容器引擎(CCE)支持的自定义策略授权项如下所示: 表2 Cluster 权限 对应API接口 授权项(Action) IAM项目(Project) 企业项目 (Enterprise Project) 获取指定项目下的集群 GET /api/v3/projects/{project_id}/clusters cce:cluster:list √ √ 获取指定的集群 GET /api/v3/projects/{project_id}/clusters/{cluster_id} cce:cluster:get √ √ 创建集群 POST /api/v3/projects/{project_id}/clusters cce:cluster:create √ √ 更新指定的集群 PUT /api/v3/projects/{project_id}/clusters/{cluster_id} cce:cluster:update √ √ 删除集群 DELETE /api/v3/projects/{project_id}/clusters/{cluster_id} cce:cluster:delete √ √ 升级集群 POST /api/v2/projects/:projectid/clusters/:clusterid/upgrade cce:cluster:upgrade √ √ 唤醒集群 POST /api/v3/projects/{project_id}/clusters/{cluster_id}/operation/awake cce:cluster:start √ √ 休眠集群 POST /api/v3/projects/{project_id}/clusters/{cluster_id}/operation/hibernate cce:cluster:stop √ √ 变更集群规格 POST /api/v2/projects/{project_id}/clusters/:clusterid/resize cce:cluster:resize √ √ 获取集群证书 POST /api/v3/projects/{project_id}/clusters/{cluster_id}/clustercert cce:cluster:get √ √ 表3 Node 权限 对应API接口 授权项 IAM项目(Project) 企业项目 (Enterprise Project) 获取集群下所有节点 GET /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes cce:node:list √ √ 获取指定的节点 GET /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes/{node_id} cce:node:get √ √ 创建节点 POST /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes cce:node:create √ √ 说明: 使用企业项目授权创建节点需额外添加evs:quota:get的全局权限。 更新指定的节点 PUT /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes/{node_id} cce:node:update √ √ 删除节点 DELETE /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes/{node_id} cce:node:delete √ √ 表4 Job 权限 对应API接口 授权项 IAM项目(Project) 企业项目 (Enterprise Project) 获取任务信息 GET /api/v3/projects/{project_id}/jobs/{job_id} cce:job:get √ √ 列出所有任务 GET /api/v2/projects/{project_id}/jobs cce:job:list √ √ 删除所有任务或删除单个任务 DELETE /api/v2/projects/{project_id}/jobs DELETE /api/v2/projects/{project_id}/jobs/{job_id} cce:job:delete √ √ 表5 Nodepool 权限 对应API接口 授权项 IAM项目(Project) 企业项目 (Enterprise Project) 获取集群下所有节点池 GET /api/v3/projects/{project_id}/clusters/{cluster_id}/nodepools cce:nodepool:list √ √ 获取节点池 GET /api/v3/projects/{project_id}/clusters/{cluster_id}/nodepools/{nodepool_id} cce:nodepool:get √ √ 创建节点池 POST /api/v3/projects/{project_id}/clusters/{cluster_id}/nodepools cce:nodepool:create √ √ 更新节点池信息 PUT /api/v3/projects/{project_id}/clusters/{cluster_id}/nodepools/{nodepool_id} cce:nodepool:update √ √ 删除节点池 DELETE /api/v3/projects/{project_id}/clusters/{cluster_id}/nodepools/{nodepool_id} cce:nodepool:delete √ √ 表6 Chart 权限 对应API接口 授权项 IAM项目(Project) 企业项目 (Enterprise Project) 更新模板 PUT /v2/charts/{id} cce:chart:update √ × 上传模板 POST /v2/charts cce:chart:upload √ × 列出所有模板 GET /v2/charts cce:chart:list √ × 获取模板信息 GET /v2/charts/{id} cce:chart:get √ × 删除模板 DELETE /v2/charts/{id} cce:chart:delete √ × 表7 Release 权限 对应API接口 授权项 IAM项目(Project) 企业项目 (Enterprise Project) 更新升级模板实例 PUT /v2/releases/{name} cce:release:update √ √ 列出所有模板实例 GET /v2/releases cce:release:list √ √ 创建模板实例 POST /v2/releases cce:release:create √ √ 获取模板实例信息 GET /v2/releases/{name} cce:release:get √ √ 删除模板实例 DELETE /v2/releases/{name} cce:release:delete √ √ 表8 Storage 权限 对应API接口 授权项 IAM项目(Project) 企业项目 (Enterprise Project) 创建PersistentVolumeClaim POST /api/v1/namespaces/{namespace}/cloudpersistentvolumeclaims cce:storage:create √ √ 删除PersistentVolumeClaim DELETE /api/v1/namespaces/{namespace}/cloudpersistentvolumeclaims/{name} cce:storage:delete √ √ 列出所有磁盘 GET /storage/api/v1/namespaces/{namespace}/listvolumes cce:storage:list √ √ 表9 Addon 权限 对应API接口 授权项 IAM项目(Project) 企业项目 (Enterprise Project) 创建插件实例 POST /api/v3/addons cce:addonInstance:create √ √ 获取插件实例 GET /api/v3/addons/{id}?cluster_id={cluster_id} cce:addonInstance:get √ √ 列出所有插件实例 GET /api/v3/addons?cluster_id={cluster_id} cce:addonInstance:list √ √ 删除插件实例 DELETE /api/v3/addons/{id}?cluster_id={cluster_id} cce:addonInstance:delete √ √ 更新升级插件实例 PUT /api/v3/addons/{id} cce:addonInstance:update √ √ 表10 Quota 权限 对应API接口 授权项 IAM项目(Project) 企业项目 (Enterprise Project) 查询配额详情 GET /api/v3/projects/{project_id}/quotas cce:quota:get √ √
  • 联邦用户支持说明 IAM支持基于SAML、OIDC协议的单点登录,如果您已经有自己的企业管理系统,同时您的用户需要使用您账号内的云服务资源,您可以使用IAM的身份提供商功能,实现用户使用企业管理系统账号单点登录,这一过程称之为联邦身份认证。 通过联邦身份认证访问的用户称为联邦用户,联邦用户相当于IAM用户。 联邦用户使用CCE时需要注意如下两点。 用户创建CCE集群时,会在集群中默认为该用户创建一个cluster-admin权限(管理员权限),联邦用户由于每次登录注销都会改变用户ID,所以在CCE控制台权限管理处,权限用户会显示已删除,请勿删除该权限,否则会导致鉴权失败。此种情况下建议在CCE为某个用户组创建cluster-admin权限,将联邦用户加入此用户组。 联邦用户不支持创建永久访问密钥AK/SK,在需要使用AK/SK的场景(如创建OBS类型PV/PVC时),只能由账号或是实体IAM用户创建密钥,共享给联邦用户。由于密钥表示用户所拥有的权限,因此建议由与联邦用户同在一个用户组的实体IAM用户创建并分享密钥。
  • kubectl权限说明 您可以通过kubectl访问集群的Kubernetes资源,那kubectl拥有哪些Kubernetes资源的权限呢? kubectl访问CCE集群是通过集群上生成的配置文件(kubeconfig.json)进行认证,kubeconfig.json文件内包含用户信息,CCE根据用户信息的权限判断kubectl有权限访问哪些Kubernetes资源。即哪个用户获取的kubeconfig.json文件,kubeconfig.json就拥有哪个用户的信息,这样使用kubectl访问时就拥有这个用户的权限。而用户拥有的权限就是表1所示的权限。
  • 扩展网段规划说明 在添加扩展网段前,需做好网段规划,避免造成网段冲突。注意以下几点: 集群所在VPC下所有子网(包括扩展网段子网)不能和容器网段、服务网段冲突。 扩展网段选择10.0.0.0/8、172.16.0.0/12、192.168.0.0/16可能与集群Master分配的IP冲突,尽量避免选择这三个网段作为扩展网段。 同VPC的非集群内ECS,如果需要和集群互访,访问会做SNAT, Pod源地址是节点IP而非Pod IP。 如果扩展网段没添加过集群节点,那扩展网段的ECS不能访问集群内Pod;扩展网段添加集群节点后,扩展网段的ECS可以访问集群内Pod。
  • 命名空间使用实践 按照不同环境划分命名空间 一般情况下,工作负载发布会经历开发环境、联调环境、测试环境,最后到生产环境的过程。这个过程中不同环境部署的工作负载相同,只是在逻辑上进行了定义。分为两种做法: 分别创建不同集群。 不同集群之间,资源不能共享。同时,不同环境中的服务互访需要通过负载均衡才能实现。 不同环境创建对应命名空间。 同个命名空间下,通过服务名称(Service name)可直接访问。跨命名空间的可以通过服务名称、命名空间名称访问。 例如下图,开发环境/联调环境/测试环境分别创建了命名空间。 图1 不同环境创建对应命名空间 按照应用划分命名空间 对于同个环境中,应用数量较多的情况,建议进一步按照工作负载类型划分命名空间。例如下图中,按照APP1和APP2划分不同命名空间,将不同工作负载在逻辑上当做一个工作负载组进行管理。且同一个命名空间内的工作负载可以通过服务名称访问,不同命名空间下的通过服务名称、命名空间名称访问。 图2 按照工作负载划分命名空间
  • 健康概况 资源健康概况 资源健康概况涵盖了节点、工作负载和Pod三类资源中异常资源所占比例,以及命名空间的总数,以便及时发现和解决业务异常。 控制面健康概况 除了控制面组件和Master节点的异常占比,控制面资源概况中还提供了API Server的总QPS和请求错误率指标。作为集群的API服务提供者,控制面API Server的异常可能会导致整个集群无法访问,同时也会影响依赖API Server的工作负载的正常运行,QPS和请求错误率可以帮助您快速识别和修复问题。 图2 健康概况
  • 资源消耗Top统计 在资源消耗Top统计中,CCE服务会将CPU使用率和内存使用率排名前五的节点、无状态负载、有状态负载和Pod纳入统计范围,以帮助您识别资源消耗“大户”。如果您需要查看全部数据,可前往节点、工作负载或Pod页面。 图3 资源消耗Top统计 监控名词解释: CPU使用率 节点CPU使用率 = 节点的CPU非空闲时间所占的平均比例。 工作负载CPU使用率 = 工作负载各个Pod中CPU使用率的平均值 Pod CPU使用率 = Pod实际使用的CPU核数 / 业务容器CPU核数限制值之和(未配置限制值时采用节点总量) 内存使用率 节点内存使用率 = 节点的内存使用量除以节点的内存总量。 工作负载内存使用率 = 工作负载各个Pod中内存使用率的平均值 Pod内存使用率 = Pod实际使用的物理内存 / 业务容器物理内存限制值之和(未配置限制值时采用节点总量)
  • 数据面监控 此处默认统计近1小时、近8小时和近24小时的各维度资源用量。如需查看更多监控信息,请单击“查看全部监控”,跳转至“仪表盘”页面,相应指导请参见使用仪表盘。 您可以将鼠标悬停在图表上,以便查看每分钟的监控数据。 CPU:单位时间内集群CPU使用情况的统计。 内存:单位时间内集群内存使用情况的统计。 PVC存储状态:PVC和PV的绑定情况。 Pod数量状态趋势:实时监控集群Pod的状态。 Pod总重启次数趋势:近5分钟的集群的Pod重启次数总和。 节点状态趋势:实时监控集群节点的状态。
  • 指标清单 节点视图使用的指标清单如下: 表4 节点指标清单 指标 类型 说明 kube_pod_container_resource_limits gauge 容器请求的限制资源数 kube_pod_status_phase gauge Pod当前阶段 kube_node_status_allocatable gauge 节点可分配的资源总数 kube_pod_container_resource_requests gauge 容器请求的请求资源数 node_memory_MemAvailable_bytes gauge 节点内存可用字节数 node_memory_MemTotal_bytes gauge 节点内存总字节数 node_cpu_seconds_total counter 在不同模式下节点累计CPU花费的时间 container_cpu_usage_seconds_total counter 容器CPU累计使用时间 container_memory_rss gauge RSS内存,即常驻内存集。是分配给进程使用的实际物理内存字节数,不是磁盘上缓存的虚机内存。 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_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 容器写入的累计在节数
  • 指标说明 Node视图暴露的指标如下: 图1 Node资源指标 表1 Node资源指标说明 指标名称 单位 说明 节点CPU使用率 百分比 节点CPU使用率 CPURequests水位 百分比 节点CPU Requests占节点CPU容量的百分比 CPULimits水位 百分比 节点CPU Limits占节点CPU容量的百分比 内存使用率 百分比 节点内存使用率 内存Requests水位 百分比 节点内存Requests占节点内存容量的百分比 内存Limits水位 百分比 节点内存Limits占节点内存容量的百分比 PodCPU使用率 百分比 节点上Pod的CPU使用率 内存使用量 字节 节点上Pod的内存使用量 图2 节点网络指标 表2 节点网络指标说明 指标名称 单位 说明 网络接收速率 字节/秒 节点每秒接收的字节数 网络发送速率 字节/秒 节点每秒发送的字节数 网络接收速率(Pod) 字节/秒 节点上的Pod每秒接收的字节数 网络发送速率(Pod) 字节/秒 节点上的Pod每秒发送的字节数 接收数据包速率 个/秒 节点上的Pod每秒接收的数据包个数 发送数据包速率 个/秒 节点上的Pod每秒发送的数据包个数 丢包速率(接收) 个/秒 节点上的Pod每秒接收丢失的数据包个数 丢包速率(发送) 个/秒 节点上的Pod每秒发送丢失的数据包个数 图3 节点磁盘指标 表3 节点磁盘指标说明 指标名称 单位 说明 节点磁盘读写IO速率(读+写) 次数/秒 节点磁盘每秒读写IO次数 节点磁盘读写吞吐量(读+写) 字节/秒 节点中Pod每秒读写磁盘字节数
  • 使用kubectl命令登录容器 使用kubectl连接集群,详情请参见通过kubectl连接集群。 执行以下命令,查看已创建的Pod。 kubectl get pod 示例输出如下: NAME READY STATUS RESTARTS AGE nginx-59d89cb66f-mhljr 1/1 Running 0 11m 查询该Pod中的容器名称。 kubectl get po nginx-59d89cb66f-mhljr -o jsonpath='{range .spec.containers[*]}{.name}{end}{"\n"}' 示例输出如下: container-1 执行以下命令,登录到nginx-59d89cb66f-mhljr这个Pod中名为container-1的容器。 kubectl exec -it nginx-59d89cb66f-mhljr -c container-1 -- /bin/sh 如需退出容器,可执行exit命令。
  • 解决方案 使用kubectl连接集群。 执行以下命令获取插件实例详情。 kubectl get ds nvidia-driver-installer -nkube-system -oyaml 请检查UpdateStrategy字段值是否被修改为OnDelete,应改回RollingUpdate。 请检查NVIDIA_DRIVER_DOWNLOAD_URL字段是否与插件页面的GPU插件详情地址不一致,若不一致,请在页面上修改。 图1 插件页面编辑GPU插件
  • 指标清单 主机视图使用的指标清单如下: 表2 指标说明 指标名称 类型 说明 node_cpu_seconds_total Counter 节点不同模式下花费的CPU秒 node_load1 Gauge 1分钟内CPU平均负载,反映了CPU资源的竞争情况。 值小于1时,说明部分CPU资源在处理请求。 值等于1时,说明所有的CPU资源都在处理请求。 值大于1时,说明有部分线程在等待处理。 node_load15 Gauge 15分钟内CPU平均负载 node_memory_MemTotal_bytes Gauge 节点内存总量 node_memory_MemAvailable_bytes Gauge 节点可用内存量 node_disk_written_bytes_total Gauge 节点磁盘写入量 node_disk_read_bytes_total Gauge 节点磁盘读取量 node_filesystem_size_bytes Gauge 节点文件系统大小 node_filesystem_avail_bytes Gauge 节点可用文件系统大小 node_disk_io_time_seconds_total Counter I/O操作所花费的总秒数 node_sockstat_TCP_alloc Gauge 已分配的TCP套接字数 node_sockstat_UDPLITE_inuse Gauge 已使用的UDPLITE套接字 node_filefd_maximum Gauge 文件描述符统计信息:最大值。 node_filefd_allocated Gauge 文件描述符统计信息:已分配。 node_sockstat_sockets_used Gauge 已使用的IPv4套接字数 node_filesystem_readonly Gauge 文件系统只读状态 node_disk_reads_completed_total Counter 磁盘读取完成的次数 node_disk_read_time_seconds_total Counter 磁盘读取完成的次数的总耗时 node_disk_io_time_weighted_seconds_total Counter 节点磁盘IO时间加权值。该值越大,表示节点的磁盘性能越好。 node_procs_blocked Gauge 等待I/O完成的阻塞进程数 node_nf_conntrack_entries Gauge 连接跟踪表的最大大小
  • 指标说明 主机视图暴露的指标具体说明如下: 图1 主机资源指标 表1 视图说明 图表名称 单位 说明 CPU使用率 百分比 每个CPU核的使用率 平均负载 / 平均负载反映了CPU资源的竞争情况 值小于1时,说明部分CPU资源在处理请求。 值等于1时,说明所有的CPU资源都在处理请求。 值大于1时,说明有部分线程在等待处理。 内存使用量 字节 不同模式的内存使用情况 内存使用率 百分比 主机内存使用率 磁盘写入速率 字节/秒 不同的磁盘的写入速率 磁盘读取速率 字节/秒 不同的磁盘的读取速率 磁盘空间使用 字节 磁盘可用量和已使用量 磁盘空间使用率 百分比 不同设备的磁盘使用率 磁盘IO延迟(秒) 秒 磁盘IO延迟 TCP连接 个 TCP连接数 alloc:已分配(已建立、已申请到sk_buff)的TCP套接字数量。 inuse:正在使用(侦听)的TCP套接字数量。 orphan:已分配(已建立、已申请到sk_buff)的TCP套接字数量。 tw:等待关闭的TCP连接数。 UDP使用情况 个 UDP使用情况 liteInuse:正在使用的UDP-Lite套接字数量。 inuse:正在使用的UDP套接字数量。 useMemory:UPD缓冲区使用量。 最大文件描述符 EB:10的18次方 最大文件描述符数 已使用文件描述符 个 当前已分配使用的文件描述符数量 Socket使用情况 个 Socket使用情况 socketsUsed:使用的所有协议套接字总量。 fragInuse:正在使用的Frag套接字数量。 fragMemroy:Frag缓冲区使用量。 rawInuse:正在使用的Raw套接字数量。 文件系统异常 / 文件系统状态 readonly:文件系统只读 deviceError:文件系统错误 磁盘读写速率 次/秒 磁盘每秒进行的读写次数 磁盘读和写延迟(秒) 秒 磁盘读写时延 IO队列数 / 磁盘设备平均IO队列长度,节点磁盘IO时间加权值。该值越大,表示节点的磁盘性能越好。 进程状态 个 处于不同状态的进程数量 连接跟踪表条目数 个 已分配:连接跟踪表当前已分配的条目数 总容量:连接跟踪表的最大条目数
  • 创建ClusterIP类型Service 登录CCE控制台,单击集群名称进入集群。 在左侧导航栏中选择“服务”,在右上角单击“创建服务”。 设置集群内访问参数。 Service名称:自定义服务名称,可与工作负载名称保持一致。 访问类型:选择“集群内访问”。 命名空间:工作负载所在命名空间。 选择器:添加标签,Service根据标签选择Pod,填写后单击“确认添加”。也可以引用已有工作负载的标签,单击“引用负载标签”,在弹出的窗口中选择负载,然后单击“确定”。 端口配置: 协议:请根据业务的协议类型选择。 服务端口:Service使用的端口,端口范围为1-65535。 容器端口:工作负载程序实际监听的端口,需用户确定。例如nginx默认使用80端口。 单击“确定”,创建Service。
  • 使用限制 单账号跟踪的事件可以通过云审计控制台查询。多账号的事件只能在账号自己的事件列表页面去查看,或者到组织追踪器配置的OBS桶中查看,也可以到组织追踪器配置的CTS/system日志流下面去查看。 用户通过云审计控制台只能查询最近7天的操作记录。如果需要查询超过7天的操作记录,您必须配置转储到对象存储服务(OBS),才可在OBS桶里面查看历史文件。否则,您将无法追溯7天以前的操作记录。 云上操作后,1分钟内可以通过云审计控制台查询管理类事件操作记录,5分钟后才可通过云审计控制台查询数据类事件操作记录。
  • 导入存储池 创建节点时导入 在创建节点时,在存储配置中可以为节点添加数据盘,选择“作为持久存储卷”导入存储池,详情请参见创建节点。 手动导入 如果创建节点时没有导入持久存储卷,或当前存储卷容量不够,可以进行手动导入。 前往ECS控制台为节点添加SCSI类型的磁盘。操作步骤详情请参见新增磁盘。 登录CCE控制台,单击集群名称进入集群。 在左侧导航栏中选择“存储”,并切换至“存储池”页签。 查看已添加磁盘的节点,选择“导入持久卷”,导入时可以选择写入模式。 如存储池列表中未找到手动挂载的磁盘,请耐心等待1分钟后刷新列表。 线性:线性逻辑卷是将一个或多个物理卷整合为一个逻辑卷,实际写入数据时会先往一个基本物理卷上写入,当存储空间占满时再往另一个基本物理卷写入。 条带化:创建逻辑卷时指定条带化,当实际写入数据时会将连续数据分成大小相同的块,然后依次存储在多个物理卷上,实现数据的并发读写从而提高读写性能。多块卷才能选择条带化。
  • 注意事项 删除集群时,纳管以及包周期节点将会从集群中移除并重装系统,节点原有的登录密码将会失效,请重新设置节点密码。 删除集群不会删除集群下包周期的资源,相关资源在集群删除后将会继续计费,请妥善处理。 删除集群会删除集群下的节点(纳管节点不会被删除)、节点挂载的数据盘、工作负载与服务,相关业务将无法恢复。在执行操作前,请确保相关数据已完成备份或者迁移,删除完成后数据无法找回,请谨慎操作。 部分不是在CCE中创建的资源不会删除: 纳管的节点(仅删除在CCE中创建的节点) Service和Ingress关联的ELB实例(仅删除自动创建的ELB实例) 手动创建PV关联的云存储/导入的云存储(仅删除PVC自动创建的云存储) 在集群非运行状态(例如冻结、不可用状态)时删除集群,会残留存储、网络等关联资源,请妥善处理。 集群版本为v1.13.10及之前版本时,请勿在ELB服务手动修改监听器名称和后端服务器名称,否则删除集群时将会有资源残留。
  • 删除集群 处于休眠状态的集群无法直接删除,请将集群唤醒后重试。 登录CCE控制台,在左侧导航栏中选择“集群管理”。 找到需要删除的集群,查看集群的更多操作,并单击“删除集群”。 图1 删除集群 在弹出的“删除集群”窗口中,根据系统提示,勾选删除集群时需要释放的资源。 删除集群节点,可支持以下操作选项: 保留:保留服务器、系统盘和数据盘数据。 删除:删除服务器(包周期节点不支持此选项,请进行手动退订)。 重置:保留并重置服务器,系统盘和数据盘数据不保留。 删除集群下工作负载挂载的云存储。 选择删除集群中存储卷绑定的底层云存储资源时,存在如下约束: 底层存储依据存储卷指定的回收策略进行删除。例如,存储卷指定回收策略为Retain,则在删除集群后底层存储会保留。 对象存储桶下存在大量文件(超过1000)时,请先手动清理桶内文件后再执行集群删除操作。 删除集群下负载均衡ELB等网络资源(仅删除自动创建的ELB资源)。 删除云日志服务下的Master节点日志的日志流(仅删除自动创建的日志流) 如未勾选删除日志流,已有的日志将不会被删除,因此可能会产生LTS日志费用,详情请参考价格计算器。 请输入“DELETE”,单击“是”,开始执行删除集群操作。 删除集群需要花费1~3分钟,请耐心等候。
  • 退订/释放集群 退订/释放集群仅退订订单关联的资源,非关联资源不会处理,相关资源会继续计费,请妥善处理。 对于包周期集群,如果过保留期会自动释放,集群下的节点如果同时到期会一并释放,节点如果未到期CCE不会对其做任何操作,相关数据会继续保留,相关资源会继续计费。请关注您账号下到期未续费集群,及时续费,防止节点被重装导致数据丢失。 若订单中存在主从关系的资源,需分别进行退订。 资源退订,相关注意事项请参见退订规则说明。 如果您正在退订使用中的资源,请仔细确认资源信息和退款信息,资源退订后将无法恢复。若您要保留资源,仅退订未使用的续费周期,请退订续费周期。 如果您退订的资源与其他包年/包月资源关联,退订操作可能会影响关联资源的正常使用,请谨慎操作。 如果已与其他按需资源关联,退订操作完成后,关联的按需资源可以正常使用并计费。 如果您本次退订属于非五天无理由退订,需收取手续费和已消费金额,已使用的代金券和折扣券不退还。 登录CCE控制台,在左侧导航栏中选择“集群管理”。 找到需要退订的集群,查看集群的更多操作,并单击“退订”或“释放”。 图2 集群退订 在弹出的“退订”或“释放”页面中,勾选要释放的资源。 删除集群节点,可支持以下操作选项: 保留:保留服务器、系统盘和数据盘数据。 删除:删除服务器(包周期节点不支持此选项,请进行手动退订)。 重置:保留并重置服务器,系统盘和数据盘数据不保留。 删除集群下工作负载挂载的云存储。 选择删除集群中存储卷绑定的底层云存储资源时,存在如下约束: 底层存储依据存储卷指定的回收策略进行删除。例如,存储卷指定回收策略为Retain,则在删除集群后底层存储会保留。 对象存储桶下存在大量文件(超过1000)时,请先手动清理桶内文件后再执行集群删除操作。 删除集群下负载均衡ELB等网络资源(仅删除自动创建的ELB资源)。 删除云日志服务下的Master节点日志的日志流(仅删除自动创建的日志流) 如未勾选删除日志流,已有的日志将不会被删除,因此可能会产生LTS日志费用,详情请参考价格计算器。 单击“是”,开始退订/释放集群。退订/释放集群需要花费1~3分钟,请耐心等候。
  • 公共参数说明 表1 公共参数说明 参数 参数说明 检测周期(periodSeconds) 探针检测周期,单位为秒。 例如,设置为30,表示每30秒检测一次。 延迟时间(initialDelaySeconds) 延迟检查时间,单位为秒,此设置与业务程序正常启动时间相关。 例如,设置为30,表明容器启动后30秒才开始健康检查,该时间是预留给业务程序启动的时间。 超时时间(timeoutSeconds) 超时时间,单位为秒。 例如,设置为10,表明执行健康检查的超时等待时间为10秒,如果超过这个时间,本次健康检查就被视为失败。若设置为0或不设置,默认超时等待时间为1秒。 成功阈值(successThreshold) 探测失败后,将状态转变为成功所需要的最小连续成功次数。例如,设置为1时,表明健康检查失败后,健康检查需要连续成功1次,才认为工作负载状态正常。 默认值是 1,最小值是 1。 存活和启动探测的这个值必须是 1。 最大失败次数(failureThreshold) 当探测失败时重试的次数。 存活探测情况下的放弃就意味着重新启动容器。就绪探测情况下的放弃 Pod 会被打上未就绪的标签。 默认值是 3,最小值是 1。
共100000条