故障排查
本文介绍阿里云容器服务ACK集群在使用过程中常见问题的故障分析和排查流程。
ACK集群异常
- Kubernetes集群创建失败的解决方法
- 添加Kubernetes集群节点的常见问题
- 容器镜像仓库构建服务失败问题排查
- 容器镜像服务源码绑定失败问题排查
- Kubernetes集群如何指定安全组
- Kubernetes集群网络异常的排查方法
更多关于容器服务ACK的常见问题,请参见常见问题。
容器服务ACK应用故障排查
- Pod停留在Pending状态
表示该Pod不能被调度到任何一个节点上,通常是因为集群中缺乏需要的资源导致。您可以通过
kubectl describe pod
命令查看事件和排查。具体操作,请参见Pod状态为Pending。 - Pod停留在Waiting状态
说明此Pod已经被调度到某个节点,但是却不能运行。通常是私有镜像、公网镜像拉取不成功或镜像地址不存在等问题导致。具体操作,请参见Pod状态为Waiting。
- Pod不断被拉起但状态为Crashing或者Unhealthy
通常表示Pod已经完成调度并启动,但是启动失败,通常是由配置、权限等问题造成。您可以查看容器的日志,以诊断容器中应用程序出现的问题。具体操作,请参见Pod状态为Crash或者Unhealthy。
- Pod状态为Running但是没有正常工作
通常是由部署使用的YAML文件中存在的部分字段拼写错误造成的,您可以通过校验部署来进行故障排查。具体操作,请参见Pod状态为Running但是没正常工作。
- Service无法正常工作
在排除网络插件自身的问题外,最可能的是
label
配置有问题,您可以通过查看endpoints
进行故障排查。具体操作,请参见检查Service。
如何升级集群?
升级集群有如下两种方案:
- 升级集群的Kubernetes版本,具体操作,请参见升级ACK集群。
- 从ACK免费版升级到ACK Pro付费版,具体操作,请参见热迁移ACK标准版集群至ACK Pro版集群。
排查故障的经典步骤与常见原因
- ECS实例之间的互通是否有异常?具体操作,请参见ECS实例间ping不通的排查思路。
- 安全组是否配置有误?具体操作,请参见安全组检查。
关于如何配置ECS安全组,请参见ECS安全组配置案例。
- 使用的RAM用户(即子账户)是否被正确授权?具体操作,请参见为RAM用户授权。
- 采用
docker run
的方式执行命令,确认运行环境是否正常? - 当集群异常时,是否可以使用kubectl命令登录集群?执行
kubectl get event
命令是否有异常?具体操作,请参见获取集群KubeConfig并通过kubectl工具连接集群。 - 在K8s里通过一个Pod去访问目标的Pod是否正常?具体操作,请参见Pod访问其他节点上的Pod异常。
- 通过Service方式访问应用是否正常?具体操作,请参见通过使用已有SLB的服务公开应用。
- 通过Ingress方式访问应用是否正常?具体操作,请参见通过ALB Ingress访问服务。
- API Server、Scheduler或Controller日志是否有异常?
- Docker Daemon日志是否有异常?如果报错信息提示
docker daemon is not running
,您只需要在cmd.exe中执行,开启守护进程即可。- 如果您使用的系统是Windows,请执行以下命令开启守护进程:
cd C:\Program Files\Docker\Docker DockerCli.exe -SwitchDaemon
- 如果您使用的系统是Linux,请执行以下命令开启守护进程:
service docker restart
- 如果您使用的系统是Windows,请执行以下命令开启守护进程:
如何通过查看日志排查故障?
您可以通过以下命令查询日志信息,排查分析故障:
- 查看事件:
kubectl describe ****
- Docker引擎日志:
journalctl -u docker -f
- Kubelet日志:
journalctl -u kubelet -f
- API Server日志:
docker logs <api server container id>
说明 该命令用于查看专有集群的API Server日志,如果是托管集群,具体操作,请参见收集ACK Pro版集群控制平面组件日志。 - Scheduler日志:
docker logs <scheduler container id>
- Worker proxy日志:
docker logs <worker proxy container id>
- Master proxy日志:
docker logs <master proxy container id>
- Controller日志:
docker logs <controller container id>
,<controller container id>
涉及的组件包括kube-controller、alicloud-monitor-controller、alicloud-disk-controller和 cloud-controller。
建议您将上述信息上传到日志分析服务进行分析。具体操作,请参见快速入门。