【问题标题】:Cross namespace communication in minkube on ubuntu 20.04ubuntu 20.04 上 minkube 中的跨命名空间通信
【发布时间】:2021-02-02 15:57:39
【问题描述】:

大家好,我需要一些帮助;我在 Ubuntu 20.04 上的 minikube 中使用 Kubernetes,并启用了入口插件。我希望我的 NextJS 服务通过仅通过入口控制器发出请求来与通过入口服务器连接的 Express 服务进行通信。因此,当我使用跨命名空间通信时,它不会像本教程中所示的那样工作。由于 minikube 中的 ingress-nginx 在 kube-system 命名空间上运行。


$ kubectl get service -n kube-system

NAME                                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                  AGE
ingress-nginx-controller-admission   ClusterIP   10.103.20.47   none          443/TCP                  15d
kube-dns                             ClusterIP   10.96.0.10     none          53/UDP,53/TCP,9153/TCP   36d

我正在运行的服务

$ kubectl get services  
                        
NAME             TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)     AGE
auth-mongo-srv   ClusterIP   10.96.2.86       <none>        27017/TCP   20m
auth-srv         ClusterIP   10.106.150.115   <none>        3000/TCP    20m
client-srv       ClusterIP   10.106.45.17     <none>        3000/TCP    20m
kubernetes       ClusterIP   10.96.0.1        <none>        443/TCP     26h

预期的请求 url 是:http://ingress-nginx.ingress-nginx.svc.cluster.local(通过 nginx 通信) 但是我必须通过 http://auth-srv:3000 (这是服务之间的直接通信)

我的入口配置文件

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: 'true'
spec:
  rules:
    - host: ticketing.dev
      http:
        paths:
          - path: /api/users/?(.*)
            pathType: Prefix
            backend:
              service:
                name: auth-srv
                port:
                  number: 3000
          - path: /?(.*)
            pathType: Prefix
            backend:
              service:
                name: client-srv
                port:
                  number: 3000

【问题讨论】:

  • 列出的所有服务都使用集群 IP 服务类型。我建议查看以下帖子,以比较可用的 K8s 服务类型以及每种服务类型可用的 DNS 名称:stackoverflow.com/questions/41509439/…
  • 你能用你的入口定义更新你的问题吗?
  • @thomas,我已经用 Ingress 配置文件更新了它。谢谢。
  • 我仍然不清楚 NextJs 服务的位置。它是在集群内部还是在主机中运行?你能提供命令kubectl get pods,svc --all-namespaces --show-labels的输出吗?你提到了一些你正在使用的教程?你也可以提供一些参考吗?

标签: nginx kubernetes kubectl minikube


【解决方案1】:

我看到这是关于微服务的 Stephen Grider 课程。

作为一个临时解决方案,您可以尝试下一步:

$ kubectl get ingress

获取一个 IP 地址。

您可以将其用作应用程序中的下一个链接。

192-168-49-2.kubernetes.default.svc.cluster.local

而不是 ingress-service.default.svc.cluster.local

====

More detailed information if needed.

【讨论】:

    猜你喜欢
    • 2021-03-05
    • 2021-11-10
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    • 2018-07-31
    • 1970-01-01
    • 2012-11-28
    相关资源
    最近更新 更多