我在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 端點,在這里我需要傳遞啟用了 TLS 的主機('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 背景關系有關?
uj5u.com熱心網友回復:
將此從評論轉移到答案。
問題是服務器通過 HTTPS 提供服務時使用的 curl 請求和 HTTP 協議。這就是(52) Empty reply from server錯誤的原因。
curl 請求應該通過指定協議來完成,如:
curl https://test.example.com:8888
Ingress用作集群的單個入口點,因此可以使用cluster-ip服務型別在集群內部公開所有內部服務- 請參閱kubernetes 服務型別。
如果需要從集群內部測驗任何內部服務/pod,則應從集群執行請求才能命中 a,cluster-ip因為cluster-ip只能在集群內訪問。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/401721.html
