Authentication kubernetes kubelet在联系kubernetes API时使用什么用户名?

Authentication kubernetes kubelet在联系kubernetes API时使用什么用户名?,authentication,authorization,kubernetes,Authentication,Authorization,Kubernetes,因此,我一直在尝试在kubernetes API中实现ABAC授权,在我的kube API清单文件中使用以下参数 - --authorization-mode=ABAC - --authorization-policy-file=/etc/kubernetes/auth/abac-rules.json 以及abac-rulse.json文件中的以下内容 {"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind":

因此,我一直在尝试在kubernetes API中实现ABAC授权,在我的kube API清单文件中使用以下参数

  - --authorization-mode=ABAC
  - --authorization-policy-file=/etc/kubernetes/auth/abac-rules.json
以及abac-rulse.json文件中的以下内容

{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user":"*",         "nonResourcePath": "*", "readonly": true}}
{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user":"admin",     "namespace": "*",              "resource": "*",         "apiGroup": "*"                   }}
{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user":"scheduler", "apiGroup": "*", "namespace": "*", "resource": "*", "readonly": false}}
{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user":"kubelet", "apiGroup": "*",   "namespace": "*", "resource": "*", "readonly": false }}
然而,kubelets似乎无法连接到api服务器。我了解到用户名取自用于验证连接的证书中-subject的CN字段。在本例中,这是软管的fqdn,我也尝试过,但没有成功

知道我做错了什么吗

提前欢呼

编辑:


我使用的是Kubernetes版本1.2.2,包括kubectl和hyperkube docker图像。

找到了答案,在这里为其他与ABAC有相同问题的人提供文档

kubelet用户是在worker配置中定义的,在我的例子中,它是一个yaml文件,我存储在这里-
/etc/kubernetes/worker kubeconfig.yaml
,其内容如下所示:

apiVersion: v1
kind: Config
clusters:
- name: default
  cluster:
    server: https://10.96.17.34:8443
    certificate-authority: /etc/kubernetes/ssl/ca.pem
users:
- name: kubelet
  user:
    client-certificate: /etc/kubernetes/ssl/worker.pem
    client-key: /etc/kubernetes/ssl/worker-key.pem
contexts:
- context:
    cluster: default
    user: kubelet
  name: kubelet-context
current-context: kubelet-context
因此,它连接的用户是
kubelet

在我的例子中,我使用CN=${MINION_FQDN}创建了我的证书,因为这与“kubelet”不匹配,所以ABAC策略没有得到满足。我使用以下参数重新生成了证书,现在节点已成功进行身份验证:)

其中的重要部分是:

-subj "/CN=kubelet"

希望这对其他人有帮助。

它确实对我有帮助。谢谢
-subj "/CN=kubelet"