簡體   English   中英

同一集群上的 CronJob 與 Kubernetes Pod 的連接被拒絕

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM