[英]Connection refused to Kubernetes Pod from CronJob on the same Cluster
我目前正在使用微服務架構在 Google Cloud 上使用 Kubernetes。 在集群中,我有不同的 Pod,每個 Pod 都可以使用 ClusterIp 通過 curl 與其他 Pod 通信。
我的問題是我需要使用 ClusterIp 不時調用這些 Pod 之一的端點。 為此,我創建了一個 CronJob 來卷曲 pod 的端點,但它總是返回:
curl: (7) Failed to connect to xx.xx.xx.xx port 8080: Connection refused
這是 cronJob 的 yaml。
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: cronjob-test # name of the CronJob
spec:
schedule: "*/1 * * * *" # run every minute
concurrencyPolicy: Replace
jobTemplate:
spec:
template:
spec:
containers:
- name: cronjob-test
image: appropriate/curl
args:
- /bin/sh
- -c
- curl -X POST http://${CLUSTER_IP}:${CLUSTER_PORT}/api/test/
restartPolicy: Never
與您的工作負載相比, istio-proxy
sidecar 啟動非常慢,其中僅包含alpine
。
當您的工作負載已經發出請求,而istio-proxy
尚未准備好,甚至尚未在Pilot
注冊時,這將導致問題。 這就是為什么如果您在實際發送請求之前sleep 10
它會起作用。
在我看來, dns-pod-service包含您需要的解決方案。
如果您想使用服務,可以在此處找到服務的 FQDN。 如果您使用 pod,您還可以找到 pod(帶/不帶無頭服務)的 FQDN 名稱。
我遇到了同樣的問題。 在我通過將標簽 istio-injection=disabled 添加到命名空間來禁用 istio sidecar 注入之后。 一切正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.