企业级运维之云原生与Kubernetes实战课程 - 第四章第5讲 ACK集群故障处理与疑难处置

本文涉及的产品
文件存储 NAS,50GB 3个月
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: ACK集群故障处理与疑难处置

企业级运维之云原生与Kubernetes实战课程

第四章第5 ACK集群故障处理与疑难处置

 

视频地址:

https://developer.aliyun.com/learning/course/913/detail/14609

 

一、存储疑难与故障

 

1.   在存储方面,常见的问题及可能的原因如下:

 

a.  Pod挂载不上云盘

  • 云盘卷是非共享存储,已经被其他Pod挂载;
  • 云盘和ECS不在一个可用区;
  • flexvolume/csi驱动使用错误;

 

b.  Pod卸载不了云盘

  • Pod所在的ECS将计费方式变为了包年包月(连带云盘也变成包年包月),导致云盘无法从ECS卸载。

 

c.  Pod挂载不了NAS

  • NAS的权限组设置不对;
  • 挂载点或者NAS挂载地址不存在;

 

2.   问题定位:查看驱动日志

 

为了准确定位问题原因,可以先查看驱动日志,阿里云提供的两个主要的存储组件是FlexvolumCSI

 

a.   flexvolume:/var/loq/alicloud/flexvolume*;csi:

flexvolume插件是Kubernetes社区较早实现的存储卷扩展机制,插件包括以下三部分:

  • Flexvolume:负责数据卷的挂载、卸载功能。ACK默认提供云盘、NASOSS三种存储卷的挂载能力;
  • Disk-Controller:负责云盘卷的自动创建能力;
  • Nas-Controller:负责NAS卷的自动创建能力;

 

b.   CSI

CSI插件是当前Kubernetes社区推荐的插件实现方案,ACK集群提供的CSI存储插件兼容社区的CSI特性,插件包括以下两部分:

  • CSI-Plugin:实现数据卷的挂载、卸载功能。ACK默认提供云盘、NASOSS三种存储卷的挂载能力;
  • CSI-Provisioner:实现数据卷的自动创建能力,目前支持云盘、NAS两种存储卷创建能力;

查看csi-plugin Pod的日志;如果是动态存储,还需要查看nas-controller/disk-controller/csi-provisioner的日志。

 

3.   其他存储相关问题

 

