【问题标题】:Failed to set up Kubernetes plugin for Jenkins无法为 Jenkins 设置 Kubernetes 插件
【发布时间】:2017-11-02 20:24:20
【问题描述】:

我有一个全新的 Kubernetes v1.8 集群,有两个节点(启用了 RBAC)。 Jenkins 被部署为 StatefulSet,并且还创建了推荐的 ServiceAccount/Role 和 RoleBindings (from here)。集群信息:

$ kubectl cluster-info
Kubernetes master is running at https://10.182.255.35:6443

当我尝试在 Jenkins 设置中设置 Kubernetes 云时,我收到错误 403(禁止访问)。我遵循 pugin 指南并在 Jenkins 中创建了“Kubernetes 服务帐户”凭据并尝试配置新云。 Jenkins configuration screenshot。这是插件的调试日志:

Nov 02, 2017 7:40:57 PM FINE org.csanchez.jenkins.plugins.kubernetes.KubernetesFactoryAdapter
Creating Kubernetes client: KubernetesFactoryAdapter [serviceAddress=https://10.182.255.35:6443, namespace=default, caCertData=null, credentials=org.csanchez.jenkins.plugins.kubernetes.ServiceAccountCredential@99ee54b6, skipTlsVerify=true, connectTimeout=0, readTimeout=0]
Nov 02, 2017 7:40:57 PM FINE org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud
Error connecting to https://10.182.255.35:6443
java.io.IOException: Unexpected response code for CONNECT: 403
  at okhttp3.internal.connection.RealConnection.createTunnel(RealConnection.java:371)
  ...(skipped)
  at io.fabric8.kubernetes.client.dsl.base.BaseOperation.list(BaseOperation.java:605)
Caused: io.fabric8.kubernetes.client.KubernetesClientException: Operation: [list]  for kind: [Pod]  with name: [null]  in namespace: [default]  failed.
  at io.fabric8.kubernetes.client.KubernetesClientException.launderThrowable(KubernetesClientException.java:62)
  ...(skipped)

同时,如果我尝试从 pod 使用此 serviceAccount 进行 API 调用,它正在工作:

$ kubectl exec -ti jenkins-0 bash (ssh into the pod)
bash-4.3$ KUBE_TOKEN=$(</var/run/secrets/kubernetes.io/serviceaccount/token)
bash-4.3$ curl -sSk -H "Authorization: Bearer $KUBE_TOKEN" 
https://10.182.255.35:6443/api/v1/namespaces/default/pods
{
  "kind": "PodList",
  "apiVersion": "v1",
  "metadata": {
    "selfLink": "/api/v1/namespaces/default/pods",
    "resourceVersion": "90645"
  },
  "items": [
    {
    ...(skipped)

【问题讨论】:

    标签: jenkins kubernetes http-status-code-403 rbac


    【解决方案1】:

    回答我自己的问题:问题出在我的代理设置上。您需要在集群设置期间在 no_proxy 环境变量中指定实例 IP。

    【讨论】:

    • 好的...你是怎么解决的?
    • 集群搭建时需要在no_proxy环境变量中指定实例IP。
    • 好的。您可以编辑您的答案以说明该设置吗?
    • 你能补充一下怎么做吗?
    【解决方案2】:

    我没有足够的积分来投票,但我只想确认这与@Symydo 提到的代理设置有关。因此,要么在 Pod 的 NO_PROXY 环境变量中添加 IP 实例,要么在不需要时删除代理设置。

    【讨论】:

      猜你喜欢
      • 2016-02-20
      • 1970-01-01
      • 2017-03-02
      • 2022-06-13
      • 2020-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-23
      相关资源
      最近更新 更多