今天使用vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2,踩了不少的坑,记录一下,希望能帮到大家。
先看一篇高质量的参考:
基于vmware16 和 ubuntu20.04, 搭建单节点 kubernetes 1.22.2_琦彦的博客-CSDN博客基于vmware16 和 ubuntu20.04, 搭建单节点 kubernetes 1.22.2安装环境win10ubuntu版本 20.04.3docker版本 20.10.7k8s版本 1.22.2vmware参考在win10上使用VMware Pro16 安装 CentOS 7.9 设置静态IP 可以访问外网_琦彦-CSDN博客中安装vmware 部分比较简单, 不再赘述ubuntu镜像下载Ubuntu 20.04https://blog.csdn.net/fly910905/article/details/120606787这上面说到的问题,我几乎全碰到了。
在笔记上,通过wmware16,使用4台虚拟机(一台centos 7.9, 3台ubuntu 20.04)搭建k8s集群。涉及两个网络:
另外,在K8S集群外多搭建一台机器,名为:workstation, 用于
详细的步骤就不写了,大致步骤如下:
这是一句正确的废话。
在DOS中执行:ipconfig查看。
注意:43网是互联网,不用创建虚拟机网络,创建虚拟机时直接使用桥连模式即可。
完成后,笔记本window 10 的IP如下:
这是我第3次搭建k8s集群,之前已经有一台centos 7 (主机名:workstation, 192.168.114.100/24),上面已经搭建了GitLab, Jenkins, Harbor-2.4等。Harbor上面存放了我很多已下载好的镜像,所以,我这次可以直接拿来用。
截图如下:
下载地址:Ubuntu 20.04.4 LTS (Focal Fossa)https://releases.ubuntu.com/20.04/下载完成后如下:
网络设置下如:
在安装时,设置好一个固定的IP地址(192.168.114.30),43网段的使用dhcp协议,自动获取IP。
网络配置:
设置主机名为:u20-m
路由教程,可以参考我这个文章:
Ubuntu 20.04添加临时/永久路由_湾区的候鸟的博客-CSDN博客https://blog.csdn.net/tjg138/article/details/124625602?spm=1001.2014.3001.5501
查看一下网络设置的效果:
验证一下,确保master是可以上网的。
执行:
配置:
跑一个hello-world, 确保docker能拉镜像,能跑。
Harbor私服测试:
apt-get install -y kubelet=1.22.2-00 kubeadm=1.22.2-00 kubectl=1.22.2-00
注意:上图中,那个taints污点,我设置了master节点不参与POD调度。你可以根据你的需要,进行调整。
kubeadm init --config=kubeadm.yml
下载yaml文件:
$ wget -O 1-tigera-operator.yaml https://docs.projectcalico.org/manifests/tigera-operator.yaml
$ wget -O 2-custom-resources.yaml https://docs.projectcalico.org/manifests/custom-resources.yaml
修改:
执行:
kubectl apply -f 1-tigera-operator.yaml
kubectl apply -f 2-custom-resources.yaml
另外一份 1-tigera-operator.yaml有几千行,就不粘出来了,给大家看一下它的基本信息吧。
你可以在我的GITEE上找到这两份yaml文件:
https://gitee.com/wqhn2020/calico/blob/master/calico-v3.22.2/2-custom-resources.yaml
calico-v3.22.2/1-tigera-operator.yaml · wqhn2020/calico - Gitee.comhttps://gitee.com/wqhn2020/calico/blob/master/calico-v3.22.2/1-tigera-operator.yaml
所有节点状态都是Ready。
所有pod都是Running状态:
这是因为在安装ubuntu时,不小心多设置导致, 注释不需要用的网卡的gateway:
开机时,出现以下任务,等待约2分钟
解决办法如下:
问题原因:路由规则设置不对,导致数据包仍依赖43网段。
有两种解决办法:
解决办法1(推荐):修复各个节点的路由配置,尤其是default路由,使得所有数据包都从192.168.114.x网段出去。以master节点为例(其他workder节点配置类似)。操作步骤如下:
首先,设置网卡。
然后,在下面的文件中进行配置默认路由:
最后,重启。
重启后,效果路由表及网卡配置如下:
解决办法2:使用vmware的网络功能重新创建43网,然后在linux中设置固定IP。
修改原来的43网卡:
完成后,master节点有3张网卡:
master节点的路由,应该是由手机热点的那张新网卡出去。
问题5:如果k8s或calico插件安装失败,如何删除重来?
在master及所有worker节点上执行:
kubeadm reset -f
rm -rf /etc/kubernetes
rm -rf /var/lib/etcd/
rm -rf /var/etcd
rm -rf $HOME/.kube
rm -rf /etc/cni/net.d
rm -rf /etc/cni
rm -rf /opt/cni
然后回到kubeadm init那一步重新开始。
问题6:kubectl 或kubelet版本过高,与k8s数据平面对不上,怎么解决?
解决办法:
把旧的卸载了,然后指定版本安装:
apt-mark unhold kubelet kubeadm kubectl
apt-get remove -y kubelet kubeadm kubectl
apt-get install -y kubelet=1.22.2-00 kubeadm=1.22.2-00 kubectl=1.22.2-00