【发布时间】:2021-09-13 22:53:49
【问题描述】:
我是 K8s 的新手,目前正在学习使用 K8s 的课程。我在本地机器上使用 minikube。我被困在需要直接与 ingress-nginx 通信的部分,而 ingress-nginx 恰好位于单独的命名空间中。
以下是有关我的设置的一些信息。
✗ client (main) ✗ kubectl get namespace
NAME STATUS AGE
default Active 25d
ingress-nginx Active 21d
kube-node-lease Active 25d
kube-public Active 25d
kube-system Active 25d
服务
✔︎ client (main) ✗ kubectl get services -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller NodePort 10.105.88.90 <none> 80:30306/TCP,443:31814/TCP 21d
ingress-nginx-controller-admission ClusterIP 10.101.75.17 <none> 443/TCP 21d
我的 ingress-srv.yaml 文件
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: "true"
labels:
name: ingress-service
spec:
rules:
- host: ticketing.dev
http:
paths:
- pathType: Prefix
path: "/api/users/(.*)"
backend:
service:
name: auth-srv
port:
number: 3000
- pathType: Prefix
path: /?(.*)
backend:
service:
name: client-srv
port:
number: 3000
我在github 上查找了一些信息,为了进行交叉通信,我需要做的是http://<service>.<namespace>.svc.cluster.local:<port>/。基于这些信息,我想出了
http://ingress-nginx-controller.ingress-nginx.svc.cluster.local 并使用 curl 进行测试。
✔︎ client (main) ✗ curl http://ingress-nginx-controller.ingress-nginx.svc.cluster.local
curl: (6) Could not resolve host: ingress-nginx-controller.ingress-nginx.svc.cluster.local
我正在学习名为 Microservices with Node JS and React 的课程
希望您的回答和见解。 谢谢。
【问题讨论】:
-
为什么需要向
nginx-ingress-controller service发送电话?它应该在您的应用程序正在运行的域名上监听。或者直接转至app-service -
嗨,我正在通过微服务课程学习 k8s,其中提到应该联系 ingress-nginx。他建议使用
http://<service>.<namespace>.svc.cluster.local:<port>/my/api/route,以便修复 NextJS 中的错误。这个问题实际上与这个现有问题stackoverflow.com/questions/64707777/… 相关或相似,但我不确定为什么会得到不同的结果。 -
你在哪里运行了这个 curl 命令?如果您在主机上运行它,您将无法访问
internalkubernetes 集群 DNS。您可以通过kubectl run test --image nginx --attach --leave-stdin-open --rm -it -- curl ingress-nginx-controller.ingress-nginx.svc.cluster.local在集群内测试它的可访问性——这将运行一个带有nginx图像的pod,然后从集群内部对nginx ingress controller运行curl。然后ctrl-c和kubectl logs test。你会看到答案的。
标签: nginx kubernetes