目标

说明

我们使用staticPod启动k8s master 的全部组件 前面我们已经使用staticPod启动了etcd群集,下面我们只需要将配置文件直接放到kubelet的staticPod目录中即可。

创建kube-master.yaml,并放到“/etc/kubernetes/kubelet.d/”

上述文件中,需要将证书文件放到指定的主机目录中。 重启kubelet

验证

  1. controller-manager Healthy ok
  2. scheduler Healthy ok
  3. etcd-1 Healthy {"health": "true"}
  4. etcd-0 Healthy {"health": "true"}
  5. etcd-2 Healthy {"health": "true"}

下面的配置必须去做,否则我们的node因为权限不足无法创建pod. 这里我们需要配置RBAC权限允许kubernetes API server 去接入每个节点的Kubelet API 去检索metrics, logs, 和Pod中运行的命令。
我们将kubelet 的认证模式设置为webhook(—authorization-mode=webhook),Webhook模式使用SubjectAccessReview API来确定授权
创建“system:kube-apiserver-to-kubelet” ClusterRole有权限访问Kubelet API,并执行与管理Pod相关最常见的任务:
创建yaml文件

Kubernetes API 使用kubernetes用户去访问kubelet,使用由—kubelet-client-certificate标志定义的客户端证书进行身份验证。 将”system:kube-apiserver-to-kubelet” ClusterRole 绑定到“kubernetes:”用户。

  1. apiVersion: rbac.authorization.k8s.io/v1beta1
  2. metadata:
  3. namespace: ""
  4. roleRef:
  5. apiGroup: rbac.authorization.k8s.io
  6. kind: ClusterRole
  7. subjects:
  8. - apiGroup: rbac.authorization.k8s.io
  9. kind: User
  10. name: kubernetes

赋予kubelet所在用户组访问API权限

设置节点role

为方便管理和操作。我们对k8s中的全部节点使用role标签。操作如下

    这个章节将对上面配置文件参数说明。 apiserver 配置说明

    特别感谢:http://www.recall704.com/cloud/k8s-node-roles/ 通过代码,我们可以知道,k8s 把 label node-role.kubernetes.io/=”” 和 kubernetes.io/role=”“ 来定义角色。 所以 master 可以这样

    1. kubectl label node 192.168.88.201 node-role.kubernetes.io/master=true

    其它节点