1

我目前正在使用具有微服务架构的 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
4

3 回答 3

7

istio-proxy与您的工作量相比, sidecar 的启动速度非常alpine慢,仅包括在内。

当您的工作负载已经发出请求,而istio-proxy尚未准备好,甚至尚未注册时,这将导致问题Pilot。这就是为什么如果您sleep 10在实际发送请求之前它会起作用的原因。

于 2020-05-25T10:18:53.697 回答
0

我遇到了同样的问题。在我通过将标签 istio-injection=disabled 添加到命名空间来禁用 istio sidecar 注入之后。一切正常。

于 2020-03-17T16:00:16.757 回答
0

在我看来,dns-pod-service包含您需要的解决方案。

如果您想使用服务,可以在这里找到服务的 FQDN。如果您使用 pod,您还可以找到 pod 的 FQDN 名称(带/不带无头服务)。

于 2019-08-15T19:53:33.257 回答