如何解决在 Windows 10 我尝试使用入口设置一个简单的 minikube 集群我是否认为 docker 没有将我的请求转发到 minikube 容器?
我尝试使用入口设置一个简单的 minikube 集群。
完成本教程后:https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/
我的行为:
minkube start
minikube addons enable ingress
kubectl create deployment web --image=gcr.io/google-samples/hello-app:1.0
kubectl expose deployment web --type=NodePort --port=8080
kubectl apply -f https://k8s.io/examples/service/networking/example-ingress.yaml
- 向主机文件添加条目
我无法从 PowerShell curl hello-world.info
(如果 .yaml 文件中没有指定主机,我也无法 curl $(minikube ip)
),但它可以在 docker 容器 cli 中工作:
# curl hello-world.info
Hello,world!
Version: 1.0.0
Hostname: web-79d88c97d6-pw565
我是否认为 docker 没有将我的请求转发到 minikube 容器?
Docker 检查选项卡:
Environment
CONTAINER
docker
PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Mounts
/VAR
/var/lib/docker/volumes/minikube/_data
/LIB/MODULES
/lib/modules
Ports
22/tcp
127.0.0.1:0
2376/tcp
127.0.0.1:0
32443/tcp
127.0.0.1:0
5000/tcp
127.0.0.1:0
8443/tcp
127.0.0.1:0
ingress.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
PS D:\> kubectl get ing
NAME CLASS HOSTS ADDRESS PORTS AGE
example-ingress <none> hello-world.info 192.168.49.2 80 22m
minikube version: v1.18.1
minikube docker image: gcr.io/k8s-minikube/kicbase v0.0.18
system: Windows 10
编辑
我还尝试在干净的 minikube 上创建一个 NodePort 类型的服务,以便我可以使用 cluserIP:servicePort 访问它,但同样的事情发生了。执行 minikube ssh
(IP:servicePort 或 127.0.0.1:servicePort)后,我可以在 minikube 上访问它,因此该服务工作正常,但我无法从 docker 外部对其进行卷曲。
edit2
现在我尝试了一些转发。下面的命令允许我访问 127.0.0.1:8080 上的“web”服务
PS D:\> kubectl port-forward service/web 8080
Forwarding from 127.0.0.1:8080 -> 8080
我想它类似于执行 minikube service web
,但是这不能用于 ingress。
minikube tunnel
接缝对我无能为力
edit3
我可以通过创建 2 个服务来验证入口是否正常工作:
kubectl create deployment web --image=gcr.io/google-samples/hello-app:1.0
kubectl expose deployment web --type=NodePort --port=8080
kubectl create deployment web2 --image=gcr.io/google-samples/hello-app:1.0
kubectl expose deployment web2 --type=NodePort --port=8080
并指向它的路径 - ingress.yaml:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- http:
paths:
- path: /web1
pathType: Prefix
backend:
service:
name: web
port:
number: 8080
- path: /web2
pathType: Prefix
backend:
service:
name: web2
port:
number: 8080
docker cli:
# curl 127.0.0.1/web2
Hello,world!
Version: 1.0.0
Hostname: web2-5b669f8984-5tgpn
# curl 127.0.0.1/web1
Hello,world!
Version: 1.0.0
Hostname: web-79d88c97d6-8h6dq
通过查看主机名,您可以看到不同的 Pod 做出响应。但是我仍然无法从 docker 外部访问入口
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。