【问题标题】:Enable webhook authentication kubelet api启用 webhook 身份验证 kubelet api
【发布时间】:2019-04-03 19:47:57
【问题描述】:

我在为 kubelet API 启用 webhook 身份验证时遇到问题。我的集群是使用 kubeadm 部署的。 This post is similar, but not the same issue

我可以使用不记名令牌对我的 API 服务器进行身份验证:

curl -k https://localhost:6443/api --header "Authorization: Bearer $TOKEN"

我无法针对具有相同标头的 kubelet api 进行身份验证。我在 API 服务器上启用了以下功能:

--authorization-mode=Node,RBAC
--anonymous-auth=false
--runtime-config=authentication.k8s.io/v1beta1=true,authorization.k8s.io/v1beta1=true

在 kubelet 节点上启用以下功能(通过 /var/lib/kubelet/config.yaml)

address: 0.0.0.0
apiVersion: kubelet.config.k8s.io/v1beta1
authentication:
  anonymous:
    enabled: false
  webhook:
    cacheTTL: 2m0s
    enabled: true
  x509:
    clientCAFile: /etc/kubernetes/pki/ca.crt
authorization:
  mode: Webhook
  webhook:
    cacheAuthorizedTTL: 5m0s
    cacheUnauthorizedTTL: 30s

尽管如此,我在 kubelet 上卷曲 /metrics 端点时收到“403 禁止”。需要注意的是,我可以对使用 KOPS 部署的集群执行相同的 API 调用。我不确定有什么区别。

【问题讨论】:

  • 您是否使用KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook --authentication-token-webhook \ --client-ca-file=/etc/kubernetes/pki/ca.crt 参数运行您的kubelet 服务?

标签: kubernetes webhooks


【解决方案1】:

403 表示您已成功通过身份验证(或者您会收到 401 错误),kubelet 会与 apiserver 核对您是否有权访问 kubelet 指标(否则它只会允许它),它得到了肯定的响应apiserver(否则您会收到 500 错误),并且 apiserver 指示经过身份验证的用户无权访问 kubelet 指标。

请参阅https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-authentication-authorization/#kubelet-authorization,了解需要授予哪些权限才能访问 kubelet API 上的各种端点的详细信息。对于指标,必须授予 "" apiGroup 中的 nodes/metrics 资源。

【讨论】:

    猜你喜欢
    • 2016-10-16
    • 2014-03-16
    • 2022-06-28
    • 1970-01-01
    • 2020-09-11
    • 2016-04-12
    • 2023-02-09
    • 1970-01-01
    • 2022-06-30
    相关资源
    最近更新 更多