繁体   English   中英

在使用 nginx 入口时,我可以通过 POD IP 地址(而不是主机地址)获得 curl 的响应吗

[英]Can I get response of curl through POD IP address (instead of host address) while using nginx ingress

我正在使用nginx ingress controller下面是 2 个服务的入口规则文件:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  namespace: kube-system
  annotations:
    kubernetes.io/ingress.class: nginx
    kubernetes.io/ingress.allow-http: "false"
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  tls:
  - hosts:
    - rewrite.bar.com.com
    secretName: ingress-tls
  rules:
  - host: rewrite.bar.com.com
  - http:
      paths:
      - path: /my-service-1/(.*)
        pathType: Prefix
        backend:
          service:
            name: my-service-1
            port:
              number: 36995
      - path: /my-service-2/(.*)
        pathType: Prefix
        backend:
          service:
            name: my-service-2
            port:
              number: 32243

现在通过 service-2 的 shell 使用以下命令我可以 curl 到 service-1 api 端点,这里我需要传递主机('wire.com')

curl --resolve wire.com:443:10.22.148.179 https://wire.com:32243/GetData

以上 curl 使用主机地址给我回复成功,这里没有问题!

现在我使用的是 POD 的 IP 地址而不是主机地址,但这不会给我响应,它总是给出像curl: (52) Empty reply from server之类的错误。 这里10.22.148.179是我的入口公共 IP 地址, 10.2.0.58是我的 POD IP 地址。

curl --resolve enabledservices-dev-aks.honeywell.com:443:10.22.148.179 http//10.2.0.58:32243/GetData

我的目标是通过 IP 地址到达 POD/服务 api 端点,这可能与 Ingress 集成的上下文有关吗?

将此从评论转移到答案。


问题是在服务器由 HTTPS 提供服务时使用了 curl 请求和 HTTP 协议。 这是(52) Empty reply from server error 的原因。

curl 的请求应通过指定如下协议来完成:

curl https://test.example.com:8888

Ingress用作集群的单个入口点,因此可以使用cluster-ip服务类型在集群内部公开所有内部服务 - 请参阅kubernetes 服务类型

如果需要从集群内部测试任何内部服务/pod,则应从集群执行请求以便能够命中cluster-ip ,因为cluster-ip只能在集群内访问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM