Skip to content

Flannel

Flannel — это популярный плагин для интерфейса контейнерной сети (CNI), предоставляющий простой и эффективный способ создания оверлейной сети для кластеров Kubernetes. Flannel — это CNI по умолчанию, устанавливаемый ALT Orchestra, и при желании его можно переопределить другими реализациями CNI. В сгенерированном конфиге вы не увидите явного указания настройки CNI, что означает использование значения по умолчанию. В явном виде, если, например, надо добавить дополнительные опции для Flannel, настройка будет выглядеть так:

yaml
cluster:
  network:
    cni:
      name: flannel
      flannel:
        extraArgs:
          ...
          # []string	
          # Extra arguments for ‘flanneld’.

ALT Orchestra поставляется со всеми необходимыми базовыми плагинами CNI для Flannel, поэтому стандартную установку Flannel, выполненную ALT Orchestra, можно заменить пользовательской установкой на основе документации Flannel.

Flannel инкапсулирует сетевой трафик между подами с помощью VXLAN (по умолчанию в ALT Orchestra). Это обеспечивает бесперебойную связь между подами на разных узлах кластера без необходимости дополнительной настройки базовой сетевой инфраструктуры. В этом случае kube-proxy отвечает за маршрутизацию трафика между подами и сервисами, а Flannel управляет оверлейной сетью и обеспечивает возможность взаимодействия подов друг с другом независимо от их физического местоположения в кластере.

Пример сетевой политики

Следующий пример демонстрирует сетевую политику, которая ограничивает входящий трафик только для подов с меткой app: web в default пространстве имен и разрешает трафик только от подов с меткой app: api:

yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-api-to-web
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: web
  policyTypes:
    - Ingress
  ingress:
    - from:
        - podSelector:
            matchLabels:
              app: api
      ports:
        - protocol: TCP
          port: 80

Примените данную политику:

console
$ kubectl apply -f network-policy.yaml

Теперь только поды с меткой app: api могут получить доступ к порту 80 на модулях с соответствующей меткой app: web. Остальной входящий трафик к этим подам запрещен.

Примечание: сетевые политики требуют kubeNetworkPoliciesEnabled: true в конфигурации Flannel, как показано выше. Без этой настройки ресурсы NetworkPolicy принимаются, но не применяются.

Опубликовано под лицензией GPL-3.0+. Содержание доступно по лицензии CC BY-SA 4.0, если не указано иное. Разработано участниками ALT Orchestra.