现有Kubernetes集群扩展Node节点,算是常规操作;那么,如何扩展呢?使用kubeadm会很轻易的进行扩展:kubeadm join xx.xx.xx.xx:6443 --token ……,二进制安装则要稍稍麻烦一些。
该文章的前提条件是:您了解如何进行二进制安装Kubernetes集群。这里只探讨首次安装kubernetes集群时,node安装和后续扩展node的不同点。
和新创建Kubernetes集群时的Node节点安装一样,需要:
1、初始化服务器(内核参数调优、关闭不必要服务、配置hostname、配置/etc/hosts文件、关闭swap、关闭防火墙、关闭selinux、配置时间同步服务等);
2、解压安装介质,安装docker或者containerd等
3、拷贝“CA签名证书”和“kubelet bootstrap kubeconfig 文件”、“kube-proxy kubeconfig 文件”到Node节点
4、配置kubelet和kube-proxy
5、启动kubelet、kube-proxy
6、此时查看Node状态应该是NotReady,等待Calico组件初始化并启动成功后,就会变成Ready状态
这里唯一不同在第3步,因为bootstrap tokens的有效期是24小时,超期后将不能再被用来 boostrap kubelet,且会被 kube-controller-manager 的 tokencleaner 清理;所以,此时需要创建新的token,然后使用该token创建新的“kubelet bootstrap kubeconfig 文件”。
启动kubelet后报错:"Unable to register node with API server" err="Post \"https://127.0.0.1:6443/api/v1/nodes\": x509: certificate has expired or is not yet valid: current time 2013-09-22T17:52:18+08:00 is before 2023-09-21T07:26:00Z" node="k8s-node-100"
定位与解决:
该问题是由于node上未配置时间同步,而系统时间刚好和API差异较大,显示为证书过期,配置时间同步,然后重启kubelet问题解决。