配置
Configuration file details
https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/
Kubeconfig
###安装kubectl工具
wget https://dl.k8s.io/v1.11.0/kubernetes-client-linux-amd64.tar.gz
tar -zxf kubernetes-client-linux-amd64.tar.gz
cp kubernetes/client/bin/kubectl /usr/local/bin/
chmod +x /usr/local/bin/kubectl
###创建kubeconfig在master节点执行
export KUBE_APISERVER="https://172.16.20.206:6443"
####设置集群参数
kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/ssl/ca.pem --embed-certs=true --server=${KUBE_APISERVER}
####设置客户端认证参数
kubectl config set-credentials admin --client-certificate=/etc/kubernetes/ssl/admin.pem --embed-certs=true --client-key=/etc/kubernetes/ssl/admin-key.pem
####设置上下文参数
kubectl config set-context kubernetes --cluster=kubernetes --user=admin
####设置默认上下文
kubectl config use-context kubernetes
####说明
kubectl是kubernetes的集群管理工具,任何节点通过kubetcl都可以管理整个k8s集群。
在master节点部署,部署成功后会生成 /root/.kube/config 文件,kubectl就是通过这个获取 kube-apiserver 地址、证书、用户名等信息,所以这个文件需要保管好
###创建bootstrap.kubeconfig文件
####创建 TLS Bootstrapping Token
export BOOTSTRAP_TOKEN=$(head -c 16 /dev/urandom | od -An -t x | tr -d ‘ ‘)
cat > token.csv <<EOF
${BOOTSTRAP_TOKEN},kubelet-bootstrap,10001,"system:kubelet-bootstrap"
EOF
cp token.csv /etc/kubernetes/
####生成bootstrap.kubeconfig文件
cd /etc/kubernetes
export KUBE_APISERVER="https://172.16.20.206:6443"
#####设置集群参数
kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/ssl/ca.pem --embed-certs=true --server=${KUBE_APISERVER} --kubeconfig=bootstrap.kubeconfig
#####设置客户端认证参数
kubectl config set-credentials kubelet-bootstrap --token=${BOOTSTRAP_TOKEN} --kubeconfig=bootstrap.kubeconfig
#####设置上下文参数
kubectl config set-context default --cluster=kubernetes --user=kubelet-bootstrap --kubeconfig=bootstrap.kubeconfig
#####设置默认上下文
kubectl config use-context default --kubeconfig=bootstrap.kubeconfig
####说明
kubelet访问kube-apiserver的时候是通过bootstrap.kubeconfig进行用户验证;
--embed-certs 为 true 时表示将 certificate-authority 证书写入到生成的 bootstrap.kubeconfig 文件中;
设置客户端认证参数时没有指定秘钥和证书,后续由 kube-apiserver 自动生成。
###创建kube-proxy.kubeconfig文件
cd /etc/kubernetes
export KUBE_APISERVER="https://172.16.20.206:6443"
#####设置集群参数
kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/ssl/ca.pem --embed-certs=true --server=${KUBE_APISERVER} --kubeconfig=kube-proxy.kubeconfig
#####设置客户端认证参数
kubectl config set-credentials kube-proxy --client-certificate=/etc/kubernetes/ssl/kube-proxy.pem --client-key=/etc/kubernetes/ssl/kube-proxy-key.pem --embed-certs=true --kubeconfig=kube-proxy.kubeconfig
#####设置上下文参数
kubectl config set-context default --cluster=kubernetes --user=kube-proxy --kubeconfig=kube-proxy.kubeconfig
#####设置默认上下文
kubectl config use-context default --kubeconfig=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 的权限。
####参考链接
https://blog.51cto.com/devingeng/2159857?source=dra
https://jimmysong.io/posts/kubernetes-create-kubeconfig/
###分发配置文件
将/etc/kubernetes/{kube-proxy.kubeconfig,bootstrap.kubeconfig}分发到node节点
##master节点安装
###/etc/kubernetes/config文件
cat > /etc/kubernetes/config << EOF
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=2"
KUBE_ALLOW_PRIV="--allow-privileged=true"
KUBE_MASTER="--master=172.16.20.206:8080"
EOF
####说明
该配置文件同时被kube-apiserver、kube-controller-manager、kube-scheduler、kubelet、kube-proxy使用。
原文地址:https://blog.51cto.com/phospherus/2445746
时间: 2024-10-08 04:40:28