我目前正在使用微服务架构在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
答案 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注入后。一切正常。