Часто задаваемые вопросы об AKS

В этой статье приведены ответы на некоторые из наиболее распространенных вопросов о Служба Azure Kubernetes (AKS).

Поддержка

AKS предлагает соглашение об уровне обслуживания?

AKS предоставляет гарантии обслуживания в ценовой категории "Стандартный " с функцией обслуживания об уровне обслуживания.

Что такое поддержка платформы и что такое поддержка платформы?

Поддержка платформы — это сокращенный план поддержки для неподдерживаемых кластеров версий N-3. Поддержка платформы включает только поддержку инфраструктуры Azure.

Дополнительные сведения см. в политике поддержки платформы.

Автоматически ли AKS обновляет неподдерживаемые кластеры?

Да, AKS инициирует автоматическое обновление неподдерживаемых кластеров. Если кластер в версии n-3 (где n является последней поддерживаемой дополнительной версией AKS GA) будет удален до n-4, AKS автоматически обновляет кластер до n-2, чтобы остаться в политике поддержки AKS.

Дополнительные сведения см. в статье "Поддерживаемые версии Kubernetes", "Запланированные периоды обслуживания" и "Автоматическое обновление".

Можно ли запускать контейнеры Windows Server в AKS?

Да, AKS поддерживает контейнеры Windows Server. Дополнительные сведения см. в разделе "Часто задаваемые вопросы о Windows Server в AKS".

Можно ли применять скидки на резервирования Azure к узлам агента AKS?

Узлы агента AKS оплачиваются как стандартные виртуальные машины Azure. Если вы приобрели резервирования Azure для размера виртуальной машины, используемой в AKS, эти скидки применяются автоматически.

Операции

Можно ли переносить кластер между клиентами Azure?

Нет, перемещение кластера AKS между клиентами в настоящее время не поддерживается.

Можно ли переносить кластер между подписками?

Нет, перемещение кластера AKS между подписками в настоящее время не поддерживается.

Можно ли переносить кластер AKS или ресурсы инфраструктуры кластера в другие группы ресурсов или переименовывать их?

Нет, перемещение или переименование кластера AKS и связанных с ним ресурсов не поддерживается.

Можно ли восстановить кластер после его удаления?

Нет, вы не можете восстановить кластер после его удаления. При удалении кластера группа ресурсов узла и все его ресурсы также удаляются.

Если вы хотите сохранить любой из ресурсов, перед удалением кластера переместите их в другую группу ресурсов. Если вы хотите защититься от случайного удаления, можно заблокировать управляемую группу ресурсов AKS, в которой размещаются ресурсы кластера с помощью блокировки группы ресурсов узла.

Можно ли масштабировать кластер AKS до нуля?

Вы можете полностью остановить запущенный кластер AKS или масштабировать или автомасштабировать все или определенные User пулы узлов до нуля.

Масштабировать пулы системных узлов до нуля напрямую нельзя.

Можно ли использовать API масштабируемого набора виртуальных машин для масштабирования вручную?

Нет, операции масштабирования с помощью API масштабируемого набора виртуальных машин не поддерживаются. Api AKS (az aks scale) можно использовать.

Можно ли использовать Масштабируемые наборы виртуальных машин для ручного масштабирования до нуля узлов?

Нет, операции масштабирования с помощью API масштабируемого набора виртуальных машин не поддерживаются. API AKS можно использовать для масштабирования пулов узлов, отличных от системы, до нуля или остановки кластера .

Можно ли остановить все виртуальные машины или отменить их выделение?

Нет, это не поддерживается. Вместо этого следует остановить работу кластера.

Почему с AKS создаются две группы ресурсов?

Нет, операции масштабирования с помощью API масштабируемого набора виртуальных машин не поддерживаются. Api AKS (az aks scale) можно использовать. AKS основывается на многих ресурсах инфраструктуры Azure, включая Масштабируемые наборы виртуальных машин, виртуальные сети и управляемые диски. Эти интеграции позволяют применять многие основные возможности платформы Azure в управляемой среде Kubernetes, предоставляемой AKS. Например, большинство типов виртуальных машин Azure можно использовать с AKS напрямую, а резервирования Azure можно использовать для автоматического получения скидок на эти ресурсы.

