kubernetes - 无法使用 Minikube 在 Windows Home 上的浏览器中访问 Kubernetes Ingress?
问题描述
我面临的问题是我无法使用它的 IP 访问浏览器上的 Kubernetes Ingress。我已经在 Windows 10 Home 上安装了 K8s 和 Minikube。
我正在关注这个官方文档 - https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/
首先,我通过在 Minikube 上运行以下命令来创建部署。
kubectl 创建部署网络 --image=gcr.io/google-samples/hello-app:1.0
接下来,我公开了我在上面创建的部署。为此,我运行了以下命令。
kubectl 暴露部署 web --type=NodePort --port=8080
这创建了一个服务,可以通过运行以下命令来查看:
kubectl get service web
我现在可以通过运行以下命令访问浏览器上的服务:
minikube 服务网络
接下来,我通过运行以下命令创建了一个 Ingress:
kubectl apply -f https://k8s.io/examples/service/networking/example-ingress.yaml
顺便说一句,入口 yaml 代码是:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- host: hello-world.info
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web
port:
number: 8080
入口被创建,我可以通过运行以下命令来验证它:
kubectl get ingress
入口 ip 列为192.168.49.2
. 所以这意味着如果我应该在浏览器中打开它,那么它应该打开,但不幸的是没有。显示无法访问网站。请参阅下面的屏幕截图。
问题是什么。请给我一个解决方案?
我还在 etc\hosts 文件中添加了映射。
192.168.49.2 hello-world.info
然后我也尝试在浏览器上打开 hello-world.info 但没有运气。
在下图中,我已经完成了 pinghello-world.info
到 IP 地址 192.168.49.2 的操作。这表明 etc\hosts 映射是正确的:
我也卷曲到 minikube ip 和 tohello-world.info
并且都超时。见下图:
提供以下kubectl describe services web
详细信息:
Name: web
Namespace: default
Labels: app=web
Annotations: <none>
Selector: app=web
Type: NodePort
IP: 10.100.184.92
Port: <unset> 8080/TCP
TargetPort: 8080/TCP
NodePort: <unset> 31880/TCP
Endpoints: 172.17.0.4:8080
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
给出以下kubectl describe ingress example-ingress
输出:
Name: example-ingress
Namespace: default
Address: 192.168.49.2
Default backend: default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
Host Path Backends
---- ---- --------
hello-world.info
/ web:8080 172.17.0.4:8080)
Annotations: nginx.ingress.kubernetes.io/rewrite-target: /$1
Events: <none>
请帮忙。谢谢你。
解决方案
与 OP 有相同的问题,并且只能在minikube ssh
下面共享 ingress.yaml。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: frontend-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
defaultBackend:
service:
name: default-http-backend
port:
number: 80
rules:
- host: myapp-com # domain (i.e. need to change host table)
http:
paths: # specified path below, only be working when there is more than 1 path; If only having 1 path, it's always using / as path
- path: /
pathType: Prefix
backend:
service:
name: frontend-service # internal service
port:
number: 8080 # port number that internal service exposes
- path: /e($|/)(.*)
pathType: Prefix
backend:
service:
name: express-service # internal service
port:
number: 3000 # port number that internal service exposes
推荐阅读
- javascript - 部分模拟模块
- java - 我无法理解冒泡排序中的 while 循环条件
- regex - 如何在 PostgreSQL 中使用正则表达式每 2 个字符放一个点?
- visual-c++ - C++ 中的 CListCtrl::GetSelectedColumn() 函数在 Windows 10 操作系统中无法按预期工作
- c - 如何加快我的最小深度二叉树函数?
- windows - 如何解决“导航后 UWP 应用停止”的问题?
- php - 如何组织 JSON 以更快地访问信息?
- python - python,当答案错误时如何退出while循环
- python - 如何使用字符编码将随机字节存储在文件中?
- android - 用于自定义类的 Dagger Android 可能吗?