(5)二进制文件方式部署Kubernetes高可用集群----------创建kubeconfig文件Token.csv随机数文件

Kubelet、kube-proxy等node节点上的进程与maser节点的kube-apiserver进程通信时需要认证和授权,所以需要生产相应的配置信息。在master节点上创建kubeconfig文件,然后将其拷贝至node节点上。

4 创建kubeconfig文件

4.1 创建TLS BOOTSTRAP Token

【1】生成token的随机数:

Token可以是任意的包含128bit的字符串,可以使用安全的随机数发生器产生:

[root@master01 token]# export BOOTSTRAP_TOKEN=$(head -c 16 /dev/urandom | od -An -t x | tr -d ' ')

[root@master01 token]# echo ${BOOTSTRAP_TOKEN}

26eb838a016f2b80ca6bd1591872cb6d

【2】创建Token文件:

[root@master01 token]#

cat >token.csv <

${BOOTSTRAP_TOKEN},kubelet-bootstrap,10001,"system:kubelet-bootstrap"

EOF

[root@master01 token]# cat token.csv

26eb838a016f2b80ca6bd1591872cb6d,kubelet-bootstrap,10001,"system:kubelet-bootstrap"

注意:

生成token文件后,其中的${BOOTSTRAP_TOKEN}环境变量将被真实的值替换。

BOOTSTRAP_TOKEN将被写入到kube-apiserver使用的token.csv文件和kubelet使用的bootstrap.kubeconfig文件中,如果后续重新生成了BOOTSTRAP_TOKEN,则需要:

1、更新token.csv文件,分发给所有机器(master和node)的/opt/kubernetes/config/目录下,分发到node节点上非必须;

2、重新生成bootstrap.kubeconfig文件,分发到所有node机器/opt/kubernetes/config/目录下

3、重启kube-apiserver和kubelet进程

4、重启approve kubelet的csr请求

【3】同步token.csv内容:

[root@master01 token]# scp token.csv 192.168.72.144:/opt/kubernetes

[root@master01 token]# scp token.csv 192.168.72.145:/opt/kubernetes

4.2 创建kubelet bootstraping kubeconfig文件

#指定apiserver地址

export KUBE_APISERVER="https://192.168.72.143:6443"

#设置集群参数

kubectl config set-cluster kubernetes --certificate-authority=/opt/kubernetes/ssl/ca.pem  --embed-certs=true --server=${KUBE_APISERVER} --kubeconfig=/root/k8s-init/config/bootstrap.kubeconfig

#设置客户端认证参数

kubectl config set-credentials kubelet-bootstrap --token=${BOOTSTRAP_TOKEN} --kubeconfig=/root/k8s-init/config/bootstrap.kubeconfig

#设置上下文参数

kubectl config set-context default --cluster=kubernetes --user=kubelet-bootstrap --kubeconfig=/root/k8s-init/config/bootstrap.kubeconfig

#设置默认上下文

kubectl config use-context default --kubeconfig=/root/k8s-init/config/bootstrap.kubeconfig

说明:

--embed-certs=true时,表示将certificate-authority证书写入到生成的bootstrap.kubeconfig文件中;

设置客户端认证参数时没有指定秘钥和证书,后续由kube-apiserver自动生成;

4.3 创建kube-proxy kubeconfig文件

#指定apiserver地址

export KUBE_APISERVER="https://192.168.72.143:6443"

#设置集群参数

kubectl config set-cluster kubernetes --certificate-authority=/opt/kubernetes/ssl/ca.pem  --embed-certs=true --server=${KUBE_APISERVER}  --kubeconfig=/root/k8s-init/config/kube-proxy.kubeconfig

#设置客户端认证参数

kubectl config set-credentials kubelet-bootstrap --client-certificate=/opt/kubernetes/ssl/kube-proxy.pem  --client-key=/opt/kubernetes/ssl/kube-proxy-key.pem --embed-certs=true --kubeconfig=/root/k8s-init/config/kube-proxy.kubeconfig

#设置上下文参数

kubectl config set-context default --cluster=kubernetes --user=kube-peoxy --kubeconfig=/root/k8s-init/config/kube-proxy.kubeconfig

#设置默认上下文

kubectl config use-context default --kubeconfig=/root/k8s-init/config/kube-proxy.kubeconfig

说明:

设置集群参数和客户端认证参数时,--embed-certs=true,这会将certificate-authority、client-certificate和client-key指向的证书证书写入到生成的kube-proxy.kubeconfig文件中;

kube-proxy.pem  证书中 CN 为  system:kube-proxy  , kube-apiserver  预定义的 RoleBinding  cluster-admin  将User system:kube-proxy  与 Role  system:node-proxier  绑定,该 Role 授予了调用  kube-apiserver  Proxy 相关 API 的权限;

4.4 分发kubeconfig文件

将bootstrap.kubeconfig 和kube-proxy.kubeconfig文件分发到各个node节点上,操作同证书分发。

scp bootstrap.kubeconfig kube-proxy.kubeconfig 192.168.72.144:/opt/kubernetes/config/

scp bootstrap.kubeconfig kube-proxy.kubeconfig 192.168.72.145:/opt/kubernetes/config/

你可能感兴趣的:((5)二进制文件方式部署Kubernetes高可用集群----------创建kubeconfig文件Token.csv随机数文件)