Развертывание расширений кластера Kubernetes с поддержкой Azure Arc и управление ими
Экземпляры расширений можно создать в кластере Kubernetes с поддержкой Arc, задать обязательные и необязательные параметры, включая параметры, связанные с обновлениями и конфигурациями. Кроме того, можно просматривать экземпляры расширений, перечислять, обновлять и удалять их.
Перед началом работы ознакомьтесь с концептуальной обзором расширений кластера Kubernetes с поддержкой Arc и просмотрите список доступных в настоящее время расширений.
Необходимые компоненты
Последняя версия Azure CLI.
Последние версии расширений
connectedk8s
k8s-extension
Azure CLI. Установите эти расширения, выполнив следующие команды:az extension add --name connectedk8s az extension add --name k8s-extension
connectedk8s
k8s-extension
Если расширения уже установлены, убедитесь, что они обновлены до последней версии, используя следующие команды:az extension update --name connectedk8s az extension update --name k8s-extension
Существующий подключенный кластер Kubernetes с поддержкой Azure Arc с по крайней мере одним узлом операционной системы и типа
linux/amd64
архитектуры. При развертывании Flux (GitOps) можно использовать кластер на основе ARM64 безlinux/amd64
узла.- Если вы еще не подключились к кластеру, воспользуйтесь этим кратким руководством.
- Обновите агенты до последней версии.
Создание экземпляра расширения
Чтобы создать новый экземпляр расширения, используйте , k8s-extension create
передавая значения для необходимых параметров.
В этом примере создается экземпляр расширения Azure Monitor Container Insights в кластере Kubernetes с поддержкой Azure Arc:
az k8s-extension create --name azuremonitor-containers --extension-type Microsoft.AzureMonitor.Containers --scope cluster --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters
Выходные данные:
{
"autoUpgradeMinorVersion": true,
"configurationProtectedSettings": null,
"configurationSettings": {
"logAnalyticsWorkspaceResourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/defaultresourcegroup-eus/providers/microsoft.operationalinsights/workspaces/defaultworkspace-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-eus"
},
"creationTime": "2021-04-02T12:13:06.7534628+00:00",
"errorInfo": {
"code": null,
"message": null
},
"extensionType": "microsoft.azuremonitor.containers",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/demo/providers/Microsoft.Kubernetes/connectedClusters/demo/providers/Microsoft.KubernetesConfiguration/extensions/azuremonitor-containers",
"identity": null,
"installState": "Pending",
"lastModifiedTime": "2021-04-02T12:13:06.753463+00:00",
"lastStatusTime": null,
"name": "azuremonitor-containers",
"releaseTrain": "Stable",
"resourceGroup": "demo",
"scope": {
"cluster": {
"releaseNamespace": "azuremonitor-containers"
},
"namespace": null
},
"statuses": [],
"systemData": null,
"type": "Microsoft.KubernetesConfiguration/extensions",
"version": "2.8.2"
}
Примечание.
Служба не может хранить конфиденциальные данные более 48 часов. Если агенты Kubernetes с поддержкой Azure Arc не имеют сетевого подключения в течение более 48 часов и не могут определить, следует ли создавать расширение в кластере, расширение переходит в Failed
состояние. После этого необходимо снова запустить k8s-extension create
его, чтобы создать новый ресурс Azure расширения.
Azure Monitor Container Insights — это одноэлементное расширение (только один обязательный для каждого кластера). Перед установкой этих расширений необходимо очистить все предыдущие установки диаграмм Helm в Azure Monitor Container Insights (без расширений). Следуйте инструкциям по удалению диаграммы Helm перед выполнением az k8s-extension create
.
Обязательные параметры
При создании экземпляра расширения требуются az k8s-extension create
следующие параметры.
Наименование параметра | Description |
---|---|
--name |
Имя экземпляра расширения |
--extension-type |
Тип расширения , которое требуется установить в кластере. Например: Microsoft.AzureMonitor.Containers, microsoft.azuredefender.kubernetes |
--scope |
Область установки расширения или cluster namespace |
--cluster-name |
Имя ресурса Kubernetes с поддержкой Azure Arc, в котором должен быть создан экземпляр расширения |
--resource-group |
Группа ресурсов, содержащая ресурс Kubernetes с поддержкой Azure Arc |
--cluster-type |
Тип кластера, в котором должен быть создан экземпляр расширения. Для большинства сценариев используйте connectedClusters кластеры Kubernetes с поддержкой Azure Arc. |
Необязательные параметры
Используйте один или несколько из этих необязательных параметров при необходимости для сценариев вместе с необходимыми параметрами.
Примечание.
Вы можете автоматически обновить экземпляр расширения до последних дополнительных и исправленных версий, установив auto-upgrade-minor-version
true
для него значение или настроить версию экземпляра расширения вручную с помощью --version
параметра. Мы рекомендуем включить автоматическое обновление для дополнительных версий и исправлений, чтобы у вас всегда были последние исправления безопасности и возможности.
Так как обновления основных версий могут включать критические изменения, автоматическое обновление для новых основных версий экземпляра расширения не поддерживается. Вы можете выбрать, когда вручную обновить экземпляры расширения до новой основной версии.
Наименование параметра | Description |
---|---|
--auto-upgrade-minor-version |
Логическое свойство, определяющее, обновляется ли дополнительная версия расширения автоматически. Значение по умолчанию равно true . Если этот параметр задан true , параметр нельзя задать version , так как версия будет динамически обновлена. Если задано значение false , расширение не будет автоматически обновлено даже для версий исправлений. |
--version |
Версия устанавливаемого расширения (конкретная версия для прикрепления к ней экземпляра расширения). Не должен быть указан, если auto-upgrade-minor-version задано значение true . |
--configuration-settings |
Параметры, которые можно передать в расширение для управления его функциями. Они передаются в виде пар, разделенных key=value пробелами, после имени параметра. Если этот параметр используется в команде, то --configuration-settings-file не может использоваться в той же команде. |
--configuration-settings-file |
Путь к JSON-файлу с key=value парами, используемыми для передачи параметров конфигурации в расширение. Если этот параметр используется в команде, то --configuration-settings не может использоваться в той же команде. |
--configuration-protected-settings |
Параметры, которые не могут быть извлечены с помощью GET вызовов ИЛИ az k8s-extension show команд API. Обычно используется для передачи конфиденциальных параметров. Они передаются в виде пар, разделенных key=value пробелами, после имени параметра. Если этот параметр используется в команде, то --configuration-protected-settings-file не может использоваться в той же команде. |
--configuration-protected-settings-file |
Путь к JSON-файлу с key=value парами, используемым для передачи конфиденциальных параметров в расширение. Если этот параметр используется в команде, то --configuration-protected-settings не может использоваться в той же команде. |
--release-namespace |
Этот параметр указывает пространство имен, в котором будет создан выпуск. Имеет значение только в том случае, если scope задано значение cluster . |
--release-train |
Авторы расширений могут публиковать версии в различных поездах выпуска, таких как Stable , Preview и т. д. Если этот параметр не задан явным образом, Stable используется в качестве значения по умолчанию. |
--target-namespace |
Указывает пространство имен, в котором будет создан выпуск. Разрешение системной учетной записи, созданной для этого экземпляра расширения, будет ограничено этим пространством имен. Имеет значение только в том случае, если scope задано значение namespace . |
Отображение сведений о расширении
Чтобы просмотреть сведения о экземпляре установленного расширения, используйте , k8s-extension show
передавая значения для обязательных параметров.
az k8s-extension show --name azuremonitor-containers --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters
Выходные данные:
{
"autoUpgradeMinorVersion": true,
"configurationProtectedSettings": null,
"configurationSettings": {
"logAnalyticsWorkspaceResourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/defaultresourcegroup-eus/providers/microsoft.operationalinsights/workspaces/defaultworkspace-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-eus"
},
"creationTime": "2021-04-02T12:13:06.7534628+00:00",
"errorInfo": {
"code": null,
"message": null
},
"extensionType": "microsoft.azuremonitor.containers",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/demo/providers/Microsoft.Kubernetes/connectedClusters/demo/providers/Microsoft.KubernetesConfiguration/extensions/azuremonitor-containers",
"identity": null,
"installState": "Installed",
"lastModifiedTime": "2021-04-02T12:13:06.753463+00:00",
"lastStatusTime": "2021-04-02T12:13:49.636+00:00",
"name": "azuremonitor-containers",
"releaseTrain": "Stable",
"resourceGroup": "demo",
"scope": {
"cluster": {
"releaseNamespace": "azuremonitor-containers"
},
"namespace": null
},
"statuses": [],
"systemData": null,
"type": "Microsoft.KubernetesConfiguration/extensions",
"version": "2.8.2"
}
Список всех расширений, установленных в кластере
Чтобы просмотреть список всех расширений, установленных в кластере, используйте k8s-extension list
, передавая значения для обязательных параметров.
az k8s-extension list --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters
Выходные данные:
[
{
"autoUpgradeMinorVersion": true,
"creationTime": "2020-09-15T02:26:03.5519523+00:00",
"errorInfo": {
"code": null,
"message": null
},
"extensionType": "Microsoft.AzureMonitor.Containers",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myRg/providers/Microsoft.Kubernetes/connectedClusters/myCluster/providers/Microsoft.KubernetesConfiguration/extensions/myExtInstanceName",
"identity": null,
"installState": "Pending",
"lastModifiedTime": "2020-09-15T02:48:45.6469664+00:00",
"lastStatusTime": null,
"name": "myExtInstanceName",
"releaseTrain": "Stable",
"resourceGroup": "myRG",
"scope": {
"cluster": {
"releaseNamespace": "myExtInstanceName1"
}
},
"statuses": [],
"type": "Microsoft.KubernetesConfiguration/extensions",
"version": "0.1.0"
},
{
"autoUpgradeMinorVersion": true,
"creationTime": "2020-09-02T00:41:16.8005159+00:00",
"errorInfo": {
"code": null,
"message": null
},
"extensionType": "microsoft.azuredefender.kubernetes",
"id": "/subscriptions/0e849346-4343-582b-95a3-e40e6a648ae1/resourceGroups/myRg/providers/Microsoft.Kubernetes/connectedClusters/myCluster/providers/Microsoft.KubernetesConfiguration/extensions/defender",
"identity": null,
"installState": "Pending",
"lastModifiedTime": "2020-09-02T00:41:16.8005162+00:00",
"lastStatusTime": null,
"name": "microsoft.azuredefender.kubernetes",
"releaseTrain": "Stable",
"resourceGroup": "myRg",
"scope": {
"cluster": {
"releaseNamespace": "myExtInstanceName2"
}
},
"type": "Microsoft.KubernetesConfiguration/extensions",
"version": "0.1.0"
}
]
Обновление экземпляра расширения
Примечание.
Ознакомьтесь с документацией по конкретному типу расширения, чтобы понять конкретные параметры и --configuration-protected-settings
которые могут быть обновлены--configuration-settings
. Для --configuration-protected-settings
этого должны быть предоставлены все параметры, даже если обновляется только один параметр. Если какие-либо из этих параметров опущены, эти параметры будут считаться устаревшими и удаленными.
Чтобы обновить существующий экземпляр расширения, используйте , k8s-extension update
передавая значения для обязательных и необязательных параметров. Обязательные и необязательные параметры немного отличаются от тех, которые использовались для создания экземпляра расширения.
В этом примере параметр для экземпляра расширения Машинное обучение Azure обновляется auto-upgrade-minor-version
true
следующим образом:
az k8s-extension update --name azureml --extension-type Microsoft.AzureML.Kubernetes --scope cluster --cluster-name <clusterName> --resource-group <resourceGroupName> --auto-upgrade-minor-version true --cluster-type managedClusters
Обязательные параметры для обновления
Наименование параметра | Description |
---|---|
--name |
Имя экземпляра расширения |
--cluster-name |
Имя кластера, на котором должен быть создан экземпляр расширения. |
--resource-group |
Группа ресурсов, содержащая кластер |
--cluster-type |
Тип кластера, в котором должен быть создан экземпляр расширения. Для кластеров Kubernetes с поддержкой Azure Arc используйте connectedClusters . Для кластеров AKS используйте managedClusters . |
Необязательные параметры для обновления
Наименование параметра | Description |
---|---|
--auto-upgrade-minor-version |
Логическое свойство, указывающее, обновляется ли дополнительная версия расширения автоматически. Значение по умолчанию равно true . Если этот параметр имеет значение true, невозможно задать version параметр, так как версия будет динамически обновлена. Если задано значение false , расширение не будет автоматически обновлено даже для версий исправлений. |
--version |
Версия устанавливаемого расширения (конкретная версия для прикрепления к ней экземпляра расширения). Не указывается, если для параметра auto-upgrade-minor-version задано значение true . |
--configuration-settings |
Параметры, которые можно передать в расширение для управления его функциями. Они передаются в виде пар, разделенных key=value пробелами, после имени параметра. Если этот параметр используется в команде, то --configuration-settings-file не может использоваться в той же команде. Необходимо указать только те параметры, которые нужно обновить. Указанные параметры будут заменены указанными значениями. |
--configuration-settings-file |
Путь к JSON-файлу с key=value парами, используемыми для передачи параметров конфигурации в расширение. Если этот параметр используется в команде, то --configuration-settings не может использоваться в той же команде. |
--configuration-protected-settings |
Параметры, которые не могут быть извлечены с помощью GET вызовов ИЛИ az k8s-extension show команд API. Обычно используется для передачи конфиденциальных параметров. Они передаются в виде пар, разделенных key=value пробелами, после имени параметра. Если этот параметр используется в команде, то --configuration-protected-settings-file не может использоваться в той же команде. При обновлении защищенного параметра необходимо указать все защищенные параметры. Если какие-либо из этих параметров опущены, эти параметры будут считаться устаревшими и удаленными. |
--configuration-protected-settings-file |
Путь к JSON-файлу с key=value парами, используемыми для передачи конфиденциальных параметров в расширение. Если этот параметр используется в команде, то --configuration-protected-settings не может использоваться в той же команде. |
--scope |
Область установки расширения — cluster или namespace . |
--release-train |
Авторы расширений могут публиковать версии в различных поездах выпуска, таких как Stable , Preview и т. д. Если этот параметр не задан явным образом, Stable используется в качестве значения по умолчанию. |
Экземпляр расширения обновления
Как отмечалось ранее, если задано auto-upgrade-minor-version
значение true, расширение будет автоматически обновлено при выпуске новой дополнительной версии. Для большинства сценариев рекомендуется включить автоматическое обновление. Если задано auto-upgrade-minor-version
значение false, необходимо вручную обновить расширение, если требуется более новая версия.
Обновления вручную также необходимы для получения нового основного экземпляра расширения. Вы можете выбрать время обновления, чтобы избежать непредвиденных критических изменений при обновлении основных версий.
Чтобы вручную обновить экземпляр расширения, используйте k8s-extension update
и задайте version
параметр для указания версии.
В этом примере экземпляр расширения Машинное обучение Azure обновляется до версии x.y.z:
az k8s-extension update --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters --name azureml --version x.y.z
Удаление экземпляр расширения
Чтобы удалить экземпляр расширения в кластере, используйте передачу k8s-extension delete
значений для обязательных параметров:
az k8s-extension delete --name azuremonitor-containers --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters
Примечание.
Ресурс Azure, представляющий это расширение, немедленно удаляется. Выпуск Helm в кластере, связанном с этим расширением, удаляется только в том случае, если агенты, работающие в кластере Kubernetes, подключены к сети и могут снова обратиться к службам Azure для получения требуемого состояния.
Следующие шаги
- Ознакомьтесь со ссылкой az k8s-extension CLI для комплексного списка команд и параметров.
- Узнайте больше о том, как расширения работают с кластерами Kubernetes с поддержкой Arc.
- Просмотрите расширения кластера, доступные в настоящее время для Kubernetes с поддержкой Azure Arc.
- Получите справку по устранению неполадок с расширением.