存储卷挂载不上

检查Flexvolume是否安装

在master节点上执行下面命令。

# kubectl get pod -n kube-system | grep flexvolume

flexvolume-4wh8s            1/1       Running   0          8d
flexvolume-65z49            1/1       Running   0          8d
flexvolume-bpc6s            1/1       Running   0          8d
flexvolume-l8pml            1/1       Running   0          8d
flexvolume-mzkpv            1/1       Running   0          8d
flexvolume-wbfhv            1/1       Running   0          8d
flexvolume-xf5cs            1/1       Running   0          8d
			

查看flexvolume pod状态是否为Running,且运行的数量与节点数量相同;

如果没有安装,请参考安装插件

如果运行状态不对,请参考插件运行日志分析。

检查动态存储插件是否安装

如果使用云盘的动态存储功能,需要确认是否安装动态存储插件,执行下面命令。

# kubectl get pod -n kube-system | grep alicloud-disk

alicloud-disk-controller-8679c9fc76-lq6zb     1/1 Running   0   7d
			

如果没有安装,请参考安装插件

如果运行状态不对,请参考插件运行日志分析。

如何查看存储相关日志

Flexvolume日志(master1上执行)

执行get命令查看出错的pod:
# kubectl get pod -n kube-system | grep flexvolume
执行log命令,查看出错pod的日志:
# kubectl logs flexvolume-4wh8s -n kube-system
# kubectl describe pod flexvolume-4wh8s -n kube-system

#在pod描述最后若干行是pod运行状态的描述,可以根据描述分析错误;
云盘、NAS、OSS驱动日志查看:
# 查看host节点上持久化的日志;
# 如果某个Pod挂载失败,查看pod所在的节点地址:

# kubectl describe pod nginx-97dc96f7b-xbx8t | grep Node
Node: cn-hangzhou.i-bp19myla3uvnt6zihejb/192.168.247.85
Node-Selectors:  <none>

# 登录节点,查看日志:

# ssh 192.168.247.85
# ls /var/log/alicloud/flexvolume*
flexvolume_disk.log  flexvolume_nas.log  flexvolume_o#ss.log

可以看到云盘、nas、oss挂载的日志;

provsioner插件日志(master1上执行)

执行get命令查看出错的pod:
# kubectl get pod -n kube-system | grep alicloud-disk
执行log命令,查看出错pod的日志:
# kubectl logs alicloud-disk-controller-8679c9fc76-lq6zb -n kube-system
# kubectl describe pod alicloud-disk-controller-8679c9fc76-lq6zb -n kube-system

#在pod描述最后若干行是pod运行状态的描述,可以根据描述分析错误;

Kubelet日志

# 如果某个Pod挂载失败,查看pod所在的节点地址:

# kubectl describe pod nginx-97dc96f7b-xbx8t | grep Node
Node: cn-hangzhou.i-bp19myla3uvnt6zihejb/192.168.247.85
Node-Selectors:  <none>

# 登录节点,查看kubelet日志:

# ssh 192.168.247.85
# journalctl -u kubelet -r -n 1000 &> kubelet.log

# -n的值表示期望看到的日志行数;
			

上述为获取flexvolume、provsioner、Kubelet错误日志的方法,如果无法根据日志修复状态,可以附带日志信息联系阿里云技术支持;

云盘常见问题

云盘挂载失败,出现timeout错误

如果节点为手动添加,可能是由于sts权限的问题导致,需要手动配置RAM权限:授予实例RAM角色

云盘挂载失败,出现Size错误

创建云盘对Size有如下要求。

说明
  • 普通云盘:最小5Gi
  • 高效云盘:最小20Gi
  • SSD云盘:最小20Gi

云盘挂载失败,出现zone错误

ECS挂载云盘时,必须在同一个region下面的相同zone内,否则不能挂载成功。

升级系统后,云盘有时报错:input/output error

  1. 升级flexvolume到v1.9.7-42e8198或以后版本。
  2. 对于已经出问题的Pod,需要重建。

升级命令:

# kubectl set image daemonset/flexvolume acs-flexvolume=registry.cn-hangzhou.aliyuncs.com/acs/flexvolume:v1.9.7-42e8198 -n kube-system

Flexvolume版本信息:可登录容器镜像服务控制台,单击左侧导航栏中的镜像搜索,搜索acs/flexvolume,获取Flexvolume最新版本信息。

NAS常见问题

NAS挂载时间太长

如果NAS卷包含的文件量很大,且在挂载模板中配置了chmod参数,可能导致挂载时间过长的问题;可以去掉chmod参数。

NAS挂载失败,出现timeouot错误

检查nas挂载点和集群是否在同一个vpc内,否则无法挂载。

OSS常见问题

oss挂载失败
  • 检查使用的ak是否正确。

  • 检查OSS挂载使用的URL是否网络可达。

集群升级后,容器内oss挂载目录不可用

升级集群、重启kubelet的时候,由于容器网络会重启,导致ossfs进程重启。

ossfs进程重启会导致主机与容器目录映射失效,这时需要重启容器,或重建Pod。

可以通过配置健康检查实现容器或Pod的自动重启,请参考使用阿里云 OSS