Nan*_*dha 6 mongodb kubernetes amazon-eks
我尝试按照给定的链接在 EKS 集群中安装 mongodb。(使用 mongodb-kubernetes-operator)
https://www.youtube.com/watch?v=VqeTT0NvRR4&t=1s
https://github.com/mongodb/mongodb-kubernetes-operator
kubectl apply -f config/crd/bases/mongodbcommunity.mongodb.com_mongodbcommunity.yaml
kubectl get crd/mongodbcommunity.mongodbcommunity.mongodb.com
kubectl create ns mongo
kubectl apply -k config/rbac/ --namespace mongo
kubectl get role mongodb-kubernetes-operator --namespace mongo
kubectl get rolebinding mongodb-kubernetes-operator --namespace mongo
kubectl get serviceaccount mongodb-kubernetes-operator --namespace mongo
kubectl create -f config/manager/manager.yaml --namespace mongo
kubectl get pods --namespace mongo
Run Code Online (Sandbox Code Playgroud)
kubectl apply -f config/crd/bases/mongodbcommunity.mongodb.com_mongodbcommunity.yaml
kubectl get crd/mongodbcommunity.mongodbcommunity.mongodb.com
kubectl create ns mongo
kubectl apply -k config/rbac/ --namespace mongo
kubectl get role mongodb-kubernetes-operator --namespace mongo
kubectl get rolebinding mongodb-kubernetes-operator --namespace mongo
kubectl get serviceaccount mongodb-kubernetes-operator --namespace mongo
kubectl create -f config/manager/manager.yaml --namespace mongo
kubectl get pods --namespace mongo
Run Code Online (Sandbox Code Playgroud)
检查时
kubectl apply -f config/samples/mongodb.com_v1_mongodbcommunity_cr.yaml --namespace mongo
kubectl get pods -n mongo
Run Code Online (Sandbox Code Playgroud)
example-mongodb-0pod 长时间处于挂起状态。
在描述 pod 时出现以下错误,
“运行 PreBind 插件“VolumeBinding”:绑定卷:等待条件超时”。
Nan*_*dha 12
我已就此问题联系了 AWS 支持团队并得到了以下答复。
\n\n\n从您的信件中,我了解到您在 EKS 集群中创建 mongodb pod 时遇到问题,并且在创建 pod 后,您的 pod 将处于挂起状态。
\n如果我误解了您的查询,请告诉我。感谢您使用相同的\n共享 GitHub 存储库 URL。我付出了一些努力来在我这边复制相同的问题,谢天谢地,我能够复制该问题。
\n进一步调查我的待处理 Pod 问题,我在集群上运行了以下\ndescribe 命令,
\n“kubectl 描述 pod <pending_pod_name>”
\n几分钟后,我在输出的“事件”\n部分中找到了以下行。
\n“运行 PreBind 插件“VolumeBinding”:绑定卷:超时\n等待条件”。
\n经过进一步调查,我发现您尝试在集群上部署的 mongodb pod 模块正在尝试创建 EBS 卷\nas 持久卷,这就是我收到上述错误的原因。\n我们需要 EBS CSI 驱动程序安装在集群中的附加组件用于使用 EKS 创建\nEBS 卷,如果 EBS\nCSI 驱动程序附加组件不存在,通常会出现上述错误。由于创建集群时默认情况下未安装此附加组件,因此您需要通过 EKS\n控制台附加组件选项卡安装它。
\n或者另一种可能性是,即使存在该附加组件,它也没有创建 EBS 卷所需的权限。因此,在我们将 EBS CSI 驱动程序附加组件安装到集群之前,我们需要确保已创建用于附加附加组件的 IAM 角色。这里也提到了同样的情况[1]。
\n对于您的情况,您可以通过运行以下命令来检查 EBS CSI 驱动程序是否存在:\n
\n“kubectl get pods -n kube-system”
\n并查找名称类似于“ebs-csi-controller-xxxxxxx”的 pod。如果\n找到一个,则意味着您已经安装了 EBS CSI 驱动程序,\n问题可能与权限有关。
\n为此,您需要运行以下命令。
\n“kubectl 描述 pod ebs-csi-controller-xxxxxxx -c csi-provisioner\nn kube-system”
\n这将给出驱动程序盒配置的输出。在该输出中,您需要检查名为“AWS_ROLE_ARN:”的环境,如果您的输出中不存在该环境,则意味着您尚未为该附加组件提供 IAM OIDC 提供商角色。\n因此,您需要在 IAM 控制台中创建该角色,然后从 EKS 集群控制台中删除\n现有的 EBS CSI 驱动程序加载项,然后\n再次添加 EBS CSI 驱动程序加载项,该角色为“服务\ naccount 角色”。有关将 EBS CSI 驱动程序加载项添加到集群的更多详细信息,请参阅此处 [3]。
\n如果您已有“AWS_ROLE_ARN”的值,则需要使用此文档[2] 检查角色的配置。
\n因此,牢记上述事项,我为该附加组件创建了 IAM OIDC\nprovider 角色。为此,您需要遵循此处 [2] 提到的有关如何为附加组件创建 IAM 角色的所有步骤。
\n创建 IAM OIDC 提供商角色后,我已按照本文档[3]中的步骤通过控制台安装了附加组件,对于服务帐户角色,我选择了在上面创建的 OIDC 提供商角色步。
\n安装插件后,我尝试通过运行以下命令来删除 mogodb 数据库 pod\n。
\n“kubectl 删除 -f\nconfig/samples/mongodb.com_v1_mongodbcommunity_cr.yaml”
\n然后运行以下 apply 命令来重新部署 Pod。
\n“kubectl apply -f\nconfig/samples/mongodb.com_v1_mongodbcommunity_cr.yaml”
\n检查 pod 后,我可以看到 mongodb 数据库 pod\n已进入运行状态。
\n上述是可能发生的最常见问题,如果\n以上都不是您的问题,那么请分享您方便的时间\n以及您所在的时区\n以及联系电话号码和国家\n代码,以便我们可以通过呼叫进行连接并进行屏幕共享\n故障排除会话。
\n
[1] Amazon EBS CSI 驱动程序插件:https://docs.aws.amazon.com/eks/latest/userguide/ebs-csi.html
\n[2] 如何为 EBS CSI 驱动程序插件创建 IAM OIDC 提供程序: https: //docs.aws.amazon.com/eks/latest/userguide/csi-iam-role.html
\n[3] 管理 EBS CSI 驱动程序插件:https://docs.aws.amazon.com/eks/latest/userguide/managing-ebs-csi.html
\n(支持团队提到的步骤)
\n\n\n“oidc.eks.eu-west-1.amazonaws.com/id/385AA11111111116116:sub”:\n“系统:serviceaccount:kube-system:ebs-csi-controller-sa”
\n
使用当前 oidc id 更新上述文本,并将其添加为Statement[0] -> Condition -> StringEquals中的新键值。参考最后这个信任关系json数据的完整json结构。
\n更新文本后,单击 \xe2\x80\x98 更新策略\xe2\x80\x99\n转至EKS -> 集群 -> 步骤 1 中新建的集群。单击附加组件选项卡,添加新的。
\n在弹出窗口中选择 Name 作为Amazon EBS CSI Driver。版本为最新。选择“角色”作为步骤 7 中创建的角色。如果下拉列表中未列出上述角色,请使用重新加载按钮重新加载该部分,然后单击添加。
\n一段时间后,新的附加组件将变得活跃。然后运行此kubectl get pods -n kube-system命令,我们应该看到如图所示的 csi pod。
ebs-csi-controller-68d49f84c8-sl7w6 6/6 Running 0 109s \n ebs-csi-controller-68d49f84c8-w2k6r 6/6 Running 0 2m19s \n ebs-csi-node-ldmsm 3/3 Running 0 2m20s\nRun Code Online (Sandbox Code Playgroud)\n然后运行问题中给出的命令。
\n以下字典是角色的可信关系json
\n ebs-csi-controller-68d49f84c8-sl7w6 6/6 Running 0 109s \n ebs-csi-controller-68d49f84c8-w2k6r 6/6 Running 0 2m19s \n ebs-csi-node-ldmsm 3/3 Running 0 2m20s\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
4327 次 |
| 最近记录: |