【发布时间】:2021-05-11 09:16:00
【问题描述】:
我对 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、extraArgs cloud-provider aws on ClusterConfig, 在 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 上。
【问题讨论】:
-
我解决了在所有节点/master 中手动向 kubeadm-flags.env 添加标志的问题,如stackoverflow.com/a/60325491/1169158 中所述 - 希望这会有用!
-
您可以添加自己的答案并接受它,让其他人知道您不再需要帮助
标签: amazon-web-services kubernetes amazon-ec2 kubelet