华为云用户手册

  • 排查思路 舰队或集群关联权限时出现异常事件的排查思路大致可根据报错信息进行定位,如表1所示。 表1 报错信息说明 报错信息 说明 推荐排查项 ClusterRole failed reason:Get \"https://kubernetes.default.svc.cluster.local/apis/rbac.authorization.k8s.io/v1/clusterroles/XXXXXXX?timeout=30s\": Precondition Required" Or Get ClusterRole failed reason:an error on the server (\"unknown\") has prevented the request from succeeding (get clusterroles.rbac.authorization.k8s.io 出现该错误的原因大概率为集群还未接入,接入集群中的proxy-agent运行状态异常,或者网络异常。 排查项一:proxy-agent的运行状态 排查项二:集群与U CS 网络连接状态 Unauthorized 出现该错误的原因可能是多样的,请根据实际状态码进行排查。 例如状态码401表示用户没有访问权限,可能的原因是集群认证信息过期。 排查项三:集群认证信息变化 Get cluster namesapce[x] failed. Or Reason:namespace "x" not found. 出现该错误的原因是集群内没有对应的命名空间。 在集群下创建对应的命名空间并进行重试操作。 如:kubectl create namespace ns_name 如果不需要使用该命名空间,该异常事件可以忽略。
  • 启用策略中心失败怎么办? 策略中心启用失败时,根据失败情况请使用以下方案排查修复: 如果提示“wait for plugins status become health time out”,请检查集群状态是否正常,集群资源是否足够。检查无误后单击“重新启用”。 如果在启用策略中心后,集群列表页面或者策略实例页面显示启用失败,请按以下步骤进行排查: 请至集群列表页面,跳转至集群的工作负载页面,检查gatekeeper-system命名空间下的策略管理实例插件是否运行正常。 如果运行异常,请通过工作负载的事件排查插件实例异常的原因。 如下图: 如果提示其他错误信息,请直接单击“重新启用”。 父主题: 策略中心
  • 操作步骤 “/mnt/paas/kubernetes/kubelet/cpu_manager_state”文件储存的是原先的cpu_manager_policy,是针对原先CPU核数的绑核设置,需要进行删除。然后重启kubelet,让cpu_manager根据现有的CPU Topology进行绑核,重新生成cpu_manager_state。 因此,需要执行以下命令: rm /mnt/paas/kubernetes/kubelet/cpu_manager_state systemctl restart kubelet 等待一段时间,节点恢复正常。
  • 操作步骤 此类问题是由于Cilium社区对“Terminating”状态的Pod并不会进行Cilium Endpoint摘除,导致部分请求分流到关机节点,从而导致请求失败。请按照如下指导处理: 执行以下命令,删除“Terminating”状态的Pod。 kubectl get pods -nkube-system | grep Terminating | awk '{print $1}'|xargs kubectl delete pods -nkube-system 执行以下命令确定没有异常Pod。 kubectl get pods -nkube-system 等待数分钟后,集群控制台恢复正常。
  • 操作步骤 检查Prometheus的PVC信息,获取PVC绑定的PV所在的节点和路径。 kubectl describe pvc pvc-prometheus-server-0 -nmonitoring|grep volume.kubernetes.io/selected-node kubectl describe pvc pvc-prometheus-server-0 -nmonitoring|grep volume.kubernetes.io/targetPath 登录到存储的节点,执行df -TH,查询节点磁盘配置,并根据节点磁盘的配置进行扩容。扩容完成后,还需要完成磁盘的分区,分区操作可参考《云硬盘用户指南》扩展磁盘分区和文件系统(linux)。 扩容及分区完成后,重启普罗插件。 kubectl delete pod prometheus-server-0 -nmonitoring 重启prometheus-server-0将导致重启期间容器智能分析功能不可用,请合理选择重启时间。
  • 排查项二:集群与UCS网络连接状态 公网接入: 检查集群是否绑定公网IP或配置公网NAT网关。 检查集群安全组的出方向是否放通。如需对出方向做访问控制,请联系技术支持获取目的地址和端口号。 解决网络问题后,删掉已有的proxy-agent Pod使其重新生成Pod资源,查看新建Pod的日志中是否存在“Start serving”的日志打印。 kubectl -n kube-system logs proxy-agent-*** | grep "Start serving" 日志正常打印后,刷新UCS控制台页面,查看集群是否正常连接。 私网接入: 检查集群安全组的出方向是否放通。如需对出方向做访问控制,请联系技术支持获取目的地址和端口号。 排除集群与UCS和IDC之间的网络连接故障。 根据网络连接方式不同,请参考以下文档进行故障排除。 云专线(DC):请参考故障排除。 虚拟专用网络 (VPN):请参考故障排除。 排除集群私网接入的VPCEP故障,VPCEP状态需为“已接受”。如VPCEP被误删除,则需重新创建,请参见私网接入的集群误删除VPCEP后如何恢复?。 图1 VPCEP状态 解决网络问题后,删掉已有的proxy-agent Pod使其重新生成Pod资源,查看新建Pod的日志中是否存在“Start serving”的日志打印。 kubectl -n kube-system logs proxy-agent-*** | grep "Start serving" 日志正常打印后,刷新UCS控制台页面,查看集群是否正常连接。
  • 排查项三:集群kube-apiserver状态 集群接入UCS时,可能出现如图2所示的异常信息,错误显示“please check the health status of kube apiserver: ...”。 图2 kube-apiserver状态异常 如出现以上信息,说明proxy-agent无法和集群apiserver进行正常通信,由于不同用户待接入集群的网络环境配置不同,这里无法提供统一的解决方案,需要您自行解决集群网络问题后进行重试。 登录UCS控制台,在左侧导航栏选择“容器舰队”页面。 登录目标集群Master节点,检查proxy-agent的Pod是否可以访问待接入集群的apiserver。 参考命令: kubectl exec -ti proxy-agent-*** -n kube-system /bin/bash # 访问集群的kube-apiserver curl -kv https://kubernetes.default.svc.cluster.local/readyz 如无法正常访问,请解决集群网络问题后,在UCS控制台重新注册集群,并重新部署proxy-agent。
  • 排查项四:集群认证信息变化 如错误显示“cluster responded with non-successful status: [401][Unauthorized]”,通过观察集群三个Master节点“/var/paas/sys/log/kubernetes/auth-server.log”日志,可能是 IAM 网络连通故障。请确认IAM 域名 解析能力,及IAM服务连通性正常。 常见问题日志如下: Failed to authenticate token: *******: dial tcp: lookup iam.myhuaweicloud.com on *.*.*.*:53: no such host 此类日志说明,节点缺少对iam.myhuaweicloud.com解析能力,请参考安装前准备,配置对应的域名解析。 Failed to authenticate token: Get *******: dial tcp *.*.*.*:443: i/o timeout 此类日志说明,节点访问IAM服务超时,请确保节点与华为云IAM服务能正常通信。 currently only supports Agency token 此类日志说明请求不是从UCS服务发起,目前本地集群只支持UCS服务IAM Token访问。 IAM assumed user has no authorization/iam assumed user should allowed by TEAdmin 此类日志说明UCS服务访问集群故障,请联系华为技术人员进行排障。 Failed to authenticate token: token expired, please acquire a new token 此类日志说明Token存在过期现象,请使用date命令确定时间是否差距过大,如果节点时间与标准时间差距过大,请同步时间后,查看集群是否恢复。如果长时间未恢复,可能需要重装集群,请联系华为技术人员进行排障。 解决上述问题后,请使用crictl ps | grep auth | awk '{print $1}' | xargs crictl stop命令重启auth-server容器。
  • 排查项一:proxy-agent的运行状态 集群从UCS注销后,原有proxy-agent配置文件中包含的认证信息将会失效,请同时删除集群中已部署的proxy-agent实例。如需再次接入UCS,必须重新从UCS控制台下载proxy-agent配置文件进行部署。 登录目标集群Master节点。 查看集群代理部署状态。 kubectl -n kube-system get pod | grep proxy-agent 如果部署成功,预期输出如下: proxy-agent-*** 1/1 Running 0 9s 说明proxy-agent部署正常,如proxy-agent没有处于正常Running状态,可以使用kubectl -n kube-system describe pod proxy-agent-***查看Pod的告警信息,详细排查思路可参考proxy-agent部署失败怎么办?。 proxy-agent默认部署两个Pod实例,存在一个Pod正常Running即可使用基本功能,但是高可用性无法保证。 打印proxy-agent的Pod日志,查看代理程序是否可以连接到UCS。 kubectl -n kube-system logs proxy-agent-*** | grep "Start serving" 如没有“Start serving”的日志打印但是proxy-agent实例状态正常,则需要继续检查其他排查项。
  • 排查思路 集群处于异常状态的排查思路大致可根据报错信息进行定位,如表1所示。 表1 报错信息说明 报错信息 说明 推荐排查项 “currently no agents available, please make sure the agents are correctly registered” 出现该错误的原因大概率为接入集群中的proxy-agent运行状态异常或网络异常。 排查项一:proxy-agent的运行状态 排查项二:集群与UCS网络连接状态 “please check the health status of kube apiserver: ...” 出现该错误的原因大概率为集群内部kube-apiserver无法访问。 排查项三:集群kube-apiserver状态 “cluster responded with non-successful status code: ...” 出现该错误的原因可能是多样的,请根据实际状态码进行排查。 例如状态码401表示用户没有访问权限,可能的原因是集群认证信息过期。 排查项四:集群认证信息变化 “cluster responded with non-successful message: ...” 出现该错误的原因可能是多样的,请根据实际信息进行排查。 例如“Get "https://172.16.0.143:6443/readyz?timeout=32s\": context deadline exceeded”显示访问apiserver超时,可能是因为集群apiserver发生故障。 - “Current cluster version is not supported in UCS service.” 出现该错误的原因是集群版本不符合要求:接入UCS服务的Kubernetes集群版本必须为1.19及以上。 -
  • 操作步骤 修改“/etc/default/grub”文件的GRUB_CM DLI NE_LINUX配置项,添加systemd.unified_cgroup_hierarchy=no,关闭cgroup v2。 GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0 systemd.unified_cgroup_hierarchy=no" 使用sudo grub-mkconfig -o /boot/grub/grub.cfg命令重新生成引导。 执行reboot重启机器。
  • 问题描述 etcd kubernetes容器无法拉起,执行journalctl -u containerd查看containerd日志,看到以下日志: applying cgroup configuration for process caused \\\"mountpoint for cgroup not found\\\"\"\n 使用stat -fc %T /sys/fs/cgroup/查看cgroup版本为cgroup2fs,该问题根因为当前kubernetes版本cgroup v2暂未GA,需要进行cgroup降级。
  • 操作步骤 于安装节点获取节点清理脚本。 在解压后的“/var/paas/.ucs-package/ucs-onpremise/scripts/”目录下,即可获取清理脚本uninstall_node.sh。 将清理脚本拷贝到待清理的节点。 登录到待清理的节点上,执行以下命令进行清理操作: bash uninstall_node.sh 为了尽可能减少残留进程或者数据,清理脚本支持多次执行。 清理脚本执行完成后,重启节点。 重复执行上述操作,清理其他节点。
  • 操作步骤 执行以下命令打开kube-state-metrics工作负载对应的YAML文件。 kubectl edit deployment kube-state-metrics -nmonitoring 修改kube-state-metrics的启动参数。 例如需要采集Pod的所有labels时,则将kube-state-metrics的启动参数修改为: --metric-labels-allowlist=pods=[*],nodes=[node,failure-domain.beta.kubernetes.io/zone,topology.kubernetes.io/zone] kube-state-metrics将开始采集Pod和Node的labels指标,并通过kubectl edit servicemonitor kube-state-metrics -nmonitoring查询kube_pod_labels是否在普罗的采集任务中。 如需采集annotation,则在启动参数中以相同方法添加参数--metric-annotations-allowlist。 参考文档:https://github.com/kubernetes/kube-state-metrics/blob/v2.2.3/docs/cli-arguments.md
  • 问题描述 kube-prometheus-stack插件的kube-state-metrics组件负责将Prometheus的metrics数据格式转换成K8s API接口能识别的格式。kube-state-metrics组件在默认配置下,不采集K8s资源的所有labels和annotation。如需采集则需要在启动参数中修改采集配置,并同时检查名称为kube-state-metrics的ServiceMonitor中采集白名单是否添加相应指标。
  • 操作步骤 使用管理员账号登录IAM控制台。 在左侧导航栏选择“委托”。 选择“ucs_admin_trust”委托,单击操作列的“删除”,在弹出的确认窗口中单击“是”。 在左侧导航栏选择“委托”。 ucs_admin_trust委托已经删除的情况下不需要执行本步骤。其他误修改的操作(例如删除了其中的Tenant Administrator权限)均需要删除当前委托,以便创建新的委托。 进入UCS控制台,在弹出的“授权说明”对话框,单击“确认”,UCS会重新创建ucs_admin_trust委托,恢复业务。
  • 集群在何种状态下时,UCS会产生计费? 集群状态的变化会影响UCS对其vCPU数量的统计,从而影响UCS服务的计费。若集群需要使用UCS服务,请保证其在正常运行状态;若集群不再需要使用,请及时注销,避免持续扣款。 不同集群状态是否造成UCS计费的情况见表1 集群状态与计费。 表1 集群状态与计费 集群状态 是否计费 运行中 是 不可用 是 说明: 当集群接入UCS之后,UCS会获取用户集群vCPU的使用量并记录。如果之后集群状态变为“不可用”,导致UCS无法获取到最新的集群vCPU使用量信息,UCS会根据最后一次记录到的vCPU使用量进行计费。 等待接入 否 注册超时 否 注销中 否 注销失败 否 父主题: 计费相关
  • 什么是UCS配额? 为防止资源滥用,平台限定了各服务资源的配额,对用户的资源数量和容量做了限制。UCS具有集群、舰队、权限、集群联邦,以及容器智能分析实例配额限制。 集群配额:UCS支持接入的集群数量上限,华为云集群和附着集群的数量均占用该配额值。 舰队配额:用户拥有的舰队数量上限。 权限配额:用户可以在“权限管理”页面创建的权限数量上限。 集群联邦配额:用户可以开通的集群联邦数量上限。 容器智能分析实例配额:用户可以创建的容器智能分析实例数量上限。 用户在使用UCS时也会使用其他云服务,例如弹性云服务器、云硬盘、虚拟私有云、弹性负载均衡、 容器镜像服务 、云解析服务等。其他云服务配额与UCS配额相互独立,由各服务自行管理,详情请参见关于配额。
  • 集群、舰队权限列表 功能 权限类型 权限范围 最小权限 容器舰队 管理员权限 创建、删除舰队 注册华为云集群(CCE集群、 CCE Turbo 集群)、本地集群或附着集群 注销集群 将集群加入、移出舰队 为集群或舰队关联权限 开通集群联邦、联邦管理相关操作(如创建联邦工作负载、创建域名访问等) UCS FullAccess 只读权限 查询集群、舰队的列表或详情 UCS ReadOnlyAccess 华为云集群 管理员权限 对华为云集群及所有集群资源对象(包含节点、工作负载、任务、服务等)的读写权限。 UCS FullAccess + CCE Administrator 操作权限 对华为云集群及大多数集群资源对象的读写权限,对命名空间、资源配额等Kubernetes资源对象的只读权限。 UCS CommonOperations + CCE Administrator 只读权限 对华为云集群及所有集群资源对象(包含节点、工作负载、任务、服务等)的只读权限。 UCS ReadOnlyAccess + CCE Administrator 本地/附着集群 管理员权限 对本地/附着集群及所有集群资源对象(包含节点、工作负载、任务、服务等)的读写权限。 UCS FullAccess 操作权限 对本地/附着集群及大多数集群资源对象的读写权限,对命名空间、资源配额等Kubernetes资源对象的只读权限。 UCS CommonOperations + UCS RBAC权限(需要包含namespaces资源对象的list权限) 只读权限 对本地/附着集群及所有集群资源对象(包含节点、工作负载、任务、服务等)的只读权限。 UCS ReadOnlyAccess + UCS RBAC权限(需要包含namespaces资源对象的list权限)
  • 解决方案 大多数IAM用户无法获取集群的问题,都和权限未设置或者设置不正确有关,IAM用户必须同时拥有UCS系统策略权限和集群资源对象操作权限,才可以获取集群信息。您需要联系管理员按照图1所示流程为自己授权。 图1 授权示意图 管理员登录IAM控制台,为IAM用户所在用户组授予UCS系统策略权限。 根据操作范围选择授予何种系统策略。例如:查询集群、舰队的列表或详情,查询集群资源对象(包含节点、工作负载、任务、服务等),这些操作只需要授予UCS ReadOnlyAccess只读权限即可,如图2所示。 图2 用户组只读权限 集群、舰队权限列表中展示了不同权限范围所需的最小权限,管理员依据该表格来授权就可以。 管理员登录UCS控制台,为IAM用户授予集群资源对象操作权限。 操作方法如下: UCS控制台的“权限管理”仅针对本地或附着集群生效,对于华为云集群的资源操作权限,请授予CCE Administrator权限。 在“权限管理”页面创建权限(选择“只读权限”类型,表示对所有集群资源对象的只读权限)。 将创建的权限关联至舰队,或者未加入舰队的集群。
  • 解决方案 管理员需要为用户授予UCS控制台各功能的权限,通过IAM系统策略(包括UCS FullAccess、UCS CommonOperations、UCS CIAOperations和UCS ReadOnlyAccess)来界定用户的权限范围。 表1 UCS系统权限 系统角色/策略名称 描述 类别 UCS FullAccess UCS服务管理员权限,拥有该权限的用户拥有服务的所有权限(包含制定权限策略、安全策略等)。 系统策略 UCS CommonOperations UCS服务基本操作权限,拥有该权限的用户可以执行创建工作负载、流量分发等操作。 系统策略 UCS CIAOperations UCS服务容器智能分析管理员权限。 系统策略 UCS ReadOnlyAccess UCS服务只读权限(除容器智能分析只读权限)。 系统策略 另外,华为云各服务之间存在业务交互关系,UCS也依赖其他云服务实现一些功能(如镜像仓库、域名解析),因此,上述几种系统策略经常和其他云服务的角色或策略结合使用,以达到精细化授权的目的。管理员在为IAM用户授权时,应该遵循权限最小化的安全实践原则,表2列举了UCS各功能管理员、操作、只读权限所需要的最小权限。 授予用户IAM系统策略的详细操作请参见UCS服务资源权限;授予用户UCS RBAC权限的详细操作请参见集群中Kubernetes资源权限。 表2 UCS功能所需的最小权限 功能 权限类型 权限范围 最小权限 容器舰队 管理员权限 创建、删除舰队 注册华为云集群(CCE集群、CCE Turbo集群)、本地集群或附着集群 注销集群 将集群加入、移出舰队 为集群或舰队关联权限 开通集群联邦、联邦管理相关操作(如创建联邦工作负载、创建域名访问等) UCS FullAccess 只读权限 查询集群、舰队的列表或详情 UCS ReadOnlyAccess 华为云集群 管理员权限 对华为云集群及集群下所有Kubernetes资源对象(包含节点、工作负载、任务、服务等)的读写权限。 UCS FullAccess + CCE Administrator 操作权限 对华为云集群及集群下大多数Kubernetes资源对象的读写权限,对命名空间、资源配额等Kubernetes资源对象的只读权限。 UCS CommonOperations + CCE Administrator 只读权限 对华为云集群及集群下所有Kubernetes资源对象(包含节点、工作负载、任务、服务等)的只读权限。 UCS ReadOnlyAccess + CCE Administrator 本地/附着/多云/伙伴云集群 管理员权限 本地/附着/多云/伙伴云集群及集群下所有Kubernetes资源对象(包含节点、工作负载、任务、服务等)的读写权限。 UCS FullAccess 操作权限 本地/附着/多云/伙伴云集群及集群下大多数Kubernetes资源对象的读写权限,对命名空间、资源配额等Kubernetes资源对象的只读权限。 UCS CommonOperations + UCS RBAC权限(需要包含namespaces资源对象的list权限) 只读权限 本地/附着/多云/伙伴云集群及集群下所有Kubernetes资源对象(包含节点、工作负载、任务、服务等)的只读权限。 UCS ReadOnlyAccess + UCS RBAC权限(需要包含namespaces资源对象的list权限) 镜像仓库 管理员权限 容器 镜像服务 的所有权限,包括创建组织、上传镜像、查看镜像列表或详情、下载镜像等操作。 SWR Administrator 权限管理 管理员权限 创建、删除权限 查看权限列表或详情 说明: 创建权限需要同时授予子用户IAM ReadOnlyAccess权限(IAM服务的只读权限),用于获取IAM用户列表。 UCS FullAccess + IAM ReadOnlyAccess 只读权限 查看权限列表或详情 UCS ReadOnlyAccess + IAM ReadOnlyAccess 策略中心 管理员权限 启用策略中心 创建、停用策略实例 查看策略列表 查看策略实施详情 UCS FullAccess 只读权限 对于已启用策略中心的舰队和集群,拥有该权限的用户可以查看策略列表和查看策略实施详情。 UCS CommonOperations 或 UCS ReadOnlyAccess 服务网格 管理员权限 应用服务网格的所有权限,包括创建网格、添加集群、sidecar注入、查看网格列表或详情、卸载网格等。 CCE Administrator 流量分发 管理员权限 创建流量策略、暂停调度策略、删除调度策略等操作。 (推荐)UCS CommonOperations + DNS Administrator 或 UCS FullAccess + DNS Administrator 只读权限 查看流量策略列表或详情 UCS ReadOnlyAccess + DNS Administrator 容器智能分析 管理员权限 接入、取消接入集群 查看基础设施、应用负载等多维度监控数据 UCS CIAOperations 云原生服务中心 管理员权限 云原生服务中心的所有权限,包括订阅服务、查看服务列表或详情、创建服务实例、查看实例列表或详情、删除服务实例、退订服务等操作。 UCS FullAccess 只读权限 云原生服务中心的只读权限,包括查看服务列表或详情、查看实例列表或详情等操作。 UCS ReadOnlyAccess
  • 计费模式 UCS提供包年/包月和按需计费两种计费模式,以满足不同场景下的用户需求。 包年/包月:一种预付费模式,即先付费再使用,按照订单的购买周期进行结算。购买周期越长,享受的折扣越大。一般适用于接入集群规模长期稳定的成熟业务。 按需计费:一种后付费模式,即先使用再付费,按照UCS实际使用时长计费,按小时结算。按需计费模式允许您根据实际业务需求灵活地调整服务使用,无需提前购买付费,灵活性高。一般适用于接入集群规模较小的业务场景。
  • 计费项 使用UCS服务时,会产生UCS服务管理费用,具体内容如表1 UCS计费项所示。 表1 UCS计费项 计费项 说明 适用的计费模式 计费公式 UCS集群管理服务 UCS集群管理服务费用由集群类型(包括华为云集群、本地集群、附着集群、多云集群和伙伴云集群)、集群vCPU容量和购买时长决定。 UCS服务管理费用不包括任何资源(例如计算节点、网络服务等)相关的费用。 包年/包月、按需计费 集群规模 *规格单价 *购买时长 具体 定价 请参见UCS价格详情。
  • 操作步骤 登录集群Master节点。 查看proxy-agent运行状态。 kubectl -n kube-system get pod | grep proxy-agent 回显如下,pod状态处于ImagePullBackOff或Pending: proxy-agent-59ddf7597b-rq4j6 0/1 ImagePullBackOff 0 2d16h proxy-agent-59ddf7597b-sjf55 0/1 Pending 0 2d16h 查看Pod的详细信息。 kubectl describe pod proxy-agent-*** -nkube-system 可能出现如下错误: K8s事件显示集群无法拉取proxy-agent镜像,请您确保集群具备访问公网的能力,可正常拉取SWR镜像。 K8s事件显示节点的CPU或内存资源不足,请您扩容节点资源。 K8s事件显示没有符合调度规则的节点。proxy-agent为实现高可用性,默认将两个实例调度至不同的节点,请您确保集群中至少存在两个节点具有足够的资源。 K8s事件显示gatekeeper相关字样,可能是由于创建的策略实例进行了拦截。为解决此问题,请在集群上执行以下命令删除相应策略实例。 kubectl delete constraint --all 以上问题解决后,重新查看proxy-agent运行状态,所有Pod处于“Running”状态。
  • 编辑proxy-agent配置 在UCS所在区域新建一个VPCEP。 图2 购买终端节点(自动分配节点IP) 单击新创建VPCEP的ID,查看自动分配的节点IP。 图3 VPCEP详情 登录接入异常集群的Master节点。 编辑proxy-agent中配置的IP信息。 kubectl edit deploy -n kube-system proxy-agent 修改hostAliases字段下的IP: hostAliases: - hostnames: - proxyurl.ucs.myhuaweicloud.com ip: 10.0.0.122 按“ESC”,输入:wq,按“ENTER”完成编辑。 等待1-3分钟,前往UCS控制台重新刷新集群状态。
  • 操作步骤 由于proxy-agent中已配置VPCEP的IP地址,在新建VPCEP时需要指定IP,请确保IP未被占用。 登录 VPC终端节点 控制台检查UCS服务所在区域的VPCEP是否被删除。如确认对接UCS的VPCEP被删除,则可继续执行以下步骤。 登录接入异常集群的Master节点。 查询proxy-agent中配置的IP信息。 kubectl get deploy -n kube-system proxy-agent -oyaml | grep -A3 hostAliases 回显如下: hostAliases: - hostnames: - proxyurl.ucs.myhuaweicloud.com ip: 10.0.0.182 在UCS所在区域新建一个VPCEP,并指定该IP地址,单击“查看已使用IP地址”以确保该IP地址未使用。如IP地址已占用,则需编辑集群中的proxy-agent配置,请参考编辑proxy-agent配置。 图1 购买终端节点(指定节点IP) 单击“立即购买”,重新创建一个VPCEP。 等待1-3分钟,前往UCS控制台重新刷新集群状态。
  • 排查项四:集群认证信息变化 如错误显示“cluster responded with non-successful status: [401][Unauthorized]”,可能是集群认证信息过期或者发生了变化,从而导致UCS无法访问集群kube-apiserver,请您注销该集群,使用新的KubeConfig文件重新注册集群,并重新部署proxy-agent。 建议您使用永久的KubeConfig文件,防止由于集群认证信息过期导致UCS无法管理集群。 部分厂商提供的第三方集群在欠费后重新续费会导致认证信息变化,请尽量避免集群欠费的情况发生。
  • 排查项三:集群kube-apiserver状态 集群接入UCS时,可能出现如图2所示的异常信息,错误显示“please check the health status of kube apiserver: ...”。 图2 kube-apiserver状态异常 如出现以上信息,说明proxy-agent无法和集群apiserver进行正常通信,由于不同用户待接入集群的网络环境配置不同,这里无法提供统一的解决方案,需要您自行解决集群网络问题后进行重试。 登录UCS控制台,在左侧导航栏选择“容器舰队”页面。 登录目标集群Master节点,查看apiserver地址。 kubectl get po `kubectl get po -nkube-system | grep kube-apiserver | awk {'print $1'}` -nkube-system -oyaml | grep advertise-address.endpoint 查看集群的KubeConfig文件中“clusters.cluster.server”字段是否与2中查询的集群apiserver地址一致。 如不一致,可能是集群提供商做了apiserver的地址转换,请替换KubeConfig文件中的集群apiserver地址后,在UCS控制台重新注册集群,并重新部署proxy-agent。 若KubeConfig文件中“clusters.cluster.server”字段为“https://kubernetes.default.svc.cluster.local:443”可无需替换,该域名为kubernetes服务(即apiserver的ClusterIP)的本地域名。 检查proxy-agent的Pod是否可以访问待接入集群的apiserver。 参考命令: kubectl exec -ti proxy-agent-*** -n kube-system /bin/bash # 访问集群的kube-apiserver curl -kv https://*.*.*.*:*/readyz 如无法正常访问,请解决集群网络问题后,在UCS控制台重新注册集群,并重新部署proxy-agent。
  • 排查项一:proxy-agent的运行状态 集群从UCS注销后,原有proxy-agent配置文件中包含的认证信息将会失效,请同时删除集群中已部署的proxy-agent实例。如需再次接入UCS,必须重新从UCS控制台下载proxy-agent配置文件进行部署。 登录目标集群Master节点。 查看集群代理部署状态。 kubectl -n kube-system get pod | grep proxy-agent 如果部署成功,预期输出如下: proxy-agent-*** 1/1 Running 0 9s 说明proxy-agent部署正常,如proxy-agent没有处于正常Running状态,可以使用kubectl -n kube-system describe pod proxy-agent-***查看Pod的告警信息,详细排查思路可参考proxy-agent部署失败怎么办?。 proxy-agent默认部署两个Pod实例,存在一个Pod正常Running即可使用基本功能,但是高可用性无法保证。 打印proxy-agent的Pod日志,查看代理程序是否可以连接到UCS。 kubectl -n kube-system logs proxy-agent-*** | grep "Start serving" 如没有“Start serving”的日志打印但是proxy-agent实例状态正常,则需要继续检查其他排查项。
  • 排查项二:集群与UCS网络连接状态 公网接入: 检查集群是否绑定公网IP或配置公网NAT网关。 检查集群安全组的出方向是否放通。如需对出方向做访问控制,请联系技术支持获取目的地址和端口号。 解决网络问题后,删掉已有的proxy-agent Pod使其重新生成Pod资源,查看新建Pod的日志中是否存在“Start serving”的日志打印。 kubectl -n kube-system logs proxy-agent-*** | grep "Start serving" 日志正常打印后,刷新UCS控制台页面,查看集群是否正常连接。 私网接入: 检查集群安全组的出方向是否放通。如需对出方向做访问控制,请联系技术支持获取目的地址和端口号。 排除集群与UCS和IDC/第三方云之间的网络连接故障。 根据网络连接方式不同,请参考以下文档进行故障排除。 云专线(DC):请参考故障排除。 虚拟专用网络(VPN):请参考故障排除。 排除集群私网接入的VPCEP故障,VPCEP状态需为“已接受”。如VPCEP被误删除,则需重新创建,请参见私网接入的集群误删除VPCEP后如何恢复。 图1 VPCEP状态 解决网络问题后,删掉已有的proxy-agent Pod使其重新生成Pod资源,查看新建Pod的日志中是否存在“Start serving”的日志打印。 kubectl -n kube-system logs proxy-agent-*** | grep "Start serving" 日志正常打印后,刷新UCS控制台页面,查看集群是否正常连接。
共100000条