从同一集群上的CronJob拒绝连接到Kubernetes Pod

时间:2019-08-15 15:54:13

标签: kubernetes google-cloud-platform kubernetes-pod kubernetes-cronjob

我目前正在使用微服务架构在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的名称。

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

3 个答案:

答案 0 :(得分:3)

与仅包含istio-proxy的工作量相比,

alpine辅助工具的启动速度很慢[strong]非常。

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

答案 1 :(得分:0)

我认为dns-pod-service包含您需要的解决方案。

在这里,如果要使用服务,可以找到服务的FQDN。如果您使用广告连播,还可以找到广告连播的FQDN名称(有/无无头服务)。

答案 2 :(得分:0)

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