a.   NAS存储

  • 现象:PVC无法创建,报错`waitingfor a volume to be created,either by external provisioner "nasplugin.csi.alibabacloud.com" or manually created by system administrator
  • 原因:创建阿里云Kubernetes 1.16之前版本的集群时,若存储插件选择为Flexvolume,则控制台默认安装FlexvolumeDisk-Controller组件,但控制台不会默认安装alicloud-nas-controller组件。

 

参考文档:https://help.aliyun.com/document_detail/86785.html

 

b.   挂载NASPod无法启动

  • 现象:查看pvpvc同时为bound状态,describe pod显示挂载超时;
  • 方法:查看flexvolume日志是否存在FsGroup字段;
  • 原因:FsGroup:1000,表示mount使用uid=1000的特定用户进行挂载,Pod启动的时候,会把NAS挂载的目录下所有的文件权限改成1000,当文件较多的时候,会超过Pod的启动超时时间,导致Pod无法启动。

 

参考文档:https://help.aliyun.com/document_detail/286496.html

 

二、网络疑难与故障

 

常见的网络问题和可能的原因如下:

 

1.  访问slb不通

 

  • 集群内访问不通,ServiceexternalTrafficPolicy策略为Local,非Service的后端Pod所在节点访问Serviceslb IP就会不通;
  • slb配置了黑白名单访问控制(常见的apiserverslb配置了访问控制,控制台查看集群等信息失败)
  • ECS安全组出方向没有放通slbIP

 

2.  访问Ingress不通

 

  • 集群内访问不通,原因同问题1中的第一种原因,因为Ingress IP也是Loadbalancer类型的Serviceslb IP
  • nginx-ingress-controller所在的节点入方向安全组没有放通集群Pod网段;
  • Ingress手动设置了白名单;
  • Ingressyaml配置有问题,导致ingress-controller无法正确加载配置,访问502

 

3.  控制台访问异常

 

  • apiserver出异常,或者apiserverslb流量/连接数超过规格;
  • apiserverslb上设置了黑白名单;

 

4.  Pod 不通

 

  • Pod所在节点的网络设备没有开启forward
  • Pod里进程监听的回环地址;

 

三、Kubectl命令问题

 

Kubectl命令常见的问题和可能的原因如下:

 

1.  ** is forbidden;User ** cannot **错误

 

帐号的集群RBAC权限不够,从报错可以看到是缺少集群范围内的list某个资源的权限,且API Group为核心API组。

 

2.  kubectl get可以,logs/exec不行

 

节点的安全组入方向没有放通kubelet10250端口,kubectlkubelet建联失败。kubectl会先和apiserver建连,然后 apiserver会访问Pod所在节点的kubelet(通过kubelet10250端口)建立连接,kubelet再和Pod通信。

 

3.  kubectl 执行超时

 

  • apiserver服务异常;
  • apiserverslb设置了访问控制;
  • 其他问题:可以通过kubectl --v=8指定命令返回的日志级别来定位。

 

四、 节点自动伸缩问题

 

在节点自动伸缩方面,常见的问题和可能的原因如下:

 

1.  自动伸缩组件kube-autoscale异常

 

集群自动伸缩组件依赖集群的KubernetesWorkerRole-***的角色没有权限去调用弹性伸缩的相关接口。

 

2.  节点不自动扩容

 

  • 集群未达到节点扩容的条件:pod因为节点资源不足而导致状态未pending的情况下才会触发节点扩容,而并非超过自动伸缩设定的阈值;
  • 集群已经达到扩容的条件,但是由于自动伸缩的伸缩组配置的节点不满足Pod的要求,比如:
  • Pod要求创建在杭州可用区D,但是配置的节点的交换机是可用区A
  • Podrequest.cpu4,但是伸缩组节点规格是2C
  • 如果上述两种情况都没有问题,可以通过检查cluster-autoscaler组件日志判断。

 

五、 Service问题

 

Service方面常见的问题和可能的原因如下:

 

1.  lb类型的service一直创建中

 

  • slb可以挂载的backend server的数量已满;
  • ECS可以重复挂载到slb的次数配额已满;
  • cloud-controller-manager组件异常;

 

2.  Service负载不均

 

  • lb类型的service,是按照节点上Pod的数量比例来设置权重,保证Pod负载均衡,但是节点上会负载不均;
  • 使用了长链接以及会话保持功能;

 

如下图所示,在V1.9.3.164-g2105d2e-aliyun之前版本,Local模式的Service其所有后端权重均为100,即所有流量平均分配到这三台ECS上,造成ECS1Pod负载较重而ECS3上的Pod负载较轻,导致Pod负载不均。

 image.png

解决方案:

 

  • 如图所示,在V1.9.3.164-g2105d2e-aliyun之后及V1.9.3.276-g372aa98-aliyun之前版本,CCM会根据Node上部署的Pod数量计算Node权重。经计算三台ECS权重分别为163350,因此流量将大致按照123的比例分配给三台ECSPod负载更加均衡。

 image.png 

计算公式如下:

image.png

  • V1.9.3.276-g372aa98-aliyun及之后版本,CCMNode上部署的Pod数量设置为Node权重,如下图所示,三台ECS的权重分别为123,流量会按照123的比例分配给三台ECSPod负载比上一种方式更加均衡。

 image.png  

计算公式如下:

image.png

3.  无法访问Service的虚拟IP

 

  • 集群外无法访问:Service的虚拟IP在集群内是通过iptables或者ipvs转发来完成的,是虚拟IP,集群外不存在虚拟IP的路由,所以访问不通;
  • 集群内无法ping通:ServiceclusterlP是虚拟IP,只提供端口的转发,不提供icmp转发,所以访问不通;
  • 集群内无法访问ServiceServiceendpoint是空的,或者虽然有endpoint,但是Pod端口不对,或者Pod端口监听绑定的是回环地址。

 

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
3月前
|
人工智能 运维 监控
运维也能“先演练后实战”?聊聊数字孪生的那些神操作
运维也能“先演练后实战”?聊聊数字孪生的那些神操作
105 0
|
5月前
|
人工智能 运维 安全
基于合合信息开源智能终端工具—Chaterm的实战指南【当运维遇上AI,一场效率革命正在发生】
在云计算和多平台运维日益复杂的今天,传统命令行工具正面临前所未有的挑战。工程师不仅要记忆成百上千条操作命令,还需在不同平台之间切换终端、脚本、权限和语法,操作效率与安全性常常难以兼顾。尤其在多云环境、远程办公、跨部门协作频繁的背景下,这些“低效、碎片化、易出错”的传统运维方式,已经严重阻碍了 IT 团队的创新能力和响应速度。 而就在这时,一款由合合信息推出的新型智能终端工具——Chaterm,正在悄然颠覆这一现状。它不仅是一款跨平台终端工具,更是业内率先引入 AI Agent 能力 的“会思考”的云资源管理助手。
|
4月前
|
缓存 运维 安全
7天精通电商API:从接入到运维的完整实战手册
本文全面解析电商API接口技术,从基础概念到高阶应用,涵盖商品、订单、支付与营销等核心模块,并深入探讨性能优化、安全防护与智能化发展方向,助你掌握驱动数字商业的核心技术。
|
1月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
1月前
|
数据采集 运维 监控
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
本文系统解析爬虫与自动化核心技术,涵盖HTTP请求、数据解析、分布式架构及反爬策略,结合Scrapy、Selenium等框架实战,助力构建高效、稳定、合规的数据采集系统。
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
|
7月前
|
人工智能 关系型数据库 OLAP
光云科技 X AnalyticDB:构建 AI 时代下的云原生企业级数仓
AnalyticDB承载了光云海量数据的实时在线分析,为各个业务线的商家提供了丝滑的数据服务,实时物化视图、租户资源隔离、冷热分离等企业级特性,很好的解决了SaaS场景下的业务痛点,也平衡了成本。同时也基于通义+AnalyticDB研发了企业级智能客服、智能导购等行业解决方案,借助大模型和云计算为商家赋能。
590 17
|
7月前
|
消息中间件 存储 NoSQL
RocketMQ实战—6.生产优化及运维方案
本文围绕RocketMQ集群的使用与优化,详细探讨了六个关键问题。首先,介绍了如何通过ACL配置实现RocketMQ集群的权限控制,防止不同团队间误用Topic。其次,讲解了消息轨迹功能的开启与追踪流程,帮助定位和排查问题。接着,分析了百万消息积压的处理方法,包括直接丢弃、扩容消费者或通过新Topic间接扩容等策略。此外,提出了针对RocketMQ集群崩溃的金融级高可用方案,确保消息不丢失。同时,讨论了为RocketMQ增加限流功能的重要性及实现方式,以提升系统稳定性。最后,分享了从Kafka迁移到RocketMQ的双写双读方案,确保数据一致性与平稳过渡。
|
8月前
|
运维 安全 网络安全
【运维实战分享】轻松搞定 SSL 证书管理,告别证书繁琐操作
Spug证书平台的最大亮点之一就是其极为简化的证书申请流程,无论是新手还是经验丰富的运维专家,都可以在几分钟内轻松完成证书的申请,通过微信扫码直接登录申请,无需复杂注册,整个过程既方便又快捷。
215 17
|
9月前
|
Cloud Native 安全 Serverless
云原生应用实战:基于阿里云Serverless的API服务开发与部署
随着云计算的发展,Serverless架构日益流行。阿里云函数计算(Function Compute)作为Serverless服务,让开发者无需管理服务器即可运行代码,按需付费,简化开发运维流程。本文从零开始,介绍如何使用阿里云函数计算开发简单的API服务,并探讨其核心优势与最佳实践。通过Python示例,演示创建、部署及优化API的过程,涵盖环境准备、代码实现、性能优化和安全管理等内容,帮助读者快速上手Serverless开发。

热门文章

最新文章