首页 > 解决方案 > jenkins管道中docker gcloud容器内的kubectl问题

问题描述

我在詹金斯有一个部署阶段,如下所示。

 stage('Deploy service to K8S') {
        steps {
              withDockerContainer(image: "gcr.io/google.com/cloudsdktool/cloud-sdk", toolName: 'latest'){
                withCredentials([file(credentialsId: 'jenkins_secret', variable: 'GC_KEY')]) {
                  sh("HOME=$WORKSPACE gcloud --quiet auth activate-service-account --key-file=${GC_KEY}")
                  sh("HOME=$WORKSPACE gcloud container clusters get-credentials test --zone us-central1-c --project ${PROJECT_ID}")
                  sh("kubectl get pods")

               }
            }
        }
    } 

尽管 Jenkins 的日志显示我成功了认证。但是 kubectl get pods 命令失败并出现以下错误:与服务器 localhost:8080 的连接被拒绝 - 你指定了正确的主机或端口吗?

那里可能有什么问题?

PS我可以手动在docker里面运行它。

标签: dockerjenkinskubernetesgoogle-kubernetes-enginegcloud

解决方案


我最近遇到了这样一个问题,这有帮助: kubectl 上的 GitHub 问题

它基本上是由于错误的 kubeconfig 而失败。请检查您的文件系统中是否没有旧~/.kube/config文件。

如果这也不起作用,请尝试明确地提供 kube api 服务器,因为它似乎尝试连接到 localhost 而不是您的 kubectl api 服务器:

kubectl config set-cluster some-cluster --server=http://master.example.com:8080


推荐阅读