K8S集群安装cni插件flannel

本文详细介绍了在Kubernetes集群中配置Flannel网络的过程,包括解决YAML格式错误的方法,以及如何通过kubectl命令成功部署Flannel,实现Pod间的网络通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在k8s集群安装之后,master及各个node之间的pod还是不能相互通信,还需要建立他们之间的网络路由。当然,有各种不同的解决方案,flannel便是其中之一。flannel在对kubernets进行支持时,flanneld启动参数中会增加--kube-subnet-mgr参数,flanneld会初始化一个kubernetes client,获取本地node的pod-cidr,这个pod-cidr将会作为flannel为node上的容器规划的ip网段,其配置会记录到/run/flannel/subnet.env。

例如:

more /run/flannel/subnet.env 
FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true

其中,FLANNEL_NETWORK便是配置k8s控制平面时指定的网络

即kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers

安装配置好控制平面后,根据提示信息创建.kube目录,复制admin.conf文件,并将各个node 加入到k8s集群。

接着可以执行以下命令来配置flannel网络。

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

在执行的时候可能会报错如下:

flannel error converting YAML to JSON: yaml: line 115: mapping values are not allowed..........

从报错信息可以看到可能是YAML文件格式有问题,也许是某个缩进问题导致的。咱们不管具体细节了,因为几百行的文件看起来很费时费劲,具体解决方法比较简单,我将该文件内容复制,然后本地建个文件kube-flannel.yml将内容拷贝进去,然后执行:

kubectl apply -f ./kube-flannel.yml

出现类似下面的执行结果,基本可以确定配置flannel成功

odsecuritypolicy.policy/psp.flannel.unprivileged created
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
serviceaccount/flannel created
configmap/kube-flannel-cfg created
daemonset.apps/kube-flannel-ds-amd64 created
daemonset.apps/kube-flannel-ds-arm64 created
daemonset.apps/kube-flannel-ds-arm created
daemonset.apps/kube-flannel-ds-ppc64le created
daemonset.apps/kube-flannel-ds-s390x created

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值