1、服务器类型和磁盘类型不匹配
在阿里云上部署一些有状态的服务时,通常需要挂载云盘,而选购的服务器类型不同,所支持的云盘种类不同,有的仅仅支持ESSD,有的所有的都支持,因而,部署服务的时候,如果不注意服务器和云盘类型的匹配,就会挂载云盘失败。<br />报错如下:
MountVolume.MountDevice failed for volume "d-0xi82v6un2qbc28636hg" : rpc error: code = Internal desc = SDK.ServerError ErrorCode: InvalidInstanceType.NotSupportDiskCategory Recommend: https://error-center.aliyun.com/status/search?Keyword=InvalidInstanceType.NotSupportDiskCategory&source=PopGw RequestId: 9648960D-4AFB-4EC4-908D-8FCF2AA56477 Message: The instanceType of the specified instance does not support this disk category., Disk(d-0xicki2r8jcn9i1l13bq) is not supported by instance, please refer to: https://help.aliyun.com/document_detail/25378.html
根据错误提示,我们打开链接 https://error-center.aliyun.com/status/search?Keyword=InvalidInstanceType.NotSupportDiskCategory&source=PopGw
从图片上的提示,我们可以看出,实例的规格不支持云盘的类型,这时候,我们根据错误提示中的磁盘名“d-0xi82v6un2qbc28636hg”,到阿里云控制台云盘页面找到所在的磁盘
从上图中可以看出磁盘处于待挂载状态,云盘类型为ESSD云盘,这个时候我们找到磁盘应该挂载到哪个服务器上而没有挂载上。
这个时候我们回到服务的报错详情处
从上图可以看出服务的磁盘应该被挂载到172.26.109.96服务器上,我们拿到服务器的IP地址到服务器详情页查看服务器的类型规格。
服务器类型是ecs.c4.xlarge,云盘类型是ESSD类型,这时候我们在根据第一步的错误提示打开链接https://help.aliyun.com/document_detail/25378.html 查看服务器类型是否支持云盘类型。
在打开的实例规格族页面,我们根据服务器类型搜索关键字“c4.xlarge”,并未找到任何这个规格的信息,偶然脑子里忽然记起,阿里云有停售的实例,购买的这个服务器是否在停售的列表中,根据左边导航页面,终于找到了已经停售的实例规格页面。https://help.aliyun.com/document_detail/55263.html?spm=a2c4g.11186623.6.660.4bdd5c64i2fQRD
在停售的服务器实例页面,终于找到了服务器类型,从红色框框中可以看出这个实例果然不支持ESSD云盘。
接下来解决方法就很简单了,释放这个服务器,重新购买一个支持ESSD云盘的实例。
2、容器部署污点和容忍度
本以为事情已经解决,没想到重新部署服务时,又报下面错误
he persistent volume claims that the pod is scheduled on different zones
从报错可以看出磁盘应该被挂载到不同的区域,而磁盘是挂载到服务器上的,我们查看3个pod服务所在的服务器是否在同一个可用区。
从图中可以看出被挂载的磁盘果然同属于一个可用区,因此解决方法就是重新购买一个不同可用区的服务器。
从上面两个错误可以看出,云盘的挂载至少满足两个条件:
1、多个POD服务所在的磁盘不能挂载到同一个可用区的服务器上。
2、磁盘的型号要能够被服务器型号支持。
附:
在阿里云k8s集群中部署有状态服务时,需要使用动态云盘存储卷[https://www.alibabacloud.com/help/zh/doc-detail/134859.html?spm=a2c5t.11065259.1996646101.searchclickresult.37ea645dLom72v]
其中,最重要的要修改一个“StorageClass”参数,其中阿里云目前支持4个StorageClass
阿里云容器服务Kubernetes在系统初始化的时候会默认创建4个StorageClass,且使用参数的默认情况。这4个StorageClass分别为:
alicloud-disk-efficiency:高效云盘。
alicloud-disk-ssd:SSD云盘。
alicloud-disk-essd:ESSD云盘。
alicloud-disk-available:提供高可用选项,优先创建SSD云盘;如果SSD云盘售尽,则创建高效云盘。
不同的StorageClass,创建的云盘类型不同。
3、磁盘容量
阿里云上创建磁盘容量大小范围在20~32768Gi 之间,如果helm安装应用中磁盘容量小于20G也不能成功创建磁盘。