Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure CNI Powered by Cilium объединяет надежный уровень управления Azure CNI с плоскости данных Cilium для обеспечения высокопроизводительной сети и безопасности.
Используя программы eBPF, загруженные в ядро Linux и более эффективную структуру объектов API, Azure CNI Powered cilium обеспечивает следующие преимущества:
Функциональность, эквивалентная существующим плагинам Azure CNI и Azure CNI Overlay.
Улучшенная маршрутизация служб
Более эффективное применение политики сети
Улучшенная наблюдаемость трафика кластера
Поддержка больших кластеров (больше узлов, модулей pod и служб)
управление IP-адресами (IPAM) с Azure CNI на основе Cilium
Azure CNI Powered by Cilium можно развернуть с помощью двух различных методов назначения IP-адресов pod:
Назначать IP-адреса из наложенной сети (аналогично режиму Overlay Azure CNI)
Назначение IP-адресов из виртуальной сети (аналогично существующему Azure CNI с динамическим назначением IP-адресов pod)
Если вы не уверены, какой параметр следует выбрать, прочитайте статью "Выбор сетевой модели для использования".
Versions
| Версия Kubernetes | Минимальная версия Cilium |
|---|---|
| 1.29 (LTS) | 1.14.19 |
| 1.30 | 1.14.19 |
| 1.31 | 1.16.6 |
| 1.32 | 1.17.0 |
| 1.33 | 1.17.0 |
Дополнительные сведения о версиях AKS и временных шкалах выпуска см. в поддерживаемых версиях Kubernetes .
Применение политики сети
Cilium применяет сетевые политики для разрешения или запрета трафика между pod. С помощью Cilium вам не нужно устанавливать отдельный подсистему сетевой политики, например Диспетчер сетевых политик Azure или Calico.
Limitations
Azure CNI, на базе Cilium в настоящее время имеет следующие ограничения:
Доступно только для Linux, а не для Windows.
Политики сети не могут использовать
ipBlockдля разрешения доступа к IP-адресам узлов или подов. Ознакомьтесь с часто задаваемыми вопросами для получения подробной информации и рекомендуемым обходным решением.Для Cilium версии 1.16 или более ранней версии несколько служб Kubernetes не могут использовать один и тот же порт узла с различными протоколами (например, TCP или UDP) (проблема Cilium #14287).
Политики сети не применяются к подам, использующим сетевые функции хоста (
spec.hostNetwork: true), так как эти поды используют идентификацию узла вместо отдельных идентификаций.Срезы конечных точек Cilium поддерживаются в Kubernetes версии 1.32 и выше. Срезы конечных точек Cilium не поддерживают конфигурацию группировки конечных точек Cilium. Пространство имен приоритета через
cilium.io/ces-namespaceне поддерживается.Политика L7 не поддерживается CiliumClusterwideNetworkPolicy (CCNP).
Considerations
Чтобы воспользоваться такими возможностями, как наблюдение за сетевым трафиком и функциями безопасности, такими как фильтрация на основе полностью квалифицированного доменного имени (FQDN) и сетевые политики уровня 7 в кластере, рекомендуем включить расширенные сетевые службы контейнеров в кластерах.
Prerequisites
Azure CLI версии 2.48.1 или более поздней версии. Запустите
az --version, чтобы просмотреть текущую установленную версию. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.При использовании шаблонов ARM или REST API версия API AKS должна быть 2022-09-02-preview или более поздней.
Note
Предыдущие версии API AKS (2022-09-02preview до 2023-01-02preview) использовали поле networkProfile.ebpfDataplane=cilium. Версии API AKS с 2023-02-02preview используют поле networkProfile.networkDataplane=cilium для включения Azure CNI Powered cilium.
Создание кластера AKS с помощью Azure CNI Powered by Cilium
Вариант 1: Назначение IP-адресов из наложенной сети
Используйте следующие команды, чтобы создать кластер с наложенной сетью и Cilium. Замените значения для <clusterName>, <resourceGroupName>и <location>:
az aks create \
--name <clusterName> \
--resource-group <resourceGroupName> \
--location <location> \
--network-plugin azure \
--network-plugin-mode overlay \
--pod-cidr 192.168.0.0/16 \
--network-dataplane cilium \
--generate-ssh-keys
Note
Флаг --network-dataplane cilium заменяет устаревший --enable-ebpf-dataplane флаг, используемый в более ранних версиях расширения CLI aks-preview.
Вариант 2. Назначение IP-адресов из виртуальной сети
Выполните следующие команды, чтобы создать группу ресурсов и виртуальную сеть с подсетью для узлов и подсетью для подов.
# Create the resource group
az group create --name <resourceGroupName> --location <location>
# Create a virtual network with a subnet for nodes and a subnet for pods
az network vnet create --resource-group <resourceGroupName> --location <location> --name <vnetName> --address-prefixes <address prefix, example: 10.0.0.0/8> -o none
az network vnet subnet create --resource-group <resourceGroupName> --vnet-name <vnetName> --name nodesubnet --address-prefixes <address prefix, example: 10.240.0.0/16> -o none
az network vnet subnet create --resource-group <resourceGroupName> --vnet-name <vnetName> --name podsubnet --address-prefixes <address prefix, example: 10.241.0.0/16> -o none
Создание кластера с помощью --network-dataplane cilium:
az aks create \
--name <clusterName> \
--resource-group <resourceGroupName> \
--location <location> \
--max-pods 250 \
--network-plugin azure \
--vnet-subnet-id /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/nodesubnet \
--pod-subnet-id /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/podsubnet \
--network-dataplane cilium \
--generate-ssh-keys
Вариант 3. Назначение IP-адресов из подсети узла
Note
Требуется Azure CLI версии 2.69.0 или более поздней. Запустите az --version , чтобы просмотреть текущую установленную версию. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.
Создайте кластер с помощью подсети узла с плоскостью данных Cilium:
az aks create \
--name <clusterName> \
--resource-group <resourceGroupName> \
--location <location> \
--network-plugin azure \
--network-dataplane cilium \
--generate-ssh-keys
Часто задаваемые вопросы
Можно ли настроить конфигурацию Cilium?
Нет, AKS управляет конфигурацией Cilium и ее нельзя изменить. Мы рекомендуем клиентам, которым требуется больше элементов управления, использовать AKS BYO CNI и устанавливать Cilium вручную.
Можно ли использовать
CiliumNetworkPolicyпользовательские ресурсы вместо ресурсов KubernetesNetworkPolicy?Поддерживаются L3 и L4
CiliumNetworkPolicyи могут использоваться вместе с ресурсами KubernetesNetworkPolicy.Клиенты могут использовать фильтрацию по полным доменным именам и политики уровня 7 как часть пакета функций Advanced Container Networking Services.
Можно ли использовать
CiliumClusterwideNetworkPolicy?Да,
CiliumClusterwideNetworkPolicyподдерживается. В следующем примере политики YAML показана настройка правила L4:apiVersion: "cilium.io/v2" kind: CiliumClusterwideNetworkPolicy metadata: name: "l4-rule-ingress-backend-frontend" spec: endpointSelector: matchLabels: role: backend ingress: - fromEndpoints: - matchLabels: role: frontend toPorts: - ports: - port: "80" protocol: TCPКакие функции Cilium поддерживаются в управляемом CNI Azure? Какие из них требуют услуг расширенного сетевого взаимодействия контейнеров?
Поддерживаемые функции без ACNS с ACNS Срезы конечных узлов Cilium ✔️ ✔️ Политики сети K8s ✔️ ✔️ Политика локального перенаправления ✔️ ✔️ Политики сети Cilium L3/L4 ✔️ ✔️ Политика сети Cilium Clusterwide ✔️ ✔️ Фильтрация полного доменного имени ❌ ✔️ Политики сети L7 (HTTP/gRPC/Kafka) ❌ ✔️ Наблюдение за сетью контейнеров (метрики и журналы потоков) ❌ ✔️ Маршрутизация узла eBPF ❌ ✔️ Почему трафик блокируется, если
NetworkPolicyимеетipBlock, разрешающий IP-адрес?Ограничение Azure CNI Powered by Cilium заключается в том, что
NetworkPolicyipBlockне может выбрать IP-адреса pod или узла.Например, этот
NetworkPolicyимеетipBlock, который позволяет всему исходящему трафику направляться к0.0.0.0/0.apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: example-ipblock spec: podSelector: {} policyTypes: - Egress egress: - to: - ipBlock: cidr: 0.0.0.0/0 # This will still block pod and node IPs.Однако при применении
NetworkPolicyCilium блокирует исходящий трафик к IP-адресам подов и узлов сети, даже если IP-адреса находятся вipBlockCIDR.В качестве обходного решения можно добавить
namespaceSelectorиpodSelectorдля выбора Pods. В этом примере выбираются все pod'ы во всех пространствах имен.apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: example-ipblock spec: podSelector: {} policyTypes: - Egress egress: - to: - ipBlock: cidr: 0.0.0.0/0 - namespaceSelector: {} - podSelector: {}Note
В настоящее время невозможно указать
NetworkPolicyсipBlockдля разрешения трафика на IP-адреса узлов.Поддерживает ли Azure CNI на базе Cilium политику Local Redirect?
Поддерживается локальная политика перенаправления. Политика локального перенаправления в Azure CNI с помощью Cilium позволяет модулям направлять трафик непосредственно в локальные конечные точки на одном узле, уменьшая количество переходов между узлами и снижая задержку для таких служб, как DNS и пробы работоспособности.
Настраивает ли AKS ограничения ЦП или памяти на Cilium
daemonset?Нет, AKS не настраивает ограничения ЦП или памяти на Cilium
daemonset, так как Cilium является критически важным системным компонентом для сетей pod и осуществления политик сети.Использует ли Azure CNI на базе Cilium Kube-Proxy?
Нет, кластеры AKS, созданные с сетевой плоскостью данных как Cilium, не используют Kube-Proxy. Если кластеры AKS находятся в Azure CNI Overlay или используют Azure CNI с динамическим выделением IP-адресов и обновляются до кластеров AKS, работающих на Azure CNI с поддержкой Cilium, новые рабочие нагрузки узлов создаются без использования kube-proxy. Старые рабочие нагрузки также переносятся для запуска без kube-proxy в рамках этого процесса обновления.
Дальнейшие шаги
Узнайте больше о сетевом взаимодействии в AKS из следующих статей:
Azure Kubernetes Service