我无法为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 forbidden”。需要注意的是,我可以对使用KOPS部署的集群执行相同的API调用。我不确定有什么区别。
答案 0 :(得分:0)
403表示您已成功通过身份验证(否则您将获得401错误),如果您被授权访问kubelet指标,则apiserver会检查kubelet(否则它将被允许),它得到了肯定的响应apiserver(否则您将得到500错误),并且apiserver指示未授权经过身份验证的用户访问kubelet指标。
有关要授予访问kubelet API上各个端点所需的权限的详细信息,请参见https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-authentication-authorization/#kubelet-authorization。对于指标,必须授予nodes/metrics
apiGroup中的""
资源。