繁体   English   中英

挂载失败:在 Kubernetes 使用 EBS 卷时退出状态 32

[英]mount failed: exit status 32 when use EBS volume at Kubernetes

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

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

  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 cloud-provider aws,在 EC2 实例中设置角色,如 cloud-provider-aws 文档(控制平面到主机,节点到节点)。

然后我使用以下文件将节点加入集群(通过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中添加标志--cloud-provider=aws

希望这会很有用。

我看到了 Concourse 工作人员的 StatefulSet Pod 的确切问题。 Pod 在 Init state 中等待处理,因为事实证明它无法安装具有 PVC 的 PV。

我所做的是:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM