上一篇本地模拟生产环境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

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