华为云用户手册

  • 不符合策略实例的资源定义 ingress配置的hostname是空白,不符合策略实例。 apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: wildcard-ingress spec: rules: - host: '' http: paths: - pathType: Prefix path: "/" backend: service: name: example port: number: 80 apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: wildcard-ingress spec: rules: # Omitted host field counts as a wildcard too - http: paths: - pathType: Prefix path: "/" backend: service: name: example port: number: 80 ingress配置的hostname是包含通配符*,不符合策略实例。 apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: wildcard-ingress spec: rules: - host: '*.example.com' http: paths: - pathType: Prefix path: "/" backend: service: name: example port: number: 80
  • 策略实例示例 示例展示了该策略定义的生效类型。 apiVersion: constraints.gatekeeper.sh/v1beta1 kind: K8sBlockWildcardIngress metadata: name: block-wildcard-ingress spec: match: kinds: - apiGroups: ["extensions", "networking.k8s.io"] kinds: ["Ingress"]
  • 获取本地集群KubeConfig文件 KubeConfig是Kubernetes集群中组织有关集群、用户、命名空间和身份认证机制信息的配置文件,Kubectl使用KubeConfig来获取集群的信息并与API server进行通信。 获取本地集群的KubeConfig需要使用ucs-ctl工具,安装步骤如下: 使用ucs-ctl获取集群名称。 $ ./ucs-ctl get cluster 使用ucs-ctl导出指定集群的KubeConfig。 $ ./ucs-ctl get kubeconfig -c test-redhat86 -o kubeconfig 可以使用ucs-ctl get kubeconfig -h查看获取KubeConfig所使用到的参数。 -c, --cluster:指定待导出KubeConfig的集群名。 -e, --eip:指定API server的eip。 -o, --output:指定KubeConfig导出文件名。 父主题: KubeConfig
  • 监控 在此处,您可以方便地查看工作负载在近1小时、近8小时、近24小时以及自定义时间段内各维度资源的使用情况。如需查看更多监控信息,请单击“查看全部仪表盘”,跳转至“仪表盘”页面,相应指导请参见仪表盘。 CPU 单位时间内负载CPU平均使用情况。 图5 CPU 内存 单位时间内负载内存平均使用情况。 图6 内存 网络 容器网络流量,用于监控容器的网络负载情况,以及容器之间的网络通信情况。 图7 网络 网络丢包率 数据包丢失部分与所传数据包总数的比值。 图8 网络丢包率 CPU受限(CPU Throttled) 负载的容器的生命周期中度过的受限的CPU周期总数与总周期数的比率。 图9 CPU受限(CPU Throttled) Pod CPU使用率 单位时间内Pod CPU使用情况。 图10 Pod CPU使用率 Pod内存使用率 单位时间内Pod内存使用情况。 图11 Pod内存使用率 Pod状态趋势 实时监控负载Pod状态。 图12 Pod状态趋势 Pod数量变化趋势 负载已分配的容器组数量。 图13 Pod数量变化趋势
  • Pod列表 Pod列表中包含了实例名称、状态、命名空间、实例IP、所在节点、重启次数、CPU申请/限制、内存申请/限制,以及CPU和内存使用率等详细信息。 图4 Pod列表 您可以通过在列表上方按照实例名称、状态、命名空间、实例IP和所在节点进行筛选,快速找到需要的实例。在列表的右上角,您可以单击按钮来导出全部实例数据,或者选择部分实例进行导出,此时仅导出所选中的数据。导出的文件为“.xlsx”格式,文件命名中包含时间戳。 单击实例名称可以查看实例的详细监控数据。更多相关内容,请参见Pod。
  • 概览 单击工作负载名称,进入工作负载的“概览”页面,在这里,您可以方便地查看资源概况,包括负载状态、Pod数量(异常/总数)以及异常事件。此外,还可以浏览近一小时的监控概览,其中包括CPU使用率、内存使用率和网络流入/流出速率这些常见的监控指标。 图2 资源概况和监控概览 同时,概览页面还提供了Pod使用趋势功能,您可以从中了解工作负载中各Pod的CPU使用率、CPU使用量、内存使用率和内存使用量(在图表左上角切换对应指标),并且支持查看降序Top5和升序Top5数据(在图表右上角进行切换)。 图3 Pod使用趋势 如需了解更多指标,请前往监控页面查看。
  • 工作负载列表 工作负载列表中包含工作负载名称、状态、实例个数(正常/全部)、命名空间、镜像名称、CPU使用率,以及内存使用率等信息。 图1 工作负载列表 您可以利用页面右上角的命名空间和工作负载类型,以及列表上方的工作负载名称、状态和命名空间进行筛选,快速定位所需的工作负载。 在列表的右上角,您可以单击按钮来导出全部工作负载数据,或者选择部分工作负载进行导出,此时仅导出所选中的数据。导出的文件为“.xlsx”格式,文件命名中包含时间戳。
  • 用量统计 此处默认统计近1小时、近8小时和近24小时的各维度资源用量。如需查看更多监控信息,请单击“查看全部监控”,跳转至“仪表盘”页面,相应指导请参见仪表盘。 您可以将鼠标悬停在图表上,以便查看每分钟的监控数据。 CPU 单位时间内集群CPU使用情况的统计。 图4 CPU 内存 单位时间内集群内存使用情况的统计。 图5 内存 网络 容器网络流量,用于监控容器的网络负载情况,以及容器之间的网络通信情况。 图6 网络 网络丢包率 数据包丢失部分与所传数据包总数的比值。 图7 网络丢包率 PVC存储状态 PVC和PV的绑定情况。 图8 PVC存储状态 Pod状态趋势 实时监控集群Pod的状态。 图9 Pod状态趋势 Pod总重启次数趋势 近5分钟的集群的Pod重启次数总和。 图10 Pod总重启次数趋势 节点状态趋势 实时监控集群节点的状态。 图11 节点状态趋势
  • 不符合策略实例的资源定义 Servie类型是LoadBalancer,不符合策略实例。 apiVersion: v1 kind: Service metadata: name: my-service-disallowed spec: type: LoadBalancer ports: - port: 80 targetPort: 80 nodePort: 30007
  • 策略实例示例 apiVersion: constraints.gatekeeper.sh/v1beta1 kind: K8sBlockLoadBalancer metadata: name: block-load-balancer spec: match: kinds: - apiGroups: [""] kinds: ["Service"] excludedNamespaces: - "ingress-nginx-private" - "ingress-nginx-public"
  • 符合策略实例的资源定义 CPU和内存的Limit符合策略实例。 apiVersion: v1 kind: Pod metadata: name: opa-allowed labels: owner: me.agilebank.demo spec: containers: - name: opa image: openpolicyagent/opa:0.9.2 args: - "run" - "--server" - "--addr=localhost:8080" resources: limits: cpu: "100m" memory: "1Gi"
  • 策略实例示例 示例展示了匹配的对象的CPU最大为200m,内存最大为1G。 apiVersion: constraints.gatekeeper.sh/v1beta1 kind: K8sContainerLimits metadata: name: container-must-have-limits spec: match: kinds: - apiGroups: [""] kinds: ["Pod"] parameters: cpu: "200m" memory: "1Gi"
  • 不符合策略实例的资源定义 示例中hostPath中pathPrefix以/tmp开头,不符合策略实例。 apiVersion: v1 kind: Pod metadata: name: nginx-host-filesystem labels: app: nginx-host-filesystem-disallowed spec: containers: - name: nginx image: nginx volumeMounts: - mountPath: /cache name: cache-volume readOnly: true volumes: - name: cache-volume hostPath: path: /tmp # directory location on host
  • 符合策略实例的资源定义 示例中hostPath中pathPrefix以/foo开头,符合策略实例。 apiVersion: v1 kind: Pod metadata: name: nginx-host-filesystem labels: app: nginx-host-filesystem-disallowed spec: containers: - name: nginx image: nginx volumeMounts: - mountPath: /cache name: cache-volume readOnly: true volumes: - name: cache-volume hostPath: path: /foo/bar
  • 策略实例示例 以下策略实例展示了策略定义生效的资源类型,parameters中的allowedHostPaths指定了字段的值。 apiVersion: constraints.gatekeeper.sh/v1beta1 kind: K8sPSPHostFilesystem metadata: name: psp-host-filesystem spec: match: kinds: - apiGroups: [""] kinds: ["Pod"] parameters: allowedHostPaths: - readOnly: true pathPrefix: "/foo"
  • 通过控制台配置调度策略 在创建工作负载时,在“高级设置”中找到“调度策略”。 表1 节点亲和性设置 参数名 参数描述 必须满足 即硬约束,设置必须要满足的条件,对应于requiredDuringSchedulingIgnoredDuringExecution,多条规则间是一种“或”的关系,即只需要满足一条规则即会进行调度。 尽量满足 即软约束,设置尽量满足的条件,对应于preferredDuringSchedulingIgnoredDuringExecution,无论是满足其中一条或者是都不满足都会进行调度。 在“节点亲和性”、“工作负载亲和性”、“工作负载反亲和性”下单击添加调度策略。在弹出的窗口中可以直接添加策略、指定节点或指定可用区。 指定节点和指定可用区本质也是通过标签实现,只是通过控制台提供了更为便捷的操作。指定节点使用的是 kubernetes.io/hostname 标签,可用区使用的是 failure-domain.beta.kubernetes.io/zone 标签。 表2 调度策略设置 参数名 参数描述 标签名 对应节点的标签,可以使用默认的标签也可以用户自定义标签。 操作符 可以设置六种匹配关系(In, NotIn, Exists, DoesNotExist. Gt, and Lt)。 In:是否在标签值的列表中 NotIn:是否不在标签值的列表中 Exists:某个标签存在 DoesNotExist:某个标签不存在 Gt:标签的值大于某个值(字符串比较) Lt:标签的值小于某个值(字符串比较) 标签值 请填写标签值。 命名空间 仅支持在工作负载亲和/工作负载反亲和调度策略中使用。 指定调度策略生效的命名空间。 拓扑域 仅支持在工作负载亲和/工作负载反亲和调度策略中使用。 先圈定拓扑域(topologyKey)指定的范围,然后再选择策略定义的内容。 权重 仅支持在“尽量满足”策略中添加。
  • 策略实例示例 以下策略实例展示了策略定义生效的资源类型,parameters中的allowedSELinuxOptions定义了参数的允许列表。 apiVersion: constraints.gatekeeper.sh/v1beta1 kind: K8sPSPSELinuxV2 metadata: name: psp-selinux-v2 spec: match: kinds: - apiGroups: [""] kinds: ["Pod"] parameters: allowedSELinuxOptions: - level: s0:c123,c456 role: object_r type: svirt_sandbox_file_t user: system_u
  • 不符合策略实例的资源定义 示例中seLinuxOptions参数不在参数列表中,不符合策略实例。 apiVersion: v1 kind: Pod metadata: name: nginx-selinux-disallowed labels: app: nginx-selinux spec: containers: - name: nginx image: nginx securityContext: seLinuxOptions: level: s1:c234,c567 user: sysadm_u role: sysadm_r type: svirt_lxc_net_t
  • 符合策略实例的资源定义 示例中seLinuxOptions参数均在参数列表中,符合策略实例。 apiVersion: v1 kind: Pod metadata: name: nginx-selinux-allowed labels: app: nginx-selinux spec: containers: - name: nginx image: nginx securityContext: seLinuxOptions: level: s0:c123,c456 role: object_r type: svirt_sandbox_file_t user: system_u
  • 不同Region UCS华为云集群迁移流程 在华为云UCS管理的Kubernetes集群间进行迁移,将应用程序从一个地理区域迁移到另一个地理区域,以满足数据合规性、延迟和可用性等需求。迁移流程如图1所示。 图1 迁移流程 主要包含四个步骤: 集群评估 在这个阶段,您将根据源集群的现状来评估适合迁移的目标集群类型。UCS的kspider工具能够自动收集源集群的信息,包括Kubernetes版本、规模、工作负载、存储等数据,并根据收集到的数据为您提供推荐的目标集群信息。具体请参见集群评估。 数据迁移 在这个阶段,您将把镜像和相关依赖服务的数据迁移到目标Region。镜像的跨区域迁移可以使用容器镜像服务 SWR的“镜像同步”功能。 对于依赖服务的数据迁移,您可以查看华为云对应云产品的跨区域迁移指导来完成。具体请参见数据迁移。 应用备份 在这个阶段,您将对源Region集群中的应用进行备份。UCS的k8clone工具可以自动收集Kubernetes元数据,并将其以压缩包的形式保存到本地,从而实现集群中应用的备份。具体请参见应用备份。 应用迁移 在这个阶段,您将利用备份数据恢复的方法,将源Region集群中的应用迁移到目标Region集群。具体请参见应用迁移。 父主题: 不同Region UCS华为云集群迁移
  • 策略实例示例 以下策略实例展示了策略定义生效的资源类型,parameters定义范围为3到50。 apiVersion: constraints.gatekeeper.sh/v1beta1 kind: K8sReplicaLimits metadata: name: replica-limits spec: match: kinds: - apiGroups: ["apps"] kinds: ["Deployment"] parameters: ranges: - min_replicas: 3 max_replicas: 50
  • 符合策略实例的资源定义 Replicas设为了3,符合策略实例。 apiVersion: apps/v1 kind: Deployment metadata: name: allowed-deployment spec: selector: matchLabels: app: nginx replicas: 3 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80
  • 不符合策略实例的资源定义 Replicas设为了100,不符合策略实例。 apiVersion: apps/v1 kind: Deployment metadata: name: disallowed-deployment spec: selector: matchLabels: app: nginx replicas: 100 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80
  • 纳管节点 在安装节点使用./ucs-ctl config generator -t node -o node.csv命令生成节点安装配置文件。 将所需节点写入配置文件(使用英文逗号分隔)。配置文件参数如下: Node IP(添加节点IP) User(SSH连接用户) Password(SSH连接密码) 192.168.0.12 root root 执行节点安装命令./ucs-ctl create node -c [集群名称] -m node.csv,完成节点纳管。
  • 节点卸载 方法一: 在安装节点使用 ./ucs-ctl delete node -c [集群名称] -n [node ip1],[node ip2],… 使用-n指定具体IP,使用英文逗号分隔。 方法二: 在安装节点使用 ./ucs-ctl delete node -c [集群名称] -m node.csv 使用-m指定安装使用的节点文件,可以一次性卸载。 如果命令执行失败,请参考如何手动清理本地集群节点?处理。
  • 不符合策略实例的资源定义 示例中securityContext字段中的procMount为Unmasked,不符合策略实例。 apiVersion: v1 kind: Pod metadata: name: nginx-proc-mount-disallowed labels: app: nginx-proc-mount spec: containers: - name: nginx image: nginx securityContext: procMount: Unmasked
  • 策略实例示例 以下策略实例展示了策略定义生效的资源类型,parameters中指定了procMount的值为Default。 apiVersion: constraints.gatekeeper.sh/v1beta1 kind: K8sPSPProcMount metadata: name: psp-proc-mount spec: match: kinds: - apiGroups: [""] kinds: ["Pod"] parameters: procMount: Default
  • 符合策略实例的资源定义 示例中securityContext字段中的procMount为Default,符合策略实例。 apiVersion: v1 kind: Pod metadata: name: nginx-proc-mount-disallowed labels: app: nginx-proc-mount spec: containers: - name: nginx image: nginx securityContext: procMount: Default
  • 支持的巡检项 表1 CCE集群巡检项 巡检维度 集群巡检场景 巡检项 集群 集群资源规划能力 集群Master节点是否高可用 集群CPU的Request水位是否超过80% 集群CPU的Limit水位是否超过150% 集群内存的Request水位是否超过80% 集群内存的Limit水位是否超过150% 集群版本是否超期 集群运维能力 集群kube-prometheus-stack插件状态是否正常 集群log-agent插件状态是否正常 集群npd插件状态是否正常 集群配置 安全组配置是否正确 核心插件 coredns插件状态 coredns近24小时cpu使用率最大值是否超过80% coredns近24小时内存使用率最大值是否超过80% coredns近24小时是否存在域名解析失败请求次数 coredns近24小时P99请求时延是否超过5s coredns插件状态 everest插件状态 everest插件状态 everest近24小时CPU使用率最大值是否超过80% everest近24小时内存使用率最大值是否超过80% kube-prometheus-stack插件状态 kube-prometheus-stack近24小时CPU使用率最大值是否超过80% kube-prometheus-stack近24小时内存使用率最大值是否超过80% kube-prometheus-status插件状态 kube-prometheus-status近24小时是否出现OOM kube-prometheus-status在Server部署模式下,prometheus-server的PVC使用率是否超过80% log-agent插件状态 log-agent插件状态 LTS日志组、日志流是否创建成功 LTS日志组结构化是否创建成功 autoscaler插件状态 集群在开启节点池弹性扩缩容条件下,autoscaler插件状态是否可用 节点 节点状态 节点状态是否就绪 节点状态不可调度 节点kubelet状态 节点配置 节点内存的Requset是否超过80% 节点CPU的Request是否超过80% 节点内存的Limit检查是否超过150% 节点CPU的Limit检查是否超过150% 节点资源水位诊断 节点24小时内CPU使用率最大值是否超过80% 节点24小时内内存使用率最大值是否超过80% 节点磁盘使用率是否超过80% 节点PID使用量是否正常 节点24小时内是否发生OOM事件 负载 Pod状态 Pod状态检查 Pod负载状态 Pod在24小时内是否发生OOM Pod的24小时内CPU使用率最大值是否超过80% Pod的24小时内内存使用率最大值是否超过80% Pod配置 Pod中的容器是否配置Request Pod中的容器是否配置Limit Pod探针配置 Pod中的容器是否配置存活探针 Pod中的容器是否配置就绪探针 外部依赖 租户节点资源配额 租户云硬盘配额是否超过90% 租户ECS配额充足是否超过90% 表2 本地集群巡检项 巡检维度 集群巡检场景 巡检项 集群 集群资源规划能力 集群Master节点是否高可用 集群CPU的Request水位是否超过80% 集群CPU的Limit水位是否超过150% 集群内存的Request水位是否超过80% 集群内存的Limit水位是否超过150% 集群运维能力 集群kube-prometheus-stack插件状态是否正常 集群log-agent插件状态是否正常 核心插件 kube-prometheus-stack插件状态 kube-prometheus-stack近24小时CPU使用率最大值是否超过80% kube-prometheus-stack近24小时内存使用率最大值是否超过80% kube-prometheus-status插件状态 kube-prometheus-status近24小时是否出现OOM log-agent插件状态 log-agent插件状态 LTS日志组、日志流是否创建成功 LTS日志组结构化是否创建成功 节点 节点状态 节点状态是否就绪 节点状态不可调度 节点kubelet状态 节点配置 节点内存的Requset是否超过80% 节点CPU的Request是否超过80% 节点内存的Limit检查是否超过150% 节点CPU的Limit检查是否超过150% 节点资源水位诊断 节点24小时内CPU使用率最大值是否超过80% 节点24小时内内存使用率最大值是否超过80% 节点磁盘使用率是否超过80% 节点PID使用量是否正常 节点24小时内是否发生OOM事件 负载 Pod状态 Pod状态检查 Pod负载状态 Pod在24小时内是否发生OOM Pod的24小时内CPU使用率最大值是否超过80% Pod的24小时内内存使用率最大值是否超过80% Pod配置 Pod中的容器是否配置Request Pod中的容器是否配置Limit Pod探针配置 Pod中的容器是否配置存活探针 Pod中的容器是否配置就绪探针 外部依赖 租户节点资源配额 租户云硬盘配额是否超过90% 租户ECS配额充足是否超过90% 表3 附着集群、多云集群、伙伴云集群巡检项 巡检维度 集群巡检场景 巡检项 集群 集群资源规划能力 集群Master节点是否高可用 集群CPU的Request水位是否超过80% 集群CPU的Limit水位是否超过150% 集群内存的Request水位是否超过80% 集群内存的Limit水位是否超过150% 集群运维能力 集群kube-prometheus-stack插件状态是否正常 核心插件 kube-prometheus-stack插件状态 kube-prometheus-stack近24小时CPU使用率最大值是否超过80% kube-prometheus-stack近24小时内存使用率最大值是否超过80% kube-prometheus-status插件状态 kube-prometheus-status近24小时是否出现OOM 节点 节点状态 节点状态是否就绪 节点状态不可调度 节点kubelet状态 节点配置 节点内存的Requset是否超过80% 节点CPU的Request是否超过80% 节点内存的Limit检查是否超过150% 节点CPU的Limit检查是否超过150% 节点资源水位诊断 节点24小时内CPU使用率最大值是否超过80% 节点24小时内内存使用率最大值是否超过80% 节点磁盘使用率是否超过80% 节点PID使用量是否正常 节点24小时内是否发生OOM事件 负载 Pod状态 Pod状态检查 Pod负载状态 Pod在24小时内是否发生OOM Pod的24小时内CPU使用率最大值是否超过80% Pod的24小时内内存使用率最大值是否超过80% Pod配置 Pod中的容器是否配置Request Pod中的容器是否配置Limit Pod探针配置 Pod中的容器是否配置存活探针 Pod中的容器是否配置就绪探针 外部依赖 租户节点资源配额 租户云硬盘配额是否超过90% 租户ECS配额充足是否超过90%
  • 相关操作 通过UCS控制台,您还可以执行表2中的操作。 表2 相关操作 操作 说明 YAML创建 单击右上角“YAML创建”,可使用已有的YAML创建工作负载。 查看工作负载详情 单击已创建工作负载的名称,在“实例列表”页签下,可以查看Pod相关详情信息。 事件:可以设置查询条件,比如设置事件产生的时间段或搜索事件名称,查看相关事件。 容器列表:可以查看相应实例的容器名称、状态、镜像以及启停次数等。 查看YAML:可以查看相应实例的YAML文件。 编辑YAML 单击工作负载名称后的“编辑YAML”,可查看并编辑当前工作负载的YAML文件。 升级 单击工作负载名称后的“升级”。 更改工作负载信息,操作步骤与创建工作负载时一致。 单击“提交”,升级工作负载。 删除 单击工作负载名称后的“删除”,并单击“是”进行确认。 批量删除 勾选需要删除的工作负载。 单击左上角的“批量删除”。 单击“是”进行确认。
共100000条