目标
说明
我们使用staticPod启动k8s master 的全部组件 前面我们已经使用staticPod启动了etcd群集,下面我们只需要将配置文件直接放到kubelet的staticPod目录中即可。
创建kube-master.yaml,并放到“/etc/kubernetes/kubelet.d/”
上述文件中,需要将证书文件放到指定的主机目录中。 重启kubelet
验证
controller-manager Healthy ok
scheduler Healthy ok
etcd-1 Healthy {"health": "true"}
etcd-0 Healthy {"health": "true"}
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:”用户。
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
namespace: ""
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
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 可以这样
kubectl label node 192.168.88.201 node-role.kubernetes.io/master=true