Для обеспечения такой архитектуры каждое развертывание AKS охватывает две группы ресурсов.

  1. Первую группу ресурсов создаете вы. Эта группа содержит только ресурс службы Kubernetes. Поставщик ресурсов AKS автоматически создает вторую группу ресурсов во время развертывания. Примером второй группы ресурсов является MC_myResourceGroup_myAKSCluster_eastus. Сведения об указании имени второй группы ресурсов см. в следующем разделе.
  2. Вторая группа ресурсов, которая называется группой ресурсов узла, содержит все ресурсы инфраструктуры, связанные с кластером. Эти ресурсы включают виртуальные машины узла Kubernetes, виртуальную сеть и хранилище. По умолчанию группа ресурсов узла имеет имя наподобие MC_myResourceGroup_myAKSCluster_eastus. AKS автоматически удаляет группу ресурсов узла при удалении кластера. Эту группу ресурсов следует использовать только для ресурсов, использующих жизненный цикл кластера.

Примечание.

Изменение любого ресурса в группе ресурсов узла в кластере AKS является неподдерживаемым действием и приведет к сбоям операции кластера. Вы можете запретить вносить изменения в группу ресурсов узла, блокируя пользователям изменять ресурсы , управляемые кластером AKS.

Можно ли указать собственное имя для группы ресурсов узла AKS?

По умолчанию AKS называет группу ресурсов узла MC_resourcegroupname_clustername_location, но вы можете указать собственное имя.

Чтобы указать собственное имя для группы ресурсов, установите для Azure CLI расширение aks-preview 0.3.2 или более поздней версии. При создании кластера AKS с помощью команды [az aks create][az-aks-create] используйте --node-resource-group параметр и укажите имя группы ресурсов. При использовании шаблона Azure Resource Manager для развертывания кластера AKS можно определить имя группы ресурсов с помощью свойства nodeResourceGroup .

  • Поставщик ресурсов Azure автоматически создает вторичную группу ресурсов.
  • Вы можете указать пользовательское имя для группы ресурсов только при создании кластера.

При работе с группой ресурсов для узлов учитывайте, что нельзя:

  • указать существующую группу ресурсов для узлов;
  • поместить узлы в группу ресурсов в другой подписке;
  • изменить имя группы ресурсов узла после создания кластера;
  • выбрать имена управляемых ресурсов в группе ресурсов узла;
  • изменять или удалять созданные Azure теги управляемых ресурсов в группе ресурсов для узлов.

Можно ли изменять теги и другие свойства ресурсов AKS в группе ресурсов узла?

При изменении или удалении тегов, созданных Azure, и других свойств ресурсов в группе ресурсов узла могут возникнуть непредвиденные ошибки масштабирования и обновления. AKS позволяет создавать и изменять настраиваемые теги, созданные конечными пользователями, а также добавлять эти теги при создании пула узлов. Это может потребоваться, например, для назначения подразделения или места возникновения затрат. Другим вариантом является создание политик Azure с областью в управляемой группе ресурсов.

Созданные Azure теги создаются для соответствующих служб Azure и всегда должны быть разрешены. Для AKS существуют aks-managed и k8s-azure теги. Изменение любых тегов , созданных Azure, на ресурсах в группе ресурсов узла в кластере AKS является неподдерживаемым действием, которое нарушает цель уровня обслуживания (SLO).

Примечание.

В прошлом имя тега "Владелец" было зарезервировано для AKS для управления общедоступным IP-адресом, назначенным на интерфейсном IP-адресе подсистемы балансировки нагрузки. Теперь службы следуют за aks-managed префиксом. Для устаревших ресурсов не используйте политики Azure для применения имени тега "Владелец". В противном случае все ресурсы в развертывании кластера AKS и операциях обновления будут нарушены. Это не относится к вновь созданным ресурсам.

Квоты, ограничения и доступность регионов

В каких регионах Azure в настоящее время предоставляется служба AKS?

Полный список регионов, в которых доступна служба AKS, см. в разделе Регионы доступности.

Может ли кластер AKS охватывать несколько регионов?

Нет, кластеры AKS являются региональными ресурсами и не могут охватывать регионы. Рекомендации по созданию архитектуры, включающей в себя несколько регионов, см. в руководстве по обеспечению непрерывности бизнес-процессов и аварийного восстановления.

Может ли кластер AKS охватывать несколько зон доступности?

Да, кластер AKS можно развернуть в одном или нескольких зонах доступности в регионах, поддерживающих их.

Могут ли в одном кластере быть виртуальные машины разных размеров?

