mount failed:在Kubernetes上使用EBS卷时退出状态32



我对AWS的k8s设置集群有点困惑。我正试着使用EBS卷作为持久存储,但无法找到信息足够了(我遗漏了一些东西或者这是aws提供商https://kubernetes.github.io/cloud-provider-aws/的所有文档?

当我尝试将部署配置应用到我的集群时,从kubectl describe pods是:

Type     Reason                  Age              From                     Message
----     ------                  ----             ----                     -------
Normal   Scheduled               7s               default-scheduler        Successfully assigned default/mssql-deploy-67885c9f84-9xx7c to ip-172-31-0-215.sa-east-1.compute.internal
Normal   SuccessfulAttachVolume  4s               attachdetach-controller  AttachVolume.Attach succeeded for volume "mssql-volume"Normal   SuccessfulAttachVolume  4s               attachdetach-controller  AttachVolume.Attach succeeded for volume "mssql-volume"
Warning  FailedMount             3s (x4 over 6s)  kubelet                  MountVolume.SetUp failed for volume "mssql-volume" : mount failed: exit status 32
Mounting command: mount
Mounting arguments:  -o bind /var/lib/kubelet/plugins/kubernetes.io/aws-ebs/mounts/vol-02efbeface5569c51 /var/lib/kubelet/pods/01537252-4323-4e7c-9f05-a2a730498ecd/volumes/kubernetes.io~aws-ebs/mssql-volume
Output: mount: /var/lib/kubelet/pods/01537252-4323-4e7c-9f05-a2a730498ecd/volumes/kubernetes.io~aws-ebs/mssql-volume: special device /var/lib/kubelet/plugins/kubernetes.io/aws-ebs/mounts/vol-02efbeface5569c51 does not exist.

我设置了主节点,我认为这是使用aws的必要条件将主机名设置为priv dns,在ClusterConfig上设置extraArgs云提供商aws。在EC2实例中设置角色,如云提供商-aws文档(控制平面为master);节点到节点)

然后我用以下文件(通过kubeadm join --config node.yaml)将节点加入集群:

apiVersion: kubeadm.k8s.io/v1beta1
kind: JoinConfiguration
discovery:
bootstrapToken:
token: "TOKEN-FROM-MASTER"
apiServerEndpoint: "IP-PORT-FROM-MASTER"
caCertHashes:
- "SHA-FROM-MASTER"
nodeRegistration:
name: $(hostname)
kubeletExtraArgs:
cloud-provider: aws

由于集群能够附加卷(这是真的,因为我在AWS控制台进行了验证),我认为问题出在节点上的kubelet上。

尽管aws提供商文档非常薄弱,但解决方案很简单。事实上,我的搜索是错误的,错误的重要部分是最后,我们读到"特殊设备……"不存在"

有了这个,我在stackoverflow https://stackoverflow.com/a/60325491/1169158找到了这个答案。

最后,我们所需要做的就是在所有节点的/var/lib/kubelet/kubeadm-flags.env+ master中添加--cloud-provider=aws标志。

希望对大家有帮助。

我看到了Concourse worker的StatefulSet Pod的确切问题。Pod在Init状态下挂起,因为它无法挂载它有PVC的PV。

我所做的是:

kubectl delete pvc <id> -n <namespace> & kubectl delete pod concourse-worker-0 -n <namespace>statfulset重新创建了两个对象,并且Concourse worker Pod能够成功启动。

相关内容

  • 没有找到相关文章

最新更新