上一篇本地模拟生产环境k8s安装部署(一)_super_1301的博客-CSDN博客主要是环境配置、软件安装,主要是安装了kubeadm、kubelet、kubectl,接下来是用kubeadm创建集群步骤
三、使用 kubeadm 创建集群(参考:使用 kubeadm 创建集群 | Kubernetes)
1、通过官方文档步骤知道 需要从k8s.gcr.io下载镜像,通过ping 发现网络不通
2、生成初始化的配置文件(参考:kubeadm 配置 (v1beta3) | Kubernetes)
查看默认配置
kubeadm config print init-defaults
按照默认配置生成一份配置文件
kubeadm config print init-defaults > kubeadm-config.yaml
修改了2个参数,镜像仓库地址和criSocket
2、执行 sudo kubeadm init --config kubeadm-config.yaml --v=5
先关注下那3个ERROR,
第一个NumCPU , 说的是cpu个数至少2个,现在是1个
第二个Mem , 说内存要求至少1700M ,现在是486M
第三个FileContent--proc-sys-net-ipv4-ip_forward ,说的是没有开启路由功能
由于是本地模拟, 第一、二先忽略,第三个配置下
sudo vi /etc/sysctl.d/k8s.conf
修改前
修改后 : 增加一行 配置 net.ipv4.ip_forward=1
需要重启后才能生效 sudo reboot
在执行一遍 sudo kubeadm init --config kubeadm-config.yaml --v=5 --ignore-preflight-errors=NumCPU --ignore-preflight-errors=Mem
已经没有那3个ERROR 了。。。
这里有个注意点 ,如果在初始化过程中 ,失败了在重新 执行 kubeadm init 会报错如下:
需要重置 sudo kubeadm reset --v=5
重新执行初始化集群, 又报了新错误
从错误内容排查
kubelet, crio 进程是否正常启动着
从上面截图看 kubelet 和 crio 进程正常运行着
查看kebelet 进程日志命令:sudo journalctl -xeu kubelet
从错误日志看找不到node, 网络查了下, 有说是hosts没配置成功, 查看下hosts
主机名对应到127.0.1.1 了 , 修改下试试
重新reset 后,init 看下结果,还是报 err="node \"node\" not found , 继续查发现配置文件里有个地方配置了节点名称,是不是这的问题
修改前:
修改后:
继续重新reset 后,init 看下结果
https://github.com/cri-o/cri-o/issues/4393 相同的问题
使用kubeadm创建集群失败报Unable to register node with API server_心静自然亮的博客-CSDN博客
感觉找到问题了!!!
拉取3.6版本的pause镜像
sudo crictl pull registry.aliyuncs.com/google_containers/pause:3.6
后面又查了下,可以修改配置指定镜像(参考:容器运行时 | Kubernetes)
sudo vi /etc/crio/crio.conf
重启crio
sudo systemctl reload crio
终于启动起来了, 太不容易了~~~~~
从新reset 在 init , 这次一次成功
从最后输出的日志看还有做些配置
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
在看下kubelet的日志
从日志看缺少CNI插件,参考这篇文章 K8S集群安装Pod网络附加组件_super_1301的博客-CSDN博客
-------------------补充----------------------------------
后面发现安装成功后的提示已经很明确了, 告诉你了你需要安装一个pod网络和加入work节点的命令等
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.1.111:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:47010dd9463ae7f5e6a824bdd79168d20a418c67e0862dc6ad1d641b7221a2af