Kubernetes cronJob使用带有标头的CURL调用REST API在CURL(6)中失败:无法解析主机

Kubernetes cronJob使用带有标头的CURL调用REST API在CURL(6)中失败:无法解析主机,curl,kubernetes,restapi,request-headers,Curl,Kubernetes,Restapi,Request Headers,如何使用kubernetes在cronJob中触发restAPI[POST with header have authentication and parameter]。当我创建cron并尝试运行它时,我得到了以下错误 curl: (7) Failed to connect to localhost port 8080: Connection refused 当我将主机替换为实际主机而不是本地主机时,仍然会显示以下错误: curl: (6) Could not resolve host :

如何使用kubernetes在cronJob中触发restAPI[POST with header have authentication and parameter]。当我创建cron并尝试运行它时,我得到了以下错误

curl: (7) Failed to connect to localhost port 8080: Connection refused
当我将主机替换为实际主机而不是本地主机时,仍然会显示以下错误:

 curl: (6) Could not resolve host : xxxHostName
我可以使用命令提示符和邮递员来点击curl

下面是我正在尝试运行的cronJob

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: e2em-rule-violation-job  
spec:
  schedule: "*/3 * * * *"
  concurrencyPolicy: Allow
  failedJobsHistoryLimit: 1
  successfulJobsHistoryLimit: 3
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: e2em-rule-violation-job 
            image: curlimages/curl:7.72.0
            args:
            - /bin/sh
            - -ec
            - "curl -H \"Authorization: Basic c3lzdGVtOm1hbmFnZQ==\" -H \"InternalUser: true\" -X POST  \"http://localhost:8080/myIntegration/rest/executeScheduledTask\""
          restartPolicy: OnFailure
下面是一个成功的试运行,但在其创建时作业失败

W1006 13:35:34.443357   18304 helpers.go:535] --dry-run is deprecated and can be replaced with --dry-run=client.
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"batch/v1beta1","kind":"CronJob","metadata":{"annotations":{},"name":"e2em-rule-violation-job","namespace":"default"},"spec":{"concurrencyPolicy":"Allow","failedJobsHistoryLimit":1,"jobTemplate":{"spec":{"template":{"spec":{"containers":[{"args":["/bin/sh","-ec","curl -H \"Authorization: Basic c3lzdGVtOm1hbmFnZQ==\" -H \"InternalUser: true\" -X POST  \"http://localhost:8080/myIntegration/rest/executeScheduledTask\""],"image":"curlimages/curl:7.72.0","name":"e2em-rule-violation-job"}],"restartPolicy":"OnFailure"}}}},"schedule":"*/3 * * * *","successfulJobsHistoryLimit":3}}
  name: e2em-rule-violation-job
  namespace: default
spec:
  concurrencyPolicy: Allow
  failedJobsHistoryLimit: 1
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - args:
            - /bin/sh
            - -ec
            - 'curl -H "Authorization: Basic c3lzdGVtOm1hbmFnZQ==" -H "InternalUser:
              true" -X POST  "http://localhost:8080/myIntegration/rest/executeScheduledTask"'
            image: curlimages/curl:7.72.0
            name: e2em-rule-violation-job
          restartPolicy: OnFailure
  schedule: '*/3 * * * *'
  successfulJobsHistoryLimit: 3
您案例中的问题在于上述旋度。看,你在试图卷曲不存在的地址。运行cronjob后会发生什么

  • k8s创建
    cronjob
    e2em规则违规作业
  • cronjob
    e2em违反规则作业
    创建
    POD
  • curl命令正试图从这个吊舱内部运行
  • 您不知道本地主机:8080是什么。与你的应用程序运行的地方相比,你的pod绝对有另一个本地成本…这个地址没有公开,你的pod无法访问它。Plus
    image:curlimages/curl:7.72.0
    没有暴露端口8080

    你们能做的测试就是

  • 使用curlpod创建正常部署,比如说
    NEWCURLPOD
  • 连接到
    NEWCURLPOD
    并执行您想要运行的初始命令。示例:
    kubectl exec-ti{NEWCURLPOD}-n{property_NAMESPACE}--curl blablabla
  • 如果这不起作用-请检查dns。 如果你的应用程序在同一个集群中运行-你应该正确地公开它的服务以达到目标,但要确保这不是
    localhost:8080

    试运行

    下面是一个成功的试运行,但当其 创造


    在运行干运行时-它只检查和预览对象,不应该在那里执行curl-因此您可以看到它成功完成。

    您好,但是如果我没有通过标题,它可以正常工作。我提到的问题只有在添加标题时才会出现
    "curl -H \"Authorization: Basic c3lzdGVtOm1hbmFnZQ==\" -H \"InternalUser: true\" -X POST  \"http://localhost:8080/myIntegration/rest/executeScheduledTask\""