在 Minikube 中使用 ingress 的示例未能正常工作
我试图在 Minikube 中使 ingress 控制器正常工作,并遵循 K8s 文档 here 中的步骤,但看到了与 Minikube 的 IP 地址不同的 ingress 控制器的 IP 地址 (示例似乎表明它们应该相同):
$ kubectl get ingress
NAME HOSTS ADDRESS PORTS AGE
example-ingress hello-world.info 10.0.2.15 80 12m
$ minikube ip
192.168.99.101
当我尝试连接到 Minikube IP 地址时 (直接使用地址而不是将其添加到我的本地 hosts 文件中),我从 NGINX 中收到了一个 "Not found" 的响应:
$ curl http://`minikube ip`/
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>openresty/1.15.8.1</center>
</body>
</html>
当我尝试连接到与 ingress 控制器关联的 IP 地址时,它就一直挂起。
我应该像 K8s 文档所示的那样期望它们的地址是一样的吗?
一些额外的信息:
$ kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
minikube Ready master 2d23h v1.16.0 10.0.2.15 <none> Buildroot 2018.05.3 4.15.0 docker://18.9.9
$ kubectl get ingresses example-ingress -o yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"networking.k8s.io/v1beta1","kind":"Ingress","metadata":{"annotations":{"nginx.ingress.kubernetes.io/rewrite-target":"/$1"},"name":"example-ingress","namespace":"default"},"spec":{"rules":[{"host":"hello-world.info","http":{"paths":[{"backend":{"serviceName":"web","servicePort":8080},"path":"/"}]}}]}}
nginx.ingress.kubernetes.io/rewrite-target: /$1
creationTimestamp: "2019-10-28T15:36:57Z"
generation: 1
name: example-ingress
namespace: default
resourceVersion: "25609"
selfLink: /apis/extensions/v1beta1/namespaces/default/ingresses/example-ingress
uid: 5e96c378-fbb1-4e8f-9738-3693cbce7d9b
spec:
rules:
- host: hello-world.info
http:
paths:
- backend:
serviceName: web
servicePort: 8080
path: /
status:
loadBalancer:
ingress:
- ip: 10.0.2.15
除了已经接受的回答外,minikube 现在还有一个 tunnel 命令,允许您为您的服务生成外部 IP 地址,直接在主机上访问,而不使用常规的 minikube ip。
在单独的终端中运行 minikube tunnel。这将在前台作为守护程序运行。
在另一个终端中,执行 kubectl apply -f <file_name> 命令以部署所需的服务。它应该为您生成一个 IP 地址,该地址直接路由到您的服务,并在该地址上的端口 80 上可用。
有关 minikube 文档的更多信息:https://minikube.sigs.k8s.io/docs/tasks/loadbalancer/
我在 Windows 11 上使用 Minikube 成功了
minikube start --vm-driver=hyperv
安装 minikube Ingress 控制器
minikube addons enable ingress
minikube addons enable ingress-dns
部署 Helm Chart
helm install ...
获取 Kubernetes IP 地址
nslookup <host-found-in-ingress> $(minikube ip)
添加到 etc/host
<minikube-ip> <domain-url>
上线!
curl <domain-url>
下面是对我有效的步骤:
运行
minikube start运行
minikube addons enable ingress运行
minikube addons enable ingress-dns等待看到 ingress-nginx-controller-XXXX 已经在运行,可以使用
Kubectl get pods -n ingress-nginx命令检查使用 K8s 示例 YAML 文件 创建一个 ingress
更新 service 部分,使它指向你已经创建的 NodePort Service
在 MacOS 的 /etc/hosts 文件中添加
127.0.0.1 hello-world.info(注意,不要使用 Minikube 的 IP)运行
minikube tunnel(保持窗口打开。输入密码后不会再出现任何消息,光标会闪烁)在浏览器中访问
hello-world.info(或者你在 YAML 文件中配置的任何主机名),应该能够看到效果。
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

我在 Linux 环境(GCP 上)中重现了您的情景,我也有不同的 IP:
user@bf:~$ minikube ip 192.168.39.144 user@bf:~$ kubectl get ingresses NAME HOSTS ADDRESS PORTS AGE example-ingress * 192.168.122.173 80 30m您的问题与您拥有不同的 IP 无关。该指南指示我们创建一个入口,并具有以下规则:
spec: rules: - host: hello-world.info该规则告诉入口服务期望一个名为
hello-world.info的 DNS 记录。如果您继续按照指南,它会指示您在主机文件上创建一个条目,该条目指向您的入口 IP 或 Minikube IP。(如果您想使用 curl IP 而不是 DNS 名称,则需要从入口中删除 host 规则)
它应该看起来像这样:
apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: example-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - http: paths: - path: / backend: serviceName: web servicePort: 8080应用您的更改:
user@bf:~$ kubectl apply -f example-ingress.yaml并使用 -Lk 选项 curl IP 以克服与安全连接相关的问题。
user@bf:~$ curl -Lk 192.168.39.144 Hello, world! Version: 1.0.0 Hostname: web-9bbd7b488-l5gc9