k8s安装配置Flannel的方案

k8s安装配置Flannel的方案

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


    [email protected] ~ $ 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网段。

3. 参考文档