Flanela é uma maneira simples e fácil de configurar uma malha de rede de camada 3 projetada para Kubernetes.
Flannel executa um agente binário pequeno e único chamado flanneld
em cada host e é responsável por alocar uma concessão de sub-rede para cada host a partir de um espaço de endereço maior e pré-configurado. Flannel usa a API Kubernetes ou etcd diretamente para armazenar a configuração da rede, as sub-redes alocadas e quaisquer dados auxiliares (como o IP público do host). Os pacotes são encaminhados usando um dos vários mecanismos de back-end, incluindo VXLAN e várias integrações em nuvem.
Plataformas como Kubernetes assumem que cada contêiner (pod) possui um IP exclusivo e roteável dentro do cluster. A vantagem desse modelo é que ele elimina as complexidades de mapeamento de portas decorrentes do compartilhamento de um único IP de host.
Flannel é responsável por fornecer uma rede IPv4 de camada 3 entre vários nós em um cluster. Flanela não controla como os contêineres são conectados em rede ao host, apenas como o tráfego é transportado entre os hosts. No entanto, flannel fornece um plugin CNI para Kubernetes e uma orientação sobre integração com Docker.
Flanela é focada em networking. Para a política de rede, outros projetos como o Calico podem ser usados.
A maneira mais fácil de implantar flanela com Kubernetes é usar uma das várias ferramentas de implantação e distribuições que agrupam clusters em rede com flanela por padrão. Por exemplo, K3s configura flanela nos clusters Kubernetes que ele cria usando o instalador K3s de código aberto para conduzir o processo de configuração.
Embora não seja obrigatório, é recomendado que flannel use a API Kubernetes como armazenamento de apoio, o que evita a necessidade de implantar um cluster etcd
discreto para flannel
. Este modo flannel
é conhecido como gerenciador de sub-rede kube .
A flanela pode ser adicionada a qualquer cluster Kubernetes existente, embora seja mais simples adicionar flannel
antes de qualquer pod usando a rede de pod ter sido iniciado.
Para Kubernetes v1.17+
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
Se você usar podCIDR
personalizado (não 10.244.0.0/16
), primeiro precisará baixar o manifesto acima e modificar a rede para corresponder à sua.
# Needs manual creation of namespace to avoid helm error
kubectl create ns kube-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
Consulte Kubernetes para obter mais detalhes.
Caso um firewall esteja configurado, certifique-se de habilitar a porta correta usada pelo back-end configurado.
Flannel usa portmap
como plugin de rede CNI por padrão; ao implantar o Flannel, certifique-se de que os plug-ins da rede CNI estejam instalados em /opt/cni/bin
os binários mais recentes podem ser baixados com os seguintes comandos:
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.6.0/cni-plugins-linux- $ARCH -v1.6.0.tgz
tar -C /opt/cni/bin -xzf cni-plugins-linux- $ARCH -v1.6.0.tgz
O Flannel requer que o módulo br_netfilter seja iniciado e a partir da versão 1.30 o kubeadm não verifica se o módulo está instalado e o Flannel não iniciará corretamente caso o módulo esteja faltando.
flanela também é amplamente usada fora do kubernetes. Quando implantado fora do Kubernetes, o etcd é sempre usado como armazenamento de dados. Para obter mais detalhes sobre a integração do flannel com o Docker, consulte Running
A Comunidade de Mantenedores de Flanela realiza uma reunião todas as quintas-feiras alternadas às 8h30 PST. Esta reunião é usada para discutir questões, abrir pull requests e outros tópicos relacionados ao Flannel, caso seja necessário.
A agenda da reunião e o link das equipes podem ser encontrados aqui: Agenda da reunião da comunidade de flanela
Consulte CONTRIBUINDO para obter detalhes sobre o envio de patches e o fluxo de trabalho de contribuição.
Consulte relatar bugs para obter detalhes sobre como relatar quaisquer problemas.
Flanela está sob a licença Apache 2.0. Consulte o arquivo LICENSE para obter detalhes.