Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
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)
Если вы не уверены, какой параметр следует выбрать, прочитайте статью "Выбор сетевой модели для использования".
Версии
Версия Kubernetes | Минимальная версия Cilium |
---|---|
1.27 (LTS) | 1.13.18 |
1.28 (конец жизни) | 1.13.18 |
1,29 | 1.14.19 |
1.30 (LTS) | 1.14.19 |
1.31 | 1.16.6 |
1,32 | 1.17.0 |
Дополнительные сведения о версиях AKS и временных шкалах выпуска см. в поддерживаемых версиях Kubernetes .
Применение политики сети
Cilium применяет сетевые политики для разрешения или запрета трафика между pod. С помощью Cilium вам не нужно устанавливать отдельный подсистему сетевой политики, например Диспетчер сетевых политик Azure или Calico.
Ограничения
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
не поддерживаются.
Соображения
Чтобы воспользоваться такими возможностями, как наблюдение за сетевым трафиком и функциями безопасности, такими как фильтрация на основе полностью квалифицированного доменного имени (FQDN) и сетевые политики уровня 7 в кластере, рекомендуем включить расширенные сетевые службы контейнеров в кластерах.
Предварительные условия
Azure CLI версии 2.48.1 или более поздней версии. Запустите
az --version
, чтобы просмотреть текущую установленную версию. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.При использовании шаблонов ARM или REST API версия API AKS должна быть 2022-09-02-preview или более поздней.
Примечание.
Предыдущие версии 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
Примечание.
Флаг --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-адресов из подсети узла
Примечание.
Требуется 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
?Клиенты могут использовать фильтрацию по полным доменным именам и политики уровня 7 как часть пакета функций Advanced Container Networking Services.
Можно ли использовать
ClusterwideCiliumNetworkPolicy
?Функция
ClusterwideCiliumNetworkPolicy
не поддерживается.Какие функции Cilium поддерживаются в управляемом CNI Azure? Какие из них требуют услуг расширенного сетевого взаимодействия контейнеров?
Поддерживаемые функции без ACNS с ACNS Срезы конечных узлов Cilium ✔️ ✔️ Политики сети K8s ✔️ ✔️ Политики сети Cilium L3/L4 ✔️ ✔️ Фильтрация полного доменного имени ❌ ✔️ Политики сети L7 (HTTP/gRPC/Kafka) ❌ ✔️ Наблюдаемость сети контейнеров (метрики и журналы потоков) ❌ ✔️ Почему трафик блокируется, если
NetworkPolicy
имеетipBlock
, разрешающий IP-адрес?Ограничение Azure CNI Powered by Cilium заключается в том, что
NetworkPolicy
ipBlock
не может выбрать 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.
Однако при применении
NetworkPolicy
Cilium блокирует исходящий трафик к IP-адресам подов и узлов сети, даже если IP-адреса находятся вipBlock
CIDR.В качестве обходного решения можно добавить
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: {}
Примечание.
В настоящее время невозможно указать
NetworkPolicy
сipBlock
для разрешения трафика на IP-адреса узлов.Настраивает ли 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