Да, вы можете использовать виртуальные машины разных размеров в кластере AKS, создав несколько пулов узлов.

Какое ограничение размера для образа контейнера в AKS?

AKS не задает ограничение размера образа контейнера. Тем не менее, важно понимать, что больше изображения, чем выше спрос на память. Больший размер может превышать ограничения ресурсов или общую доступную память рабочих узлов. По умолчанию для размера виртуальной машины Standard_DS2_v2 для кластера AKS выделяется 7 ГиБ памяти.

Если образ контейнера слишком велик, например исчисляется терабайтами, возможно, kubelet не сможет извлечь его из реестра контейнеров на узел из-за нехватки места на диске.

Для узлов Windows Server Центр обновления Windows не выполняет автоматический запуск и применение последних обновлений. Вам необходимо выполнять обновление кластера и пулов узлов Windows Server в кластере AKS по регулярному расписанию, основанному на цикле выпуска Центра обновления Windows и вашем собственном процессе проверки. При обновлении создаются узлы, в которых запускается последняя версия образа и исправления Windows Server. Затем более старые версии узлов удаляются. Дополнительные сведения об обновлении пула узлов в AKS см. в этой статье.

Требуется ли запускать образы AKS от имени привилегированного пользователя (root)?

Следующие образы имеют функциональные требования для запуска от имени привилегированного пользователя, и все исключения для любых политик должны регистрироваться:

  • mcr.microsoft.com/oss/kubernetes/coredns
  • mcr.microsoft.com/azuremonitor/containerinsights/ciprod
  • mcr.microsoft.com/oss/calico/node
  • mcr.microsoft.com/oss/kubernetes-csi/azuredisk-csi

Безопасность, доступ и удостоверение

Можно ли ограничить доступ пользователей к серверу API Kubernetes?

Да, существует два варианта ограничения доступа к серверу API:

Применяются ли обновления для системы безопасности к узлам агентов AKS?

AKS исправляет CVEs, которые имеют "исправление поставщика" каждую неделю. CVEs без исправления ожидают исправления поставщика, прежде чем их можно исправить. Образы AKS автоматически обновляются в пределах 30 дней. Мы рекомендуем применить обновленный образ узла к регулярной частоте, чтобы обеспечить применение последних исправленных образов и исправлений ОС. Это можно сделать с помощью одного из следующих методов:

Существуют ли угрозы безопасности, предназначенные для AKS, о которых я должен знать?

Корпорация Майкрософт предлагает рекомендации по иным мерам, которые помогут защитить рабочие нагрузки с помощью таких служб, как Microsoft Defender для контейнеров. Следующая угроза безопасности связана с AKS и Kubernetes, о которых следует знать:

Хранит ли AKS данные клиентов за пределами региона кластера?

Нет, все данные хранятся в регионе кластера.

Как избежать медленных проблем с настройкой прав владения разрешениями при наличии большого количества файлов в томе?

Традиционно, если модуль pod выполняется как пользователь, не являющийся пользователем,который вы должны, необходимо указать fsGroup внутри контекста безопасности pod, чтобы том можно было читать и записываемый с помощью pod. Это требование подробно описано здесь.

Побочный эффект настройки fsGroup заключается в том, что каждый раз при установке тома Kubernetes должен рекурсивно chmod() chown() и все файлы и каталоги внутри тома (с несколькими исключениями, указанными ниже). Этот сценарий происходит, даже если право владения группой тома уже соответствует запрошенному fsGroup. Это может быть дорого для больших томов с большим количеством небольших файлов, что может привести к тому, что запуск pod займет много времени. До версии 1.20 этот сценарий представлял собой известную проблему, и обходное решение заключалось в настройке запуска модуля pod от имени root:

apiVersion: v1
kind: Pod
metadata:
  name: security-context-demo
spec:
  securityContext:
    runAsUser: 0
    fsGroup: 0

Проблема была устранена с помощью Kubernetes версии 1.20. Дополнительные сведения см. в статье Kubernetes 1.20: детализированный контроль за изменениями разрешений тома.

Сеть

Как управляемый уровень управления взаимодействует с моими узлами?

AKS использует передачу данных по безопасному туннелю, чтобы API-серверы и отдельные kubelets узлов могли обмениваться данными даже в разных виртуальных сетях. Туннель защищен с помощью шифрования mTLS. Текущий основной туннель, используемый AKS — Konnectivity, ранее известный как apiserver-network-proxy. Убедитесь, что все сетевые правила удовлетворяют обязательным правилам сети Azure и полным доменным именам.

