"MountVolume.SetUp失败,针对卷“webhook-cert”:找不到密钥“ingress-nginx-admission”。"

3
我想在我的Kubernetes集群中安装nginx控制器。我在一个服务器上设置了我的主节点,另一个服务器上设置了工作节点。我正在使用Ubuntu 20.04。
我按照链接(https://github.com/kubernetes/ingress-nginx/blob/main/deploy/static/provider/cloud/1.23/deploy.yaml)进行操作,并使用“kubectl apply -f file_name.yaml”来安装控制器。
当我获取pod时,它显示:
ubuntu@masternode:~/hello_deploy$ kubectl get pod -n ingress-nginx
NAME                                        READY   STATUS              RESTARTS   AGE
ingress-nginx-admission-create-lrzll        1/1     Running             0          27s
ingress-nginx-admission-patch-x46xh         1/1     Running             0          27s
ingress-nginx-controller-7575567f98-s9968   0/1     ContainerCreating   0          27s

然而,当我检查了Pod时,它显示:
Events:
  Type     Reason       Age                  From               Message
  ----     ------       ----                 ----               -------
  Normal   Scheduled    14m                  default-scheduler  Successfully assigned ingress-nginx/ingress-nginx-controller-7575567f98-s9968 to workernode
  Warning  FailedMount  109s (x14 over 14m)  kubelet            MountVolume.SetUp failed for volume "webhook-cert" : secret "ingress-nginx-admission" not found
  Warning  FailedMount  45s (x6 over 12m)    kubelet            Unable to attach or mount volumes: unmounted volumes=[webhook-cert], unattached volumes=[webhook-cert kube-api-access-n2xrb]: timed out waiting for the condition

我看到了另一个错误信息:

Unable to attach or mount volumes: unmounted volumes=[webhook-cert], unattached volumes=[webhook-cert kube-api-access-n2xrb]: timed out waiting for the condition

有人可以告诉我这是什么原因吗?有什么方法/设置可以解决这些问题吗?
谢谢。

你是如何部署你的Kubernetes集群的? - Bguess
你尝试过@bguess发布的解决方案了吗? - Ramesh kollisetty
3个回答

1

我通过创建一个 ingress-nginx-admission-token-xxxxxx 密钥的副本并将其命名为 ingress-nginx-admission,然后删除控制器 pod 并重新创建来解决问题。

步骤:

  1. kubectl edit secret ingress-nginx-admission-token-xxxxx -n ingress-nginx
  2. 更改 name 属性为 ingress-nginx-admission
  3. 保存更改,然后在 /tmp 目录下保存新的 yml 文件
  4. 使用 kubectl apply -f /tmp/<yml-file> 应用新的密钥
  5. 删除控制器 pod 并重新创建

0

你好,希望你在Kubernetes的旅程中过得愉快。

我部署了来自https://github.com/kubernetes/ingress-nginx/blob/main/deploy/static/provider/cloud/1.23/deploy.yaml的清单,并且它对我很有效。(我正在使用kind(在docker中的kubernetes)集群)。

然而,很多人似乎遇到了同样的问题(请参见此处https://github.com/kubernetes/ingress-nginx/issues/5932)。

在上面的链接(github问题5932)中,人们通过以下方式解决了他们的问题:

  • 重新启动Webhook所在机器的Docker引擎(可能是由于docker的网络桥有问题)
  • 在apply.yaml文件中将“--ingress-class=nginx”修改为“--ingress-class=nginx2”,因为存在一个同名的入口类“nginx”
  • 尝试将其部署到另一个集群(托管的EKS、GKE,或者如果是测试可以使用minikube或kind,就像我一样)
希望这能解决你的问题,(你也可以检查一下你的音量供应器配置?)
猜测。

你找到解决方案了吗? - Bguess
还没有。还在试用中。 - maantarng
如果是本地个人集群,为什么不使用“kind”(Kubernetes in Docker)呢? - Bguess

0
只需删除 ingress-controller pod,然后它将成功重新创建。
kubectl -n ingress-controller delete <<your ingress-controller pod name>>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接