Flannel 安装和配置指南
1. 项目基础介绍和主要编程语言
基础介绍
Flannel 是一个为 Kubernetes 设计的简单易用的网络解决方案,用于配置容器之间的网络。它通过在每个主机上运行一个名为 flanneld
的代理来分配子网租约,从而为每个主机提供一个独立的子网。Flannel 支持多种后端机制,如 VXLAN 和云集成,以实现跨主机的网络通信。
主要编程语言
Flannel 主要使用 Go 语言编写。
2. 项目使用的关键技术和框架
关键技术
- Kubernetes API: Flannel 可以使用 Kubernetes API 来存储网络配置和分配的子网。
- etcd: 在 Kubernetes 之外的环境中,Flannel 使用 etcd 作为数据存储。
- VXLAN: 一种用于封装和转发数据包的后端机制。
- CNI (Container Network Interface): Flannel 提供了一个 CNI 插件,用于与 Kubernetes 集成。
框架
- Go 语言: 用于编写 Flannel 的核心代码。
- Kubernetes: 用于容器编排和网络管理。
3. 项目安装和配置的准备工作和详细安装步骤
准备工作
- Kubernetes 集群: 确保你已经有一个运行中的 Kubernetes 集群。
- kubectl 命令行工具: 确保你已经安装并配置好
kubectl
工具。 - CNI 插件: 确保 CNI 插件已经安装在
/opt/cni/bin
目录下。如果没有,可以使用以下命令下载并安装:ARCH=$(uname -m) case $ARCH in armv7*) ARCH="arm" ;; aarch64) ARCH="arm64" ;; x86_64) ARCH="amd64" ;; esac mkdir -p /opt/cni/bin curl -O -L https://github.com/containernetworking/plugins/releases/download/v1.5.1/cni-plugins-linux-$ARCH-v1.5.1.tgz tar -C /opt/cni/bin -xzf cni-plugins-linux-$ARCH-v1.5.1.tgz
详细安装步骤
使用 kubectl 安装 Flannel
-
下载并应用 Flannel 的 YAML 文件:
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
-
如果你使用自定义的
podCIDR
(不是默认的10.244.0.0/16
),你需要先下载上述 YAML 文件并修改network
配置以匹配你的podCIDR
。
使用 Helm 安装 Flannel
-
创建命名空间:
kubectl create ns kube-flannel
-
添加 Flannel Helm 仓库并安装 Flannel:
kubectl label --overwrite ns kube-flannel pod-security.kubernetes.io/enforce=privileged helm repo add flannel https://flannel-io.github.io/flannel/ helm install flannel --set podCidr="10.244.0.0/16" --namespace kube-flannel flannel/flannel
验证安装
安装完成后,你可以通过以下命令验证 Flannel 是否正常运行:
kubectl get pods -n kube-flannel
你应该会看到 Flannel 的 Pod 处于 Running
状态。
配置防火墙
如果配置了防火墙,确保启用配置后端使用的正确端口。Flannel 默认使用 portmap
作为 CNI 网络插件。
通过以上步骤,你应该能够成功安装和配置 Flannel,使其在 Kubernetes 集群中正常运行。