Можно ли использовать полное доменное имя сервера API вместо IP-адреса кластера?

Да, можно добавить заметку kubernetes.azure.com/set-kube-service-host-fqdn в модули pod, чтобы задать KUBERNETES_SERVICE_HOST переменное доменное имя сервера API вместо IP-адреса службы в кластере. Это полезно в случаях, когда исходящий трафик кластера выполняется через брандмауэр уровня 7, например при использовании Брандмауэр Azure с правилами приложений.

Можно ли настроить группы безопасности сети с AKS?

AKS не применяет группы безопасности сети (NSG) к своей подсети и не изменяет ни одну из групп безопасности сети, связанных с этой подсетью. AKS изменяет только параметры групп безопасности сети для сетевых интерфейсов. Если вы используете CNI, также необходимо проследить за тем, чтобы правила безопасности в NSG разрешали трафик между узлом и диапазонами CIDR модуля pod. Если вы используете kubenet, также необходимо проследить за тем, чтобы правила безопасности в NSG разрешали трафик между узлом и CIDR модуля pod. Дополнительные сведения см. в разделе Группы безопасности сети.

Как работает синхронизация времени в AKS?

Узлы AKS запускают службу chrony, которая извлекает время из localhost. Контейнеры, работающие на модулях pod, получают данные времени от узлов AKS. Приложения, запущенные внутри контейнера, используют данные времени из контейнера модуля pod.

Надстройки, расширения и интеграции

Можно ли использовать пользовательские расширения виртуальных машин?

Нет, AKS является управляемой службой, и управление ресурсами IaaS не поддерживается. Чтобы установить пользовательские компоненты, используйте интерфейсы API и механизмы Kubernetes. Например, вы можете использовать для установки необходимых компонентов контроллеры DaemonSet.

Какие контроллеры допуска Kubernetes поддерживает AKS? Можно ли добавлять и удалять контроллеры допуска?

AKS поддерживает следующие контроллеры допуска:

  • NamespaceLifecycle
  • LimitRanger
  • ServiceAccount
  • DefaultIngressClass
  • DefaultStorageClass
  • DefaultTolerationSeconds
  • MutatingAdmissionWebhook
  • ValidatingAdmissionWebhook
  • ResourceQuota
  • PodNodeSelector
  • PodTolerationRestriction
  • ExtendedResourceToleration

В настоящее время изменить список контроллеров допуска в AKS невозможно.

Можно ли использовать веб-перехватчики контроллеров допуска в AKS?

Да, вы можете использовать веб-перехватчики контроллера допуска в AKS. Рекомендуется исключить внутренние пространства имен AKS, помеченные меткой control-plane. Например:

namespaceSelector:
    matchExpressions:
    - key: control-plane
      operator: DoesNotExist

AKS фильтрует через брандмауэр исходящий трафик сервера API, поэтому веб-перехватчики контроллера допуска должны быть доступны изнутри кластера.

Могут ли веб-перехватчики контроллеров допуска влиять на kube-system и внутренние пространства имен AKS?

Чтобы обеспечить стабильность системы и предотвратить влияние настраиваемых контроллеров допусков на внутренние службы в kube-system, пространство имен AKS содержит функцию принудительного применения допуска, которая автоматически исключает внутренние пространства имен kube-system и AKS. Эта служба гарантирует, что пользовательские контроллеры допуска не влияют на службы, работающие в kube-system.

Если у вас есть критически важный вариант использования для развертывания чего-то в kube-system (не рекомендуется) в поддержку пользовательского веб-перехватчика допуска, вы можете добавить следующую метку или заметку, чтобы средство принудительного применения допуска игнорирует его.

Метка "admissions.enforcer/disabled": "true" или заметка "admissions.enforcer/disabled": true

Интегрируется ли Azure Key Vault с AKS?

Поставщик Azure Key Vault для драйвера CSI хранилища секретов обеспечивает интеграцию платформенной функциональности Azure Key Vault в AKS.

Можно ли использовать библиотеки шифрования FIPS с развертываниями в AKS?

Теперь узлы с поддержкой FIPS поддерживаются в пулах узлов на основе Linux. Дополнительные сведения см. в статье Добавление пула узлов с поддержкой FIPS.

Как обновляются надстройки AKS?

