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

今天使用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集群。涉及两个网络:

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

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

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

网络拓扑图

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第1张图片

搭建步骤:

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

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

这是一句正确的废话。

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

在DOS中执行:ipconfig查看。

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第2张图片

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

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

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第3张图片

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

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第4张图片

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

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

截图如下:

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第5张图片

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第6张图片

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第7张图片

  • 第5步:下载IOS.

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

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第8张图片

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

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第9张图片

网络设置下如:

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第10张图片

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第11张图片

 
 

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

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第12张图片

网络配置:

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第13张图片

 设置主机名为:u20-m

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第14张图片

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第15张图片

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

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第16张图片

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

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

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

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第17张图片

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

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第18张图片

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

执行:

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第19张图片

配置:

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第20张图片

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

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第21张图片

 Harbor私服测试:

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第22张图片

  •  第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)

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第23张图片

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

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第24张图片

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第25张图片

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

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第26张图片

注意:上图中,那个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

修改:

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第27张图片

执行:

kubectl apply -f 1-tigera-operator.yaml
kubectl apply -f 2-custom-resources.yaml

另外一份 1-tigera-operator.yaml有几千行,就不粘出来了,给大家看一下它的基本信息吧。

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第28张图片

你可以在我的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。

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第29张图片

所有pod都是Running状态:

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第30张图片

问题:

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

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第31张图片

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

 个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第32张图片

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

 个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第33张图片

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

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

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第34张图片

 解决办法如下:

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第35张图片

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

问题原因:路由规则设置不对,导致数据包仍依赖43网段。

有两种解决办法:

解决办法1(推荐):修复各个节点的路由配置,尤其是default路由,使得所有数据包都从192.168.114.x网段出去。以master节点为例(其他workder节点配置类似)。操作步骤如下:

首先,设置网卡。

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第36张图片

然后,在下面的文件中进行配置默认路由:

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第37张图片

 最后,重启。

重启后,效果路由表及网卡配置如下:

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第38张图片

解决办法2:使用vmware的网络功能重新创建43网,然后在linux中设置固定IP。

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第39张图片

 修改原来的43网卡:

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第40张图片

 添加一张新网网卡:个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第41张图片

完成后,master节点有3张网卡:

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第42张图片

master节点的路由,应该是由手机热点的那张新网卡出去。

个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第43张图片

 验证一下,确保两张新旧网卡都能正常工作:个人笔记:vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_第44张图片

问题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

你可能感兴趣的:(K8S配置,学习)