华为云用户手册

  • 配置域名 为应用添加域名访问时,必须确保您配置的域名已在域名服务商完成注册并备案,否则域名可能无法访问。 若您已有经过注册和备案的域名,请直接至3创建公网域名解析。 若您尚未注册域名,请先购买公网域名,并按照页面提示流程完成域名的备案、解析和相关配置。域名注册、备案流程如下。 购买公网域名。以ucsclub.cn为例。 若您尚未购买公网域名,请先购买公网域名。 若已购买,请执行2。 公网域名备案。 若您的公网域名尚未备案,请前往华为云备案中心处备案。 若您已经备案,请执行3。 公网域名解析。 若您尚未创建公网域名解析,请创建公网域名解析。 若您已经创建,请执行4。 配置域名。 选择已完成以上步骤的域名,单击“配置”。
  • 约束与限制 关闭监控前,请仔细阅读以下注意事项,避免数据丢失或者相关资源继续产生费用。 kube-prometheus-stack插件处于“安装中”、“升级中”、“删除中”和“回滚中”时不允许关闭监控。 kube-prometheus-stack插件处于“运行中”、“部分就绪”和“安装失败”时关闭监控:对于华为云集群,系统将会更新kube-prometheus-stack插件以关闭数据上报功能;对于本地集群和附着集群,系统将会卸载kube-prometheus-stack插件。 kube-prometheus-stack插件处于“回滚失败”、“不可用”、“安装失败”、“删除失败”和“未知”状态时,关闭监控将会卸载kube-prometheus-stack插件。 通过私网接入的本地集群和附着集群,关闭监控时会检查私网接入点(开启监控时创建的VPCEP终端节点和DNS内网域名)是否有其他集群在使用,若没有则会删除此私网接入点。 华为云集群使用云硬盘(csi-disk-topology)存储类型的PVC作为插件数据的临时存储,集群关闭监控后,命名空间monitoring下的PVC不会自动删除,为避免继续产生费用,请前往CCE控制台手动删除(需要先卸载kube-prometheus-stack插件,再删除)。
  • 查看集群内Pod详情 在Pod列表中,单击需要查看详情的实例名称,进入该实例的详情页面,通过切换“概览”、“容器列表”和“监控”页签查看相应内容。 表1 Pod详情页面 词条 词条描述 概览 单击实例名称,进入实例概览页。 资源概况:Pod状态、容器数量(异常/总数)以及异常事件。 监控概览:包括CPU使用率、内存使用率和网络流入/流出速率这些常见的监控指标。 图2 资源概况和监控概览 容器使用趋势:包括Pod中各容器的CPU使用率、CPU使用量、内存使用率和内存使用量(在图表左上角切换对应指标),并且支持查看降序Top5和升序Top5数据(在图表右上角进行切换)。 图3 容器使用趋势 容器列表 容器列表中包含了容器名称、状态、命名空间、重启次数,以及镜像等详细信息。 您可以通过在列表上方按照容器名称、状态和命名空间进行筛选,快速找到需要的容器。 在列表的右上角,您可以单击按钮来导出全部容器数据,或者选择部分容器进行导出,此时仅导出所选中的数据。导出的文件为“.xlsx”格式,文件命名中包含时间戳。 监控 在此处,您可以方便地查看实例在近1小时、近8小时、近24小时以及自定义时间段内各维度资源的使用情况。 如需查看更多监控信息,请单击“查看全部仪表盘”,跳转至“仪表盘”页面,相应指导请参见仪表盘。
  • 查看集群内Pod列表 容器组列表中包含实例名称、状态、命名空间、实例IP、所在节点、重启次数、CPU申请/限制、内存申请/限制、CPU使用率,以及内存使用率等信息。 图1 Pod列表页面 您可以利用页面左上方的命名空间,以及列表上方的实例名称、状态、实例IP和所在节点进行筛选,快速定位所需的实例。 在列表的右上角,您可以单击按钮来导出全部实例数据,或者选择部分实例进行导出,此时仅导出所选中的数据。导出的文件为“.xlsx”格式,文件命名中包含时间戳。
  • 操作场景 服务Operator是OSC管理的最大粒度实体,服务运行载体是一个Operator,当服务对应的服务实例首次安装时,容器集群中如果没有对应的服务Operator,OSC会自动安装。 OSC将在首次部署服务的集群中创建三个新的命名空间osc-global、osc-oc、osc-system,并运行Operator或Helm插件。例如,Redis服务将在osc-global命名空间中部署一个redis-operator插件,这个插件就是Redis服务的管理插件。
  • 准备网络环境 附着集群的数据接入方式支持公网接入和私网接入。 公网接入是通过公网Internet接入,要求集群能够访问公网,具有弹性灵活、成本低、易接入的优势。如果对网络质量没有要求,只想采用更简便的方式接入,那么公网接入是个不错的选择。 公网接入要求集群能够访问公网,请确保集群已符合此条件,否则会接入失败。 私网接入是通过云专线(DC)或虚拟专用网络(VPN)服务将第三方云网络与云上虚拟私有云(VPC)连通,并利用VPC终端节点通过内网与容器智能分析建立连接,具有高速、低时延、安全的优势。 图1 私网接入原理 因此,在开启之前,您需要准备满足一个云上虚拟私有云(VPC),并将第三方云厂商的网络环境与该VPC连通。VPC子网网段不能与第三方云中已使用的网络网段重叠,否则将无法接入集群,例如,第三方云中已使用的VPC子网为192.168.1.0/24,那么华为云VPC中不能使用192.168.1.0/24这个子网。 网络连通可以选用如下两种方案: 虚拟专用网络(VPN)方案:请参见通过VPN连接云下数据中心与云上VPC。 云专线(DC)方案:请参见用户通过单专线静态路由访问VPC或用户通过单专线BGP协议访问VPC。
  • 功能验证 登录UCS控制台。 如果是未加入舰队集群,直接单击集群名即可进入集群控制台。 如果是已加入容器舰队的集群,先进入对应容器舰队控制台,选择左侧 “集群管理”内的“容器集群”,再进入对应集群控制台。 左侧导航栏内选择“工作负载”,单击镜像创建。 选择可用镜像创建负载,并在“服务配置”中单击,添加一个ClusterIP类型的Service,具体操作请参见5工作负载服务配置。 左侧导航栏内选择“服务与路由”,单击“路由”,单击“创建路由”,选择刚刚所创建的ClusterIP类型的Service。路由配置相关操作请参见路由。 访问ingress服务,确认转发规则配置成功。 如果是使用LoadBalancer暴露的ingress服务,选择LoadBalancer的ingress服务进行集群外访问: 如果是使用NodePort暴露的ingress服务,选择任意节点+ingress svc端口进行集群外访问:
  • 安装Ingress-nginx 登录UCS控制台。 左侧导航栏内选择“云原生服务中心”,在“服务目录中”中搜索Ingress-nginx开源插件,单击进入插件详情。 图1 搜索Ingress-nginx 订阅Ingress-nginx后,单击“创建实例”,选择需要使用Ingress-nginx的集群。 如果是集群已安装Metallb,可以使用Metallb的负载均衡能力,将ingress-nginx服务暴露到集群外,直接根据页面引导进行安装。 如果集群未规划安装Metallb,则只能通过NodePort形式暴露ingress-nginx能力。 需要将.values.controller.service.type从LoadBalancer修改为NodePort后进行安装,如图2所示。 图2 参数修改
  • 查看集群内工作负载详情 在工作负载列表中,单击需要查看详情的工作负载名称,进入该工作负载的详情页面,通过切换“概览”、“Pod列表”和“监控”页签查看相应内容。 表1 工作负载详情页面 词条 词条描述 概览 单击工作负载名称,进入工作负载的“概览”页面。 资源概况:包括负载状态、Pod数量(异常/总数)以及异常事件。 监控概览:包括CPU使用率、内存使用率和网络流入/流出速率这些常见的监控指标。 图2 资源概况和监控概览 Pod使用趋势:包括工作负载中各Pod的CPU使用率、CPU使用量、内存使用率和内存使用量(在图表左上角切换对应指标),并且支持查看降序Top5和升序Top5数据(在图表右上角进行切换)。 图3 Pod使用趋势 Pod列表 Pod列表中包含了实例名称、状态、命名空间、实例IP、所在节点、重启次数、CPU申请/限制、内存申请/限制,以及CPU和内存使用率等详细信息。 您可以通过在列表上方按照实例名称、状态、命名空间、实例IP和所在节点进行筛选,快速找到需要的实例。 在列表的右上角,您可以单击按钮来导出全部实例数据,或者选择部分实例进行导出,此时仅导出所选中的数据。导出的文件为“.xlsx”格式,文件命名中包含时间戳。 单击实例名称可以查看实例的详细监控数据。更多相关内容,请参见查看集群内Pod情况。 监控 在此处,您可以方便地查看工作负载在近1小时、近8小时、近24小时以及自定义时间段内各维度资源的使用情况。 如需查看更多监控信息,请单击“查看全部仪表盘”,跳转至“仪表盘”页面,相应指导请参见仪表盘。
  • 查看集群内工作负载列表 工作负载列表中包含工作负载名称、状态、实例个数(正常/全部)、命名空间、镜像名称、CPU使用率,以及内存使用率等信息。 图1 工作负载列表页面 您可以利用页面右上角的命名空间和工作负载类型,以及列表上方的工作负载名称、状态和命名空间进行筛选,快速定位所需的工作负载。 在列表的右上角,您可以单击按钮来导出全部工作负载数据,或者选择部分工作负载进行导出,此时仅导出所选中的数据。导出的文件为“.xlsx”格式,文件命名中包含时间戳。
  • 不同规格的资源配额要求 安装kube-prometheus-stack插件时,需确保集群中有足够的CPU、内存等可调度资源。Agent模式默认规格的资源配额要求请参见表1,Server模式下不同插件规格的资源配额要求请参见表2。 表1 Agent模式默认规格的资源配额要求 插件规格 容器实例 CPU配额 内存配额 默认规格 prometheusOperator 申请:100m 限制:500m 申请:100Mi 限制:500Mi prometheus 申请:500m 限制:4 申请:1Gi 限制:8Gi kube-state-metrics 申请:200m 限制:500m 申请:200Mi 限制:500Mi nodeExporter 申请:200m 限制:500m 申请:200Mi 限制:1Gi grafana 申请:100m 限制:500m 申请:200Mi 限制:2Gi 表2 Server模式不同规格的资源配额要求 插件规格 容器实例 CPU配额 内存配额 演示规格(100容器以内) prometheusOperator 申请:200m 限制:500m 申请:200Mi 限制:500Mi prometheus 申请:500m 限制:2 申请:2Gi 限制:8Gi alertmanager 申请:200m 限制:1 申请:200Mi 限制:1Gi thanosSidecar 申请:100m 限制:1 申请:100Mi 限制:2Gi thanosQuery 申请:500m 限制:2 申请:500Mi 限制:4Gi adapter 申请:400m 限制:2 申请:400Mi 限制:1Gi kube-state-metrics 申请:200m 限制:500m 申请:200Mi 限制:500Mi nodeExporter 申请:200m 限制:500m 申请:200Mi 限制:1Gi grafana 申请:200m 限制:500m 申请:200Mi 限制:2Gi clusterProblemDetector 申请:100m 限制:200m 申请:200Mi 限制:400Mi 小规格(2000容器以内) prometheusOperator 申请:200m 限制:500m 申请:200Mi 限制:500Mi prometheus 申请:4 限制:8 申请:16Gi 限制:32Gi alertmanager 申请:500m 限制:1 申请:500Mi 限制:1Gi thanosSidecar 申请:500m 限制:1 申请:500Mi 限制:2Gi thanosQuery 申请:2 限制:4 申请:2Gi 限制:16Gi adapter 申请:2 限制:4 申请:4Gi 限制:16Gi kube-state-metrics 申请:500m 限制:1 申请:500Mi 限制:1Gi nodeExporter 申请:200m 限制:500m 申请:200Mi 限制:1Gi grafana 申请:200m 限制:500m 申请:200Mi 限制:2Gi clusterProblemDetector 申请:200m 限制:500m 申请:300Mi 限制:1Gi 中规格(5000容器以内) prometheusOperator 申请:500m 限制:1 申请:500Mi 限制:1Gi prometheus 申请:8 限制:16 申请:32Gi 限制:64Gi alertmanager 申请:500m 限制:1 申请:500Mi 限制:2Gi thanosSidecar 申请:1 限制:2 申请:1Gi 限制:4Gi thanosQuery 申请:2 限制:4 申请:2Gi 限制:16Gi adapter 申请:2 限制:4 申请:16Gi 限制:32Gi kube-state-metrics 申请:1 限制:2 申请:1Gi 限制:2Gi nodeExporter 申请:200m 限制:500m 申请:200Mi 限制:1Gi grafana 申请:200m 限制:500m 申请:200Mi 限制:2Gi clusterProblemDetector 申请:200m 限制:1 申请:400Mi 限制:2Gi 大规格(超过5000容器) prometheusOperator 申请:500m 限制:1 申请:500Mi 限制:2Gi prometheus 申请:8 限制:32 申请:64Gi 限制:128Gi alertmanager 申请:1 限制:2 申请:1Gi 限制:4Gi thanosSidecar 申请:2 限制:4 申请:2Gi 限制:8Gi thanosQuery 申请:2 限制:4 申请:2Gi 限制:32Gi adapter 申请:2 限制:4 申请:32Gi 限制:64Gi kube-state-metrics 申请:1 限制:3 申请:1Gi 限制:3Gi nodeExporter 申请:200m 限制:500m 申请:200Mi 限制:1Gi grafana 申请:200m 限制:500m 申请:200Mi 限制:2Gi clusterProblemDetector 申请:200m 限制:1 申请:400Mi 限制:2Gi
  • 插件简介 kube-prometheus-stack通过使用Prometheus Operator和Prometheus,提供简单易用的端到端Kubernetes集群监控能力,同时还具备自定义插件规格、对接Grafana、高可用、节点亲和等能力。 kube-prometheus-stack插件的核心组件包括prometheusOperator、prometheus、alertmanager、thanosSidecar、thanosQuery、adapter、kubeStateMetrics、nodeExporter、grafana。 prometheusOperator:根据自定义资源(Custom Resource Definition / CRDs)来部署和管理Prometheus Server,同时监控这些自定义资源事件的变化来做相应的处理,是整个系统的控制中心。 prometheus(Server):Operator根据自定义资源Prometheus类型中定义的内容而部署Prometheus Server集群,这些自定义资源可以看作是用来管理Prometheus Server集群的StatefulSets资源。 alertmanager:插件的告警中心,主要用于接收Prometheus发送的告警并通过去重、分组、分发等能力管理告警信息。 thanosSidecar:高可用场景和Prometheus运行在同一个Pod中,用于实现普罗指标数据的持久化存储。 thanosQuery:普罗高可用时PromQL查询的入口,能够对来自Store或Prometheus的相同指标进行重复数据删除。 adapter(custom-metrics-apiserver):将自定义指标聚合到原生的Kubernetes API Server。 kube-state-metrics:将Prometheus的metrics数据格式转换成Kubernetes API接口能识别的格式。kube-state-metrics组件在默认配置下,不采集Kubernetes资源的所有labels和annotation。如需采集,请参考如何修改kube-state-metrics组件的采集配置?章节进行配置。 nodeExporter:每个节点上均有部署,收集Node级别的监控数据。 grafana:可视化浏览普罗监控数据。Grafana会默认创建大小为5 GiB的存储卷,卸载插件时Grafana的存储卷不随插件被删除。 clusterProblemDetector:用于监控集群异常。
  • 查看/切换视图 选择一个容器舰队或者未加入舰队的集群。 图1 选择舰队或未加入舰队的集群 选择“仪表盘”页签,默认展示集群视图。 设置查看视图的相关参数。各个视图可供设置的参数不同,请参见表1。 设置视图的时间窗。 在页面右上角处,选择时间段,或者自定义时间,并单击刷新界面。 容器智能分析仪表盘提供了预置视图,您可单击视图名称边上的“切换视图”按钮,选择需要的视图查看监控数据。系统预置视图如表1所示。 表1 预置视图 视图名称 视图参数 视图中包含的监控指标 集群视图(默认视图) 集群 节点数/磁盘不可用节点数/不可用节点数 CPU/内存使用率 CPU/内存Requests水位 CPU/内存Limits水位 Pod/容器数 CPU/内存使用量 网络接收/发送速率 网络平均接收/发送速率 接收/发送数据包速率 丢包率(接收/发送) 磁盘IOPS(读+写) ThroughPut(读+写) APIServer视图 集群 实例 存活数 QPS 请求成功率(读) 处理中请求数 请求速率(读/写) 请求错误率(读/写) 请求时延(读/写)(99分位时延) 工作队列增加速率/深度 工作队列时延(99分位时延) 内存/CPU使用量 Go routine数 Pod视图 集群 命名空间 pod 容器数/运行中容器数 Pod状态 容器重启次数 CPU/内存使用量 CPU Throttling 网络接收/发送速率 接收/发送数据包速率 丢包率(接收/发送) 磁盘IOPS(读+写) ThroughPut(读+写) 文件系统使用率/使用量 主机视图 集群 节点 CPU/内存使用率 平均负载 内存使用量 磁盘写入/读取速率 磁盘空间使用 磁盘IO Node视图 集群 节点 CPU/内存使用率 CPU/内存Requests水位 CPU/内存Limits水位 内存使用量 网络接收/发送速率 接收/发送数据包速率(Pod) 接收/发送数据包速率 丢包率(接收/发送) 磁盘IOPS(读+写) ThroughPut(读+写) CoreDNS视图 集群 实例 请求速率(记录类型/区域/DO标志位) 请求数据包(UDP/TCP) 响应速率(响应状态码) 响应时延 响应数据包(UDP/TCP) 缓存大小 缓存命中率 PVC视图 集群 命名空间 PV PVC PV/PVC状态 PVC使用量/使用率 PVC inodes使用量/使用率 PVC每小时/每天/每周使用率 一周后PVC使用量 Kubelet 集群 实例 运行中Kubelet/Pod/容器 实际卷/期望卷/配置错误数量 操作速率/错误率/时延 Pod启动速率/时延(99分位) 存储操作速率/错误率/时延(99分位) 控制组管理器操作速率/时延(99分位) PLEG relist速率/间隔/时延(99分位) RPC速率 请求时延(99分位) 内存/CPU使用量 Go routine数 Prometheus 集群 job instance Target同步间隔 Target数 平均拉取间隔 拉取失败 Appended Samples Head中Series数/Chunks数 查询速率/阶段时延 Prometheus Remote Write 集群 实例 url Highest Timestamp In vs. Highest Timestamp Sent Rate5m Rate in vs. succeeded or dropped 5m 当前/最大/最小/期望分片数 分片容量 挂起样本数 TSDB/远程写入当前段 样本丢弃率/失败率/重试率 入队失败重试率 工作负载 集群 命名空间 类型 工作负载 CPU/内存使用量 网络接收/发送速率 网络平均接收/发送速率 接收/发送数据包速率 丢包率(接收/发送) XGPU视图 集群 集群--XGPU设备显存使用率 集群--XGPU设备算力使用率 节点--XGPU设备显存使用率 节点--XGPU设备算力使用率 节点--XGPU设备数量 节点--XGPU设备显存分配量 GPU卡--XGPU设备显存使用率 GPU卡--XGPU设备显存分配量 GPU卡--XGPU设备显存分配率 GPU卡--XGPU设备算力使用率 GPU卡--XGPU设备数量 GPU卡--调度策略 GPU卡--不健康的XGPU设备数量 容器显存分配量 容器算力使用率 容器显存使用量 容器显存使用率
  • 操作步骤 登录华为云控制台。 在左侧导航栏中选择“分布式云原生”,选择“配置管理”。 在右上角“添加集群”,选择需要启用配置管理功能的目标集群,单击确定。 在集群概览页,选择目标集群,单击“Gitops能力”,查看Gitops插件(名称:集群名称-FluxPlugin)是否安装成功。当插件部署状态显示运行中,表示插件已部署成功。 图2 集群概览页 选择“配置集合”页签,单击创建配置集合。 选择仓库源,如果已有仓库源请参考使用已有仓库源配置,如果需要创建新仓库源,请参考创建新仓库源。
  • 创建新仓库源 单击“创建新仓库源”输入仓库源名称、仓库源URL地址。 输入需要与其同步的代码库分支。 选择数据源验证,以及输入密钥。 选择公有类型的仓库无需进行身份验证,即可提供只读权限。 选择私有类型的仓库,则数据源验证可选择“选择集群secret”和“提供认证信息(SSH)”,两种方式都需要配置的秘钥进行身份验证。 仓库秘钥创建请参考秘钥。 仓库源创建完成后,在“自动同步策略”内输入“配置集合路径”,单击“下一步:信息确认”。 确认配置信息无误后,单击“创建配置集合”;如有问题,单击上一步进行修改。
  • 背景 Podinfo是一个微模型的Web应用程序,它展示了在Kubernetes中运行微服务的最佳实践,其主要用作于测试和研讨。本章将用podinfo源代码来做创建配置集合的示例。 为了可以更快的、更稳定的持续地交付软件、减少后续维护工作,所以将podinfo的源代码放入GitHub仓库,并通过创建配置集合的方式部署到集群中,通过GitOps能力实现软件自动化部署,具体请参考操作步骤。 创建podinfo源代码仓时,请先注册一个属于自己的GitHub账号,然后将podinfo所有代码fork到自己的GitHub仓库中。 在git仓库中定义交付资源清单文件时,不应包含敏感信息(如数据库连接密钥等)。相关敏感信息应以环境变量、加密存储的Secret等方式进行存储。 图1 Podinfo界面
  • 操作场景 健康检查是指容器运行过程中,根据用户需要,定时检查容器健康状况。若不配置健康检查,如果容器内应用程序异常,Pod将无法感知,也不会自动重启去恢复。最终导致虽然Pod状态显示正常,但Pod中的应用程序异常的情况。 Kubernetes提供了两种健康检查的探针: 存活探针:livenessProbe,用于检测容器是否正常,类似于执行ps命令检查进程是否存在。如果容器的存活检查失败,集群会对该容器执行重启操作;若容器的存活检查成功则不执行任何操作。 就绪探针:readinessProbe,用于检查用户业务是否就绪,如果未就绪,则不转发流量到当前实例。一些程序的启动时间可能很长,比如要加载磁盘数据或者要依赖外部的某个模块启动完成才能提供服务。这时候程序进程在,但是并不能对外提供服务。这种场景下该检查方式就非常有用。如果容器的就绪检查失败,集群会屏蔽请求访问该容器;若检查成功,则会开放对该容器的访问。
  • 公共参数说明 表1 公共参数说明 参数 参数说明 检测周期(periodSeconds) 探针检测周期,单位为秒。 例如,设置为30,表示每30秒检测一次。 延迟时间(initialDelaySeconds) 延迟检查时间,单位为秒,此设置与业务程序正常启动时间相关。 例如,设置为30,表明容器启动后30秒才开始健康检查,该时间是预留给业务程序启动的时间。 超时时间(timeoutSeconds) 超时时间,单位为秒。 例如,设置为10,表明执行健康检查的超时等待时间为10秒,如果超过这个时间,本次健康检查就被视为失败。若设置为0或不设置,默认超时等待时间为1秒。 成功阈值(successThreshold) 探测失败后,被视为成功的最小连续成功数。 默认值是 1,最小值是 1。 存活探测的这个值必须是 1。 最大失败次数(failureThreshold) 当探测失败时重试的次数。 存活探测情况下的放弃就意味着重新启动容器。就绪探测情况下的放弃 Pod 会被打上未就绪的标签。 默认值是 3。最小值是 1。
  • 检查方式 HTTP 请求检查 HTTP 请求方式针对的是提供HTTP/HTTPS服务的容器,集群周期性地对该容器发起HTTP/HTTPS GET请求,如果HTTP/HTTPS response返回码属于200~399范围,则证明探测成功,否则探测失败。使用HTTP请求探测必须指定容器监听的端口和HTTP/HTTPS的请求路径。 例如:提供HTTP服务的容器,HTTP检查路径为:/health-check;端口为:80;主机地址可不填,默认为容器实例IP,此处以172.16.0.186为例。那么集群会周期性地对容器发起如下请求:GET http://172.16.0.186:80/health-check。 图1 HTTP请求检查 TCP 端口检查 对于提供TCP通信服务的容器,集群周期性地对该容器建立TCP连接,如果连接成功,则证明探测成功,否则探测失败。选择TCP端口探测方式,必须指定容器监听的端口。 例如:有一个nginx容器,它的服务端口是80,对该容器配置了TCP端口探测,指定探测端口为80,那么集群会周期性地对该容器的80端口发起TCP连接,如果连接成功则证明检查成功,否则检查失败。 图2 TCP 端口检查 执行命令检查 命令检查是一种强大的检查方式,该方式要求用户指定一个容器内的可执行命令,集群会周期性地在容器内执行该命令,如果命令的返回结果是0则检查成功,否则检查失败。 对于上面提到的TCP端口检查和HTTP请求检查,都可以通过执行命令检查的方式来替代: 对于TCP端口探测,可以使用程序来对容器的端口进行connect,如果connect成功,脚本返回0,否则返回-1。 对于HTTP请求探测,可以使用脚本来对容器进行wget。 wget http://127.0.0.1:80/health-check 并检查response 的返回码,如果返回码在200~399 的范围,脚本返回0,否则返回-1。如下图: 图3 执行命令检查 必须把要执行的程序放在容器的镜像里面,否则会因找不到程序而执行失败。 如果执行的命令是一个shell脚本,由于集群在执行容器里的程序时,不在终端环境下,因此不能直接指定脚本为执行命令,需要加上脚本解析器。比如脚本是/data/scripts/health_check.sh,那么使用执行命令检查时,指定的程序应该是sh /data/scripts/health_check.sh。究其原因是集群在执行容器里的程序时,不在终端环境下。
  • YAML示例 apiVersion: v1 kind: Pod metadata: labels: test: liveness name: liveness-http spec: containers: - name: liveness image: nginx:alpine args: - /server livenessProbe: httpGet: path: /healthz port: 80 httpHeaders: - name: Custom-Header value: Awesome initialDelaySeconds: 3 periodSeconds: 3 readinessProbe: exec: command: - cat - /tmp/healthy initialDelaySeconds: 5 periodSeconds: 5
  • 注销集群 登录UCS控制台,在左侧导航栏中单击“容器舰队”。 选择“未加入舰队的集群”页签,在目标集群栏中单击右上角的按钮。 弹出“注销集群”对话框,仔细阅读注意事项,确认风险后单击“确定”。 (可选)对于附着集群来说,注销集群成功后,还需前往目标集群卸载代理组件。 kubectl -n kube-system delete deployments/proxy-agent secret/proxy-agent-cert (可选)对于本地集群来说,注销集群成功后,您可以手动执行卸载命令,在本地主机环境中删除集群,清理资源: ./ucs-ctl delete cluster [集群名称] 如果命令执行失败,请参考如何手动清理本地集群节点?处理。
  • 关联权限 登录UCS控制台,在左侧导航栏中选择“容器舰队”。 选择“未加入舰队的集群”页签,在目标集群栏中单击右上角的按钮。 图1 集群列表 在弹出的页面单击“关联权限”,打开“修改权限”页面,将已创建好的权限和集群的命名空间关联起来。 命名空间:支持“全部命名空间”和“指定命名空间”。全部命名空间包括当前集群已有的命名空间和集群后续新增的命名空间;“指定命名空间”即表示您自己选择命名空间的范围,UCS服务提供了几个常见的命名空间供您选择(如default、kube-system、kube-public),您也可以新增命名空间,但要自行确保新增的命名空间在集群中存在。 请注意,选择的命名空间仅对权限中命名空间级资源生效,不影响权限中的集群资源。关于命名空间级和集群级资源的介绍,请参见Kubernetes资源对象章节。 关联权限:从下拉列表中选择权限,支持一次性选择多个权限,以达到批量授权的目的。 如果针对不同命名空间,关联的权限不同(例如:为default命名空间关联readonly权限,为development命名空间关联develop权限),可以单击按钮添加多组授权关系。 单击“确定”,完成权限的关联。 如果后续需要修改集群的权限,采用同样的方法,重新选择命名空间和权限即可。
  • 操作步骤 登录UCS集群控制台。 如果是未加入舰队集群,直接单击集群名即可进入集群控制台。 如果是已加入容器舰队的集群,先进入对应容器舰队控制台,选择左侧 “集群管理”内的“容器集群”,再进入对应集群控制台。 左侧导航栏内选择“负载伸缩策略”,单击右上角的“创建 HPA 策略”。 填写待创建HPA策略的参数: 表1 HPA策略参数配置 参数 参数说明 策略名称 新建策略的名称,请自定义。 命名空间 请选择工作负载所在的命名空间。 关联工作负载 请选择要设置HPA 策略的工作负载。 实例范围 请输入最小实例数和最大实例数。 策略触发时,工作负载实例将在此范围内伸缩。 系统策略 指标:可选择“CPU利用率”或“内存利用率”。 说明: 利用率 = 工作负载容器组(Pod)的实际使用量 / 申请量 期望值:请输入期望资源平均利用率。 期望值表示所选指标的期望值,通过向上取整(当前指标值 / 期望值 × 当前实例数)来计算需要伸缩的实例数。 说明: HPA在计算扩容、缩容实例数时,会选择最近5分钟内实例数的最大值。 容忍范围:容忍度默认为0.1。指标处于范围内时不会触发伸缩,期望值必须在容忍范围之间。 当指标值大于缩容阈值且小于扩容阈值时,不会触发扩容或缩容。阈值仅在1.15及以上版本的集群中支持。 须知: 可以设置多条系统策略。
  • 前提条件 使用HPA前需要在集群内安装能够提供Metrics API的插件(详情请参见对Metrics API的支持): metrics-server:metrics-server从kubelet公开的Summary API中采集度量数据,提供基础资源使用指标,例如容器CPU和内存使用率。 为本地集群安装metrics-server,请参见metrics-server。 为其他集群安装metrics-server,请参见社区官方文档。对于附着集群,您也可安装对应厂商所提供的metric-server插件。 Prometheus:Prometheus是一套开源的系统监控报警框架,能够采集丰富的Metrics(度量数据),因此除基础资源指标外,Prometheus还支持提供自定义指标。
  • 配置项挂载 “配置项挂载”用于处理工作负载配置参数。用户需要提前创建工作负载配置,操作步骤请参见配置项(ConfigMap)。 参考创建无状态负载、创建有状态负载或创建守护进程集,在设置容器基本信息后,选择“数据存储”,在“本地存储”页签下单击添加。 图3 容器存储设置 设置添加本地磁盘参数,如表3。 表3 配置项挂载 参数 参数说明 存储类型 配置项(ConfigMap)。 配置项 选择对应的配置项名称。 说明: 配置项需要提前创建,详情请参见配置项(ConfigMap)。 挂载路径 输入数据卷挂载到容器上的路径。 须知: 请不要挂载在系统目录下,如“/”、“/var/run”等,会导致容器异常。建议挂载在空目录下,若目录不为空,请确保目录下无影响容器启动的文件,否则文件会被替换,导致容器启动异常,应用创建失败。 挂载高危目录的情况下 ,建议使用低权限账号启动,否则可能会造成宿主机高危文件被破坏。 子路径 使用子路径挂载本地磁盘,实现在单一Pod中重复使用同一个Volume。不填写时默认为根。 权限 仅支持“只读”,只能读容器路径中的数据卷。 重复添加可增加多条设置,单击“确认”完成配置。
  • 临时路径挂载 适用于临时存储、灾难恢复、共享运行时数据等场景,工作负载实例的删除或者迁移会导致临时路径被删除。 参考创建无状态负载、创建有状态负载或创建守护进程集,在设置容器基本信息后,选择“数据存储”,在“本地存储”页签下单击添加。 图2 容器存储设置 设置添加本地磁盘参数,如表2。 表2 临时路径挂载 参数 参数说明 存储类型 临时路径(EmptyDir)。 磁盘介质 默认:即存储在硬盘上,适用于数据量大,读写效率要求低的场景。 内存:可以提高运行速度,但存储容量受内存大小限制。适用于数据量少,读写效率要求高的场景。 挂载路径 输入数据卷挂载到容器上的路径。 须知: 请不要挂载在系统目录下,如“/”、“/var/run”等,会导致容器异常。建议挂载在空目录下,若目录不为空,请确保目录下无影响容器启动的文件,否则文件会被替换,导致容器启动异常,应用创建失败。 挂载高危目录的情况下 ,建议使用低权限账号启动,否则可能会造成宿主机高危文件被破坏。 子路径 使用子路径挂载本地磁盘,实现在单一Pod中重复使用同一个Volume。不填写时默认为根。 权限 只读:只能读容器路径中的数据卷。 读写:可修改容器路径中的数据卷,容器迁移时新写入的数据不会随之迁移,会造成数据丢失。 重复添加可增加多条设置,单击“确认”完成配置。
  • 主机路径挂载 在容器上挂载宿主机上的文件或目录。通常用于:“容器应用程序生成的日志文件需要永久保存”或者“需要访问宿主机上Docker引擎内部数据结构的容器应用”。 参考创建无状态负载、创建有状态负载或创建守护进程集,在设置容器基本信息后,选择“数据存储”,在“本地存储”页签下单击添加。 图1 容器存储设置 设置添加本地磁盘参数,如表1。 表1 主机路径挂载 参数 参数说明 存储类型 主机路径(HostPath)。 主机路径 输入主机路径,如/etc/hosts。 挂载路径 输入数据卷挂载到容器上的路径。 须知: 请不要挂载在系统目录下,如“/”、“/var/run”等,会导致容器异常。建议挂载在空目录下,若目录不为空,请确保目录下无影响容器启动的文件,否则文件会被替换,导致容器启动异常,应用创建失败。 挂载高危目录的情况下 ,建议使用低权限账号启动,否则可能会造成宿主机高危文件被破坏。 子路径 使用子路径挂载本地磁盘,实现在单一Pod中重复使用同一个Volume。不填写时默认为根。 权限 只读:只能读容器路径中的数据卷。 读写:可修改容器路径中的数据卷,容器迁移时新写入的数据不会随之迁移,会造成数据丢失。 重复添加可增加多条设置,单击“确认”完成配置。
  • 相关操作 通过UCS控制台,您还可以执行表1中的操作。 表1 相关操作 操作 说明 YAML创建 单击右上角“YAML创建”,可使用已有的YAML创建服务。 查看详情 选择服务所在的命名空间。 (可选)根据服务名称进行搜索。 单击服务名称即可查看服务详情,包括基本信息以及各集群的部署信息。 在服务详情页的部署集群栏中单击“查看YAML”,可查看各个集群中部署的服务实例YAML,并支持下载。 编辑YAML 单击服务名称后的“编辑YAML”,可查看并编辑当前服务的YAML文件。 更新 单击服务名称后的“更新”。 根据访问参数更改信息。 单击“确认”提交已修改的信息。 删除 单击服务名称后的“删除”,并单击“是”进行确认。 批量删除 勾选需要删除的服务。 单击左上角的“批量删除”。 单击“是”进行确认。
  • 创建工作负载后设置 登录UCS控制台,在左侧导航栏中选择“容器舰队”。 在“容器舰队”页签下找到已开通集群联邦的舰队,单击名称进入详情页。 在左侧导航栏中选择“服务与路由”,选择“服务”页签。 选择服务所在命名空间,并单击右上角“创建服务”。如需新建命名空间,请参见创建命名空间。 设置访问参数。 图1 创建服务 Service名称:自定义服务名称,可与工作负载名称保持一致。 服务类型:选择“节点访问 NodePort”。 服务亲和: 集群级别:集群下所有节点的IP+访问端口均可以访问到此服务关联的负载,服务访问会因路由跳转导致一定性能损失,且无法获取到客户端源IP。 节点级别:只有通过负载所在节点的IP+访问端口才可以访问此服务关联的负载,服务访问没有因路由跳转导致的性能损失,且可以获取到客户端源IP。 端口配置: 协议:TCP或UDP,请根据业务的协议类型选择。 服务端口:容器端口映射到集群虚拟IP上的端口,用虚拟IP访问应用时使用,端口范围为1-65535,可任意指定。 容器端口:容器镜像中应用程序实际监听的端口,需用户确定。例如:nginx程序实际监听的端口为80。 节点端口:容器端口映射到节点私有IP上的端口,用私有IP访问应用时使用,端口范围为30000-32767,建议选择“自动生成”。 自动生成:系统会自动分配端口号。 指定端口:指定固定的节点端口,默认取值范围为30000-32767。若指定端口时,请确保同个集群内的端口唯一性。 命名空间:服务所在命名空间。 选择器:服务通过选择器与负载(标签)关联。单击“引用负载标签”,可选择已有的工作负载。 负载类型:选择需要关联的负载类型。 工作负载:选择一个已有的工作负载。如工作负载列表未显示,请单击刷新。 标签:选择工作负载后自动获取对应的标签,不可修改。 图2 引用负载标签 单击“确认”。创建成功后可在“服务”页签的列表中查看。 获取访问地址。 单击左侧导航栏“服务与路由”,选择“服务”页签。 单击所添加的Service名称进入“服务详情”界面,获取部署集群的访问地址。如果集群下节点有绑定弹性IP,则可以通过集群下关联实例所在节点弹性IP地址 + 节点端口的形式访问后端负载。
  • 创建工作负载时设置 创建Deployment、StatefulSet、DaemonSet等不同类型的工作负载时添加Service的方法一致。 参考创建无状态负载、创建有状态负载或创建守护进程集,在服务配置步骤,单击,进行工作负载服务配置。 Service名称:新增服务名称,用户可自定义。 访问类型:选择“节点访问 NodePort”。 服务亲和: 集群级别:集群下所有节点的IP+访问端口均可以访问到此服务关联的负载,服务访问会因路由跳转导致一定性能损失,且无法获取到客户端源IP。 节点级别:只有通过负载所在节点的IP+访问端口才可以访问此服务关联的负载,服务访问没有因路由跳转导致的性能损失,且可以获取到客户端源IP。 端口配置: 协议:TCP或UDP,请根据业务的协议类型选择。 服务端口:容器端口映射到集群虚拟IP上的端口,用虚拟IP访问应用时使用,端口范围为1-65535,可任意指定。 容器端口:容器镜像中应用程序实际监听的端口,需用户确定。例如:nginx程序实际监听的端口为80。 节点端口:容器端口映射到节点私有IP上的端口,用私有IP访问应用时使用,端口范围为30000-32767,建议选择“自动生成”。 自动生成:系统会自动分配端口号。 指定端口:指定固定的节点端口,默认取值范围为30000-32767。若指定端口时,请确保同个集群内的端口唯一性。 设置完成后,单击“确认”。 单击“下一步:调度与差异化”,进行集群调度与差异化配置。设置完成后,单击“创建工作负载”完成创建。 获取访问地址。 单击左侧导航栏“服务与路由”,选择“服务”页签。 单击所添加的Service名称进入“服务详情”界面,获取部署集群的访问地址。如果集群下节点有绑定弹性IP,则可以通过集群下关联实例所在节点弹性IP地址 + 节点端口的形式访问后端负载。
共100000条