Любое исправление, включая исправление безопасности, автоматически применяется к кластеру AKS. Все, что больше, чем исправление, например основные или незначительные изменения версии (которые могут иметь критические изменения в развернутых объектах), обновляется при обновлении кластера, если новый выпуск доступен. Когда доступен новый выпуск, посетите заметки о выпуске AKS.

Что такое расширение AKS Linux, установленное на экземплярах Масштабируемые наборы виртуальных машин Linux?

Расширение Linux AKS — это расширение виртуальной машины Azure, которое устанавливает и настраивает средства мониторинга на рабочих узлах Kubernetes. Расширение устанавливается на всех новых и существующих узлах Linux. Он настраивает следующие средства мониторинга:

  • Узел-экспортер: собирает данные телеметрии оборудования из виртуальной машины и делает его доступным с помощью конечной точки метрик. Затем средство мониторинга, например Prometheus, может отказаться от этих метрик.
  • Детектор проблем с узлами: стремится сделать различные проблемы узлов видимыми для вышестоящих слоев в стеке управления кластерами. Это системный модуль, который выполняется на каждом узле, обнаруживает проблемы с узлами и сообщает их серверу API кластера с помощью событий и NodeConditions.
  • ig: платформа с открытым исходным кодом eBPF для отладки и наблюдения за системами Linux и Kubernetes. Он предоставляет набор средств (или гаджетов), предназначенных для сбора соответствующих сведений, позволяя пользователям определить причину проблем с производительностью, сбоями или другими аномалиями. В частности, независимость от Kubernetes позволяет пользователям использовать его также для отладки проблем уровня управления.

Эти средства помогают обеспечить наблюдаемость во многих проблемах со работоспособностью узлов, таких как:

  • Проблемы с управляющей службой инфраструктуры: служба NTP вниз
  • Проблемы с оборудованием: плохой ЦП, память или диск
  • Проблемы с ядром: взаимоблокировка ядра, поврежденная файловая система
  • Проблемы со средой выполнения контейнера: управляющая программа неответственной среды выполнения

Расширение не требует дополнительного исходящего доступа к любым URL-адресам, IP-адресам или портам за пределами задокументированных требований исходящего трафика AKS. Для этого не требуются специальные разрешения, предоставленные в Azure. Он использует kubeconfig для подключения к серверу API для отправки собранных данных мониторинга.

Устранение неполадок с кластером

Почему удаление моего кластера занимает так много времени?

Большинство кластеров удаляются по запросу пользователя. В некоторых случаях, особенно в тех случаях, когда вы приносите собственную группу ресурсов или выполняете задачи между группами RG, удаление может занять больше времени или даже завершиться сбоем. Если у вас возникли проблемы с удалением, убедитесь, что у вас нет блокировок на RG, что все ресурсы за пределами RG не связаны с RG и т. д.

Почему создание или обновление кластера занимает столько времени?

Если у вас возникли проблемы с операциями создания и обновления кластера, убедитесь, что у вас нет назначенных политик или ограничений служб, которые могут блокировать управление ресурсами AKS, такими как виртуальные машины, подсистемы балансировки нагрузки, теги и т. д.

Можно ли обновить кластер, если имеются модули pod или развертывания в состоянии NodeLost или Unknown?

Вы можете, но мы не рекомендуем его. Необходимо выполнить обновления, когда состояние кластера известно и работоспособно.

Можно ли выполнить обновление, если один или несколько узлов кластера находятся в неработоспособном состоянии или их работа завершена?

Нет, удалите или удалите все узлы в состоянии сбоя или в противном случае из кластера перед обновлением.

Я выполнил удаление кластера, но см. сообщение об ошибке "[Errno 11001] getaddrinfo завершилось сбоем.

Чаще всего эта ошибка возникает, если у вас есть одна или несколько групп безопасности сети (NSG), которые по-прежнему используются в кластере. Удалите их и повторите попытку удаления.

Я выполнил обновление, но теперь мои модули pod находятся в циклах сбоя, и пробы готовности завершаются сбоем.

Убедитесь, что срок действия субъекта-службы не истек. См. сведения о субъекте-службе AKS и учетных данных обновления AKS.

Мой кластер работал, но внезапно не может подготовить LoadBalancers, подключить PVCs и т. д.

Убедитесь, что срок действия субъекта-службы не истек. См. сведения о субъекте-службе AKS и учетных данных обновления AKS.