【问题标题】:not able to deploy k8s pod when tried through jenkins job on GCE通过 GCE 上的 jenkins 作业尝试时无法部署 k8s pod
【发布时间】:2017-12-10 13:46:09
【问题描述】:

我在 google 容器引擎中创建了一个 cluster 并且我已经部署了一个在其中运行 jenkins 的 pod。然后配置了一项将构建、运行、推送和部署sample 应用程序的作业。因此,由于以下错误,所有这些作业步骤都在执行,除了“deploy-sampleapp-step”

[sampleapp_master-HAWDXNK5BCRQ7EWPPOHGW7RUWBBM25WIAIKOP6UBHIDYZGTMQIJA] Running shell script
+ kubectl --namespace=production apply -f k8s/services/ error: group map[:0xc820374b60 apps:0xc820374bd0 authorization.k8s.io:0xc820374c40 componentconfig:0xc820374d90 extensions:0xc820374e00 policy:0xc820374e70 storage.k8s.io:0xc8202cc770 federation:0xc820374af0 autoscaling:0xc820374cb0 batch:0xc820374d20 rbac.authorization.k8s.io:0xc820374ee0 authentication.k8s.io:0xc820374fc0] is already registered

所以我使用的是集群版本 1.6.4

那么有没有人知道如何升级这个问题
提前致谢 添加一些可能对上述问题有用的更多信息-

user@yproject-173008:~$ kubectl 集群信息
Kubernetes master 运行在https://IP GLBCDefaultBackend 在 https://IP/api/v1/proxy/namespaces/kube-system/services/default-http-backend
运行 Heapster 运行在 https://IP/api/v1/proxy/namespaces/kube-system/services/heapster
KubeDNS 运行在 https://IP/api/v1/proxy/namespaces/kube-system/services/kube-dns
kubernetes-dashboard 运行在
https://IP/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard
要进一步调试和诊断集群问题,请使用“kubectl cluster-info dump”。

user@yproject-173008:~$ kubectl 版本
客户端版本:version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.6", GitCommit:"7fa1c1756d8bc963f1a389f4a6937dc71f08ada2", GitTreeState:"clean", BuildDate:"2017-06-16T18:34: 20Z", GoVersion:"go1.7.6", 编译器:"gc", 平台:"linux/amd64"}
服务器版本:version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.4", GitCommit:"d6f433224538d4f9ca2f7ae19b252e6fcb66a3ae", GitTreeState:"clean", BuildDate:"2017-05-19T18:33: 17Z", GoVersion:"go1.7.5", 编译器:"gc", 平台:"linux/amd64"}

【问题讨论】:

    标签: docker jenkins kubernetes google-compute-engine


    【解决方案1】:

    您收到此错误是因为 kubeAPI 的版本和 kubectl 的版本不同。要获取版本,请编辑构建目录中的 Jenkins 文件以打印在执行作业时已在 jenkins 从属环境中使用的 kubectl 客户端版本。就我而言,它位于 /continuous-deployment-on-kubernetes/sample-app/Jenkinsfile 。添加以下行 -

    sh("kubectl 版本")

    这将打印 jenkins slave 使用的 kubectl 版本。

    我发现它是GitVersion:"v1.3.4"。如果您遇到这种情况,请执行以下步骤 -

    1.生成 jenkins slave dockerfile
    -> 使用以下内容创建 Dockerfile-

    来自 jenkinsci/jnlp-slave
    ENV CLOUDSDK_CORE_DISABLE_PROMPTS 1
    环境路径 /opt/google-cloud-sdk/bin:$PATH
    用户根
    运行 apt-get update -y
    运行 apt-get install -y jq
    运行卷曲https://sdk.cloud.google.com | bash && mv google-cloud-sdk /opt
    复制 kubectl /opt/google-cloud-sdk/bin/
    运行 chmod +x /opt/google-cloud-sdk/bin/kubectl

    -> 下载与您的 kube-cluster 兼容的 kubectl 二进制文件。或者在您的 kube-cluster 中获取二进制文件并将其放在此目录中。
    -> 构建映像并将其推送到您的注册表。

    docker build -t IMAGE_NAME .
    gcloud docker -- 推送 IMAGE_NAME

    2。编辑 jenkins 配置以将此图像用作从属设备。
    转到 Jenkins-> 管理 Jenkins-> 配置系统。
    向下滚动到云端。
    选择 Kubernetes。转到图像->容器->Docker 图像。
    输入您在步骤 1 中推送的图片名称。
    点击保存。
    3.开始工作。

    【讨论】:

    • 您好,我已经使用您的解决方案解决了这个错误,谢谢您的帮助。
    【解决方案2】:

    这看起来像这个问题:kubectl throwing group is already registered error

    也许您的 kubectl 是旧版本(1.4 或更早版本)?尝试升级到新版本。

    【讨论】:

    • 感谢您的宝贵时间现在我已经用当前版本详细信息更新了问题,它似乎已经在 1.6 版(客户端和服务器)上运行
    • 我也遇到同样的错误。我检查了 jenkins slave 使用的 kubectl 版本,是 1.3.4。现在,我不知道如何改变它。
    • 我找到了上述查询的答案。请在下面找到
    猜你喜欢
    • 1970-01-01
    • 2013-04-15
    • 2018-02-26
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    相关资源
    最近更新 更多