我正在尝试在 minkube 中启用 ingress。当我运行
minikube addons enable ingress
时,它会挂起一段时间,然后收到以下错误消息:
❌ Exiting due to MK_ADDON_ENABLE: run callbacks: running callbacks: [sudo KUBECONFIG=/var/lib/minikube/kubeconfig /var/lib/minikube/binaries/v1.19.15/kubectl apply -f /etc/kubernetes/addons/ingress-deploy.yaml: Process exited with status 1
stdout:
namespace/ingress-nginx unchanged
serviceaccount/ingress-nginx unchanged
configmap/ingress-nginx-controller unchanged
configmap/tcp-services unchanged
configmap/udp-services unchanged
clusterrole.rbac.authorization.k8s.io/ingress-nginx unchanged
clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx unchanged
role.rbac.authorization.k8s.io/ingress-nginx unchanged
rolebinding.rbac.authorization.k8s.io/ingress-nginx unchanged
service/ingress-nginx-controller-admission unchanged
stderr:
error: error validating "/etc/kubernetes/addons/ingress-deploy.yaml": error validating data: [ValidationError(Service.spec): unknown field "ipFamilies" in io.k8s.api.core.v1.ServiceSpec, ValidationError(Service.spec): unknown field "ipFamilyPolicy" in io.k8s.api.core.v1.ServiceSpec]; if you choose to ignore these errors, turn validation off with --validate=false
waiting for app.kubernetes.io/name=ingress-nginx pods: timed out waiting for the condition]
╭───────────────────────────────────────────────────────────────────────────────────────────╮
│ │
│ 😿 If the above advice does not help, please let us know: │
│ 👉 https://github.com/kubernetes/minikube/issues/new/choose │
│ │
│ Please run `minikube logs --file=logs.txt` and attach logs.txt to the GitHub issue. │
│ Please also attach the following file to the GitHub issue: │
│ - /tmp/minikube_addons_2c0e0cafd16ea0f95ac51773aeef036b316005b6_0.log │
│ │
╰───────────────────────────────────────────────────────────────────────────────────────────╯
这是我使用的 minikube 启动命令:
minikube start --kubernetes-version=v1.19.15 --vm-driver=docker
我尝试过重新安装 minikube。上周当我运行相同的命令时,它运行良好。
如果需要更多具体信息,请告诉我,我将编辑问题。有谁知道我该如何解决这个问题?
提前致谢。
有点晚了,但我希望有人觉得这有用,发生这种情况是因为 minikube 无法及时拉取镜像(ingress-nginx-controller),知道的方法是:
kubectl get pod -n ingress-nginx
如果 ingress-nginx-controller-xxxx (xxxx 是 pod 的标识符)的状态为 ImagePullBackOff 或类似的状态,则说明您处于这种情况。
要解决此问题,您需要首先描述您的 Pod:
kubectl describe pod ingress-nginx-controller-xxxxx -n ingress-nginx
查看容器/控制器/图像并复制其值(不需要复制@sha256:...如果包含它)。您必须手动拉取它,但之前可能还要删除相关部署:
kubectl delete deployment ingress-nginx-controller -n ingress-nginx
然后从虚拟机本身提取图像,在我的例子中看起来像这样:
minikube ssh docker pull k8s.gcr.io/ingress-nginx/controller:v1.2.1
等待它,然后再次尝试“插件启用入口”,看看它是否有效,它为我做到了。
降级到 minikube v1.23.2 解决了该问题。
ingress 和 ingress-dns 插件目前仅在 Linux 上受支持。 https://minikube.sigs.k8s.io/docs/drivers/docker/
您仍然可以使用 vmware 运行 minikube
# If you are using Mac:
brew install docker-machine-driver-vmware
# Start a cluster using the vmware driver:
minikube start --driver=vmware
# To make vmware the default driver:
minikube config set driver vmware
升级到 minikube v1.26.0 解决了该问题。
我的例子的错误是:
X 由于 MK_ADDON_ENABLE 而退出:运行回调:运行回调:[NewSession:新客户端:新客户端:使用 ssh 创建新的本机配置时出错:docker, &{[] [C:\Users
.minikube\machines\minikube\ id_rsa]}:打开 C:\Users .minikube\machines\minikube\id_rsa:访问被拒绝。等待 app.kubernetes.io/name=ingress-nginx pods:等待条件超时]
简单的修复方法是使用管理员运行 PowerShell(我使用的是 Windows)。 我使用的是v1.26.0。
使用以下命令启动你的 minikube,它应该可以工作
minikube start --insecure-registry="registry.k8s.io"
然后
minikube addons enable ingress
minikube delete --all --purge
minikube addons enable ingress