Ubuntu 20.04 下单机k8s的网络部署

Ubuntu20.04下单机k8s的部署参考之前的文章,链接在这https://www.cnblogs.com/OM-dyc/articles/18957330

在之前的部署中,我选择的是修改文件/etc/cni/net.d/10-flannel.conflist的方式,进行手动配置网络
但是我今天在使用k8s集群部署redis时发现由于网络原因,外部的redis可视化工具根本无法连接到部署好的redis上,故这里选择正规的方式重新部署网络

首先,由于我们是单机k8s,故我们的k8s只有一个master节点,他要同时承担控制平面和工作两份工作,所以在我们部署一个新pod在master之前,我们要先进行污点清除,让master节点可以承担工作节点的职责
kubectl taint nodes master node-role.kubernetes.io/control-plane:NoSchedule-

这里你的节点污点名称和我的可能会有所不同,你可以通过以下命令来查看
kubectl describe node <master节点名称> | grep Taints

然后我们就正式开始进行网络部署
我这里选择的是安装Flannel网络插件
由于网络连接问题,若你不能够进行FQ连接外网这些操作,你直接使用网络上提供的Flannel安装连接,基本就是卡住,然后下载失败,我之前跟着几十篇博客不同的链接尝试根本无法下载成功

所以我们先查看GitHub的IP地址,把它加入到我们的hosts配置文件中,解决DNS解析问题
dig github.com
查询到对应的IP地址之后,把他写入/etc/hosts文件中去

vim /etc/hosts
# GitHub 映射
XXX.XXX.XXX.XXX    github.com
XXX.XXX.XXX.XXX    assets-cdn.github.com
XXX.XXX.XXX.XXX    github.global.ssl.fastly.net

微信截图_20250701135510
修改保存之后运行以下指令
ping github.com -c 3 ##测试DNS解析是否正确
这里注意,GitHub的IP会定期更新,后续若无法访问,需重新查询并配置

先直接进行Flannel的部署
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
这里会把flannel相关的pod都创建上,但是永远卡在镜像拉取上
这里我们手动拉取Flannel的镜像文件(包括CNI插件和主文件)

# 拉取 Flannel CNI 插件镜像(从 GitHub Container Registry)
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/flannel-io/flannel-cni-plugin:v1.7.1-flannel1

# 拉取 Flannel 主镜像
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/flannel/flannel:v0.26.3

我在拉取主镜像时用了40分钟,这里要有耐心

恭喜!!!拉取镜像只要成功,你的网络配置就成功了99%了

镜像拉取完成之后,手动将镜像加载到节点上

# 在当前节点(已拉取镜像)执行
docker save swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/flannel-io/flannel-cni-plugin:v1.7.1-flannel1 -o flannel-cni-plugin.tar

# 将镜像文件复制到目标节点(master)
scp flannel-cni-plugin.tar root@master:/tmp/

# 在目标节点执行
docker load -i /tmp/flannel-cni-plugin.tar
# 在当前节点(已拉取镜像)执行
docker save swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/flannel/flannel:v0.26.3 -o flannel-main.tar

# 将镜像文件复制到 master 节点
scp flannel-main.tar root@master:/tmp/

# 在 master 节点执行
docker load -i /tmp/flannel-main.tar

我们还需要为master节点分配Pod CIDR(这步很重要,一定要做,你可以先通过kubectl describe node master | grep CIDR该命令查看你有没有配置过Pod CIDR)
kubectl patch node master -p '{"spec":{"podCIDR":"10.244.0.0/16"}}'

然后,我们删除掉现有的Flannel Pod使其重新启动

# 删除现有 Flannel Pod 使其重新启动
kubectl delete pods -n kube-flannel -l app=flannel

# 等待 Pod 重新创建并检查状态
kubectl get pods -n kube-flannel -w

你就会发现flannel相关的Pod能正常进入running状态了
微信截图_20250701140848

查看所有pod
kubectl get pods --all-namespaces
微信截图_20250701141112

那么到这里,我们的k8s的全部内容才算是全部配置完成啦,尽情的去部署你的应用吧!

如果你有更好的网络配置方法,欢迎在评论区相互交流,共同进步!!!

posted @ 2025-07-01 14:17  努力成为OM大师  阅读(81)  评论(0)    收藏  举报