个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2

今天使用vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2,踩了不少的坑,记录一下,希望能帮到大家。

先看一篇高质量的参考:

基于vmware16 和 ubuntu20.04, 搭建单节点 kubernetes 1.22.2_琦彦的博客-优快云博客基于vmware16 和 ubuntu20.04, 搭建单节点 kubernetes 1.22.2安装环境win10ubuntu版本 20.04.3docker版本 20.10.7k8s版本 1.22.2vmware参考在win10上使用VMware Pro16 安装 CentOS 7.9 设置静态IP 可以访问外网_琦彦-优快云博客中安装vmware 部分比较简单, 不再赘述ubuntu镜像下载Ubuntu 20.04https://blog.youkuaiyun.com/fly910905/article/details/120606787这上面说到的问题,我几乎全碰到了。

搭建目标:

        在笔记上,通过wmware16,使用4台虚拟机(一台centos 7.9, 3台ubuntu 20.04)搭建k8s集群。涉及两个网络:

  • 114网(内网):用于K8S集群,用于站内流量传输。
  • 43网:用于上互联网,3台ubuntu 20.04为k8s集群机器,安装过程中可以连接互联网。

另外,在K8S集群外多搭建一台机器,名为:workstation, 用于

  1. 起到集群网关、防火墙的作用。
  2. 安装harbor,用于存放镜像。

网络拓扑图

搭建步骤:

详细的步骤就不写了,大致步骤如下:

  • 第1步:打开手机热点。

这是一句正确的废话。

  • 第2步:笔记本电脑连接热点后,设置其固定IP为:192.168.43.111.

在DOS中执行:ipconfig查看。

  • 第3步:在vmware 16中创建1个虚拟机网络: 114网段,采用"仅主机模式"。

注意:43网是互联网,不用创建虚拟机网络,创建虚拟机时直接使用桥连模式即可。

 完成后,笔记本window 10 的IP如下:

  • 第4步:搭建workstation机器(这一步可选)。

这是我第3次搭建k8s集群,之前已经有一台centos 7 (主机名:workstation, 192.168.114.100/24),上面已经搭建了GitLab, Jenkins, Harbor-2.4等。Harbor上面存放了我很多已下载好的镜像,所以,我这次可以直接拿来用。

截图如下:

  • 第5步:下载IOS.

下载地址:Ubuntu 20.04.4 LTS (Focal Fossa)https://releases.ubuntu.com/20.04/下载完成后如下:

  • 第6步:在vmware16中,安装一台ubuntu20, 作为master节点。 

网络设置下如:

 
 

在安装时,设置好一个固定的IP地址(192.168.114.30),43网段的使用dhcp协议,自动获取IP。

网络配置:

 设置主机名为:u20-m

  •  第7步:在master节点中,进行各种设置,包括:路由,root用户可以直接登录等。设置好后,master的路由如下:

路由教程,可以参考我这个文章:

Ubuntu 20.04添加临时/永久路由_湾区的候鸟的博客-优快云博客https://blog.youkuaiyun.com/tjg138/article/details/124625602?spm=1001.2014.3001.5501

查看一下网络设置的效果:

验证一下,确保master是可以上网的。

  • 第9步:安装docker(master节点)

执行:

配置:

跑一个hello-world, 确保docker能拉镜像,能跑。

 Harbor私服测试:

  •  第7步:安装kubectl, kubelet等(master节点,主机名u20-m),指定版本号为:1.22.2-00
apt-get install -y kubelet=1.22.2-00 kubeadm=1.22.2-00 kubectl=1.22.2-00
  •  第8步:在vmware克隆master节点,创建两台worker(主机名:u20-1, u20-2)

  • 第9步:配置u20-1, u20-2网络:

  • 第10步:准备一份kubeadm.yml文件,注意红框的设置。

注意:上图中,那个taints污点,我设置了master节点不参与POD调度。你可以根据你的需要,进行调整。

  • 第11步:执行kubeadm init(master节点)。
kubeadm init --config=kubeadm.yml
  • 第12步:使用kubeadm join,把另外两台加入到集群中。

  • 第13步:安装calico网络

下载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

  • 第14步:验证.

所有节点状态都是Ready。

所有pod都是Running状态:

问题:

问题1:多条default(0.0.0.0)路由,导致不能上网。

这是因为在安装ubuntu时,不小心多设置导致, 注释不需要用的网卡的gateway:

 

问题2: 安装指定的软件版本:

 

问题3. ubuntu开机等待网络设置问题

开机时,出现以下任务,等待约2分钟

 解决办法如下:

问题4:安装完成后,win10不连接手机热点,43网段无法使用,将会导出calico的pod出现运行时错误。

问题原因:路由规则设置不对,导致数据包仍依赖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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值