kubernetes学习:5.创建 kubeconfig 文件

本文介绍了如何在 Kubernetes 中创建 TLS Bootstrapping Token,生成 kubelet 和 kube-proxy 的 kubeconfig 文件,并详细阐述了分发这些文件至节点的过程,确保节点与 Master 之间的安全通信。

创建 kubeconfig 文件


kubelet、kube-proxy 等 Node 机器上的进程与 Master 机器的 kube-apiserver 进程通信时需要认证和授权,所以需要生成相关的配置信息。在master节点上创建相关kubeconfig文件,然后将文件拷贝到node节点上。

kubernetes 自1.4引入了一个用于从集群级证书颁发机构(CA)请求证书的API。这个api的最初意图是启用为kubelets提供tls客户端证书。


创建 TLS Bootstrapping Token

虽然任何身份验证策略都可以用于kubelet的初始引导凭证,但推荐使用以下两种身份验证器以简化配置。我们这里只采用Token authentication file这种方式(版本稳定)。

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

[root@wecloud-test-k8s-1 ~]# export BOOTSTRAP_TOKEN=$(head -c 16 /dev/urandom | od -An -t x | tr -d ' ')
[root@wecloud-test-k8s-1 ~]# echo ${BOOTSTRAP_TOKEN}
1b533e12216629e21babb6085d2d4a27

创建token文件:

[root@wecloud-test-k8s-1 ~]# cat > token.csv <<EOF
> ${
   
   BOOTSTRAP_TOKEN},kubelet-bootstrap,10001,"system:kubelet-bootstrap"
> EOF
[roo
### 解决方案 在运行 `kubeadm token create --print-join-command` 时出现错误 `'open /root/.kube/config: no such file or directory'`,这是因为 Kubernetes 的配置文件 `/root/.kube/config` 缺失或未正确生成。以下是解决该问题的详细方法: #### 1. 确保 kubeconfig 文件存在 Kubernetes 使用 kubeconfig 文件来存储 API Server 地址及相关认证信息[^4]。如果该文件缺失,则需要重新生成它。可以通过以下命令创建 kubeconfig 文件并设置权限: ```bash mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` #### 2. 验证 kubeconfig 文件路径 确保当前用户有权限访问 `/root/.kube/config` 文件。如果使用的是非 root 用户,可以将 kubeconfig 文件复制到对应用户的家目录下,并调整权限以匹配当前用户。 #### 3. 初始化集群时生成 kubeconfig 文件 如果 kubeconfig 文件从未生成过,可能是因为集群初始化时未正确完成。可以通过重新初始化集群来生成 kubeconfig 文件: ```bash kubeadm init \ --kubernetes-version=v1.17.4 \ --pod-network-cidr=10.244.0.0/16 \ --service-cidr=10.96.0.0/12 \ --apiserver-advertise-address=<MASTER_IP> \ --control-plane-endpoint <LOAD_BALANCER_IP>:6443 ``` 在此过程中,`kubeadm` 将自动生成 `/etc/kubernetes/admin.conf` 文件,并将其作为默认 kubeconfig 文件使用[^5]。 #### 4. 手动创建 token 并获取 join 命令 如果 kubeconfig 文件已修复但仍无法运行 `kubeadm token create --print-join-command`,可以直接手动创建 token 并获取 join 命令: ```bash kubeadm token create --print-join-command ``` 此命令会输出类似以下的结果: ```bash kubeadm join 172.16.1.110:6443 --token jb8qa8.wbjx2k7t8vuvqf4q --discovery-token-ca-cert-hash sha256:a694fbe124afd00c0024dbe102037d8f84c9e2e1da1c6638b7788ad71f556ef ``` #### 5. 验证节点加入状态 在成功执行 join 命令后,可以通过以下命令验证节点是否正常加入集群: ```bash kubectl get node --kubeconfig /etc/kubernetes/admin.conf ``` 如果节点状态显示为 `NotReady`,可能需要检查网络插件是否正确安装和配置[^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值