k8s安装配置Flannel的方案
k8s安装配置Flannel的方案
注意:版本兼容,请使用以下版本
K8e Versions(amd64)
Version | Supported |
---|---|
v1.21.14 | ✅ |
v1.25.5 | ✅ |
1. Flannel简介
Flannel是Kubernetes集群中的网络插件,用于为Pod提供网络。Flannel是一个简单的网络插件,它为每个节点分配一个子网,然后在每个节点上运行一个代理,该代理负责为每个Pod分配IP地址。Flannel使用VXLAN或者UDP封装,以实现跨主机的网络通信。为了网络效率,在同一网络集群中我们会配置成host-gw模式,即不使用VXLAN或者UDP封装,直接使用物理网卡进行通信。
2. K8e集群安装使用Flannel插件的方案
K8e不同于k3s,已经去除了Flannel的代码。所以你使用K8e启动的集群默认是没有网络插件的。如果你留心我们的install.sh里面的脚本步骤,就会发现默认cilium网络插件的安装是通过cilium-cli来安装的。所以我们可以通过一样的方法使用Flannel的部署脚本来安装Flannel网络插件。
2.1 TLDR; 一键安装脚本
curl -sfL https://getk8e.com/install-flannel.sh | K8E_TOKEN=ilovek8e INSTALL_K8E_EXEC="server --cluster-init --write-kubeconfig-mode 644" sh -
# 看到这个日志输出,说明安装成功
STATUS: pass
[INFO] Installing flannel network cni/operator
namespace/kube-flannel 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 created
[INFO] Done! Happy deployment.
2.2 验证Flannel网络插件是否安装成功
kubectl get pods -n kube-system
root@ubuntu-08 ~ $ kubectl get po -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-flannel kube-flannel-ds-797bd 1/1 Running 1 4m2s
kube-system coredns-75fc8f8fff-6zx7n 0/1 Running 0 4m3s
kube-system local-path-provisioner-5b5579c644-spk27 1/1 Running 1 (22s ago) 4m3s
kube-system metrics-server-5c8978b444-9b8xq 0/1 Running 1 (16s ago) 4m3s
如果想了解安装部署Flannel的过程,可以继续往下看。
2.3 详细步骤:下载Flannel的部署脚本
#安装cni-tools 用于创建cni配置文件
curl -sSL https://github.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-amd64-v1.1.1.tgz -O
tar -zxf cni-plugins-linux-amd64-v1.1.1.tgz -C /opt/cni/bin
#安装flannel cni插件
curl -sSL https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml -O
sed -i 's#vxlan#host-gw#' ./kube-flannel.yml
sed -i 's#10\.244\.0\.0\/16#10\.42\.0\.0\/16#' ./kube-flannel.yml
kubectl apply -f ./kube-flannel.yml
- 注意:10.42.0.1/16是我们K8E的Pod网段,如果你的Pod网段不是这个,需要修改成你自己的Pod网段。