Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье вы подготавливаете основные ресурсы Azure, необходимые для деплоймента AKS, готового к использованию в производственной среде. Эта статья проверяет доступ к Azure, создает группу ресурсов, устанавливает реестр контейнеров Azure (ACR), развертывает базовый кластер AKS, при необходимости добавляет дополнительный пул узлов для рабочих нагрузок пользователей и предоставляет кластеру разрешение на извлечение из ACR. Все команды используют параметризованные переменные среды, чтобы рабочий процесс оставался повторяемым в регионах и подписках.
Предпосылки
Перед выполнением руководства вам потребуется следующее средство и доступ к учетной записи. Убедитесь, что вы прошли проверку подлинности в Azure с помощью az login и имеют достаточные разрешения для создания групп ресурсов, реестров контейнеров и кластеров AKS.
- Подписка Azure с квотой для выбранного региона
- Azure CLI (
az) с правами владельца или участника - Kubectl, настроенный локально для доступа к кластеру
- jq (необязательно) для анализа выходных данных JSON во время проверки
Выполните следующие команды, чтобы убедиться, что у вас есть все необходимые средства интерфейса командной строки и доступ к Azure:
command -v az >/dev/null || echo "Azure CLI missing"
command -v kubectl >/dev/null || echo "kubectl missing"
command -v jq >/dev/null || echo "jq missing (optional)"
Настройка среды
Здесь вы определяете все переменные среды, используемые на этапах подготовки. Метка времени HASH сохраняет уникальность имён ресурсов во время повторяющихся выполнений. По умолчанию кластер и реестр настроены на минимальные требования для доказательства концепции, но их можно настроить при необходимости.
Следующие команды устанавливают область Azure, размеры AKS и соглашения об именовании ACR для последовательности развертывания независимо от дочерних рабочих нагрузок.
export HASH="${HASH:-$(date -u +"%y%m%d%H%M")}" # YYMMDDHHMM stamp
# Azure scope and regional placement
export LOCATION="${LOCATION:-eastus2}"
export SUBSCRIPTION_ID="${SUBSCRIPTION_ID:-$(az account show --query id -o tsv)}"
export RESOURCE_GROUP="${RESOURCE_GROUP:-rg_aks_${HASH}}"
# AKS cluster naming and version control
# Hyphen required because AKS cluster names cannot include underscores
export AKS_CLUSTER_NAME="${AKS_CLUSTER_NAME:-aks-openwebsearch-${HASH}}"
export AKS_VERSION="${AKS_VERSION:-}" # Optional Kubernetes version override
# Node pool sizing
export AKS_SYSTEM_NODE_COUNT="${AKS_SYSTEM_NODE_COUNT:-1}"
export AKS_USER_NODE_COUNT="${AKS_USER_NODE_COUNT:-1}"
export AKS_NODE_VM_SIZE="${AKS_NODE_VM_SIZE:-Standard_D4s_v5}"
export AKS_SYSTEM_NODEPOOL_NAME="${AKS_SYSTEM_NODEPOOL_NAME:-system}"
export AKS_USER_NODEPOOL_NAME="${AKS_USER_NODEPOOL_NAME:-user}"
# ACR configuration
export ACR_NAME="${ACR_NAME:-acrwebsearch${HASH}}"
export ACR_LOGIN_SERVER="${ACR_LOGIN_SERVER:-${ACR_NAME}.azurecr.io}"
Проверка значений переменных среды
Просмотрите эффективную конфигурацию перед созданием ресурсов. Повторно запустите блок после любых настроек, чтобы убедиться, что активные значения правильны для целевой подписки и региона.
Используйте следующие команды, чтобы закрепить активные параметры для проверки именования, изменения размера и региональных вариантов.
: "${HASH:=$(date -u +"%y%m%d%H%M")}" # Ensure HASH exists
VARS=(
HASH
LOCATION
SUBSCRIPTION_ID
RESOURCE_GROUP
AKS_CLUSTER_NAME
AKS_VERSION
AKS_SYSTEM_NODE_COUNT
AKS_USER_NODE_COUNT
AKS_NODE_VM_SIZE
AKS_SYSTEM_NODEPOOL_NAME
AKS_USER_NODEPOOL_NAME
ACR_NAME
ACR_LOGIN_SERVER
)
for v in "${VARS[@]}"; do
printf "%s=%s\n" "$v" "${!v}"
done
Этапы
Последовательно выполните каждый шаг. Каждый подраздел включает назначение, команды и сводку для подтверждения ожидаемых результатов.
Проверка контекста подписки Azure
Проверьте активную подписку Azure и убедитесь, что поставщики ресурсов, необходимые для операций AKS и ACR, зарегистрированы.
az account show --query id -o tsv
az provider register --namespace Microsoft.ContainerService
az provider register --namespace Microsoft.ContainerRegistry
Создайте группу ресурсов
Создайте выделенную группу ресурсов для изоляции кластера AKS, реестра и сопутствующей инфраструктуры для ваших рабочих нагрузок.
az group create \
--name "${RESOURCE_GROUP}" \
--location "${LOCATION}" \
--output table
Подготовка реестра контейнеров Azure
Создайте реестр контейнеров Azure для хранения образов контейнеров и выполните проверку подлинности локальной управляющей программы Docker для отправки образов.
az acr create \
--name "${ACR_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--location "${LOCATION}" \
--sku Basic \
--output table
az acr login --name "${ACR_NAME}"
Создание кластера AKS
Разверните кластер AKS для размещения рабочих нагрузок. Предотвращение повторного использования существующего имени кластера путем проверки перед созданием.
if az aks show \
--name "${AKS_CLUSTER_NAME}" \
--resource-group "${RESOURCE_GROUP}" >/dev/null 2>&1; then
echo "AKS cluster ${AKS_CLUSTER_NAME} already exists in ${RESOURCE_GROUP}";
echo "Skip creation or provide a new AKS_CLUSTER_NAME.";
else
az aks create \
--name "${AKS_CLUSTER_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--location "${LOCATION}" \
--generate-ssh-keys \
--node-count "${AKS_SYSTEM_NODE_COUNT}" \
--nodepool-name "${AKS_SYSTEM_NODEPOOL_NAME}" \
--node-vm-size "${AKS_NODE_VM_SIZE}" \
${AKS_VERSION:+--kubernetes-version "${AKS_VERSION}"} \
--output table
fi
Добавление необязательного пула узлов пользователя
Подготовьте дополнительный пул узлов при запросе. Команда добавления выполняется асинхронно, чтобы избежать тайм-аутов интерфейса командной строки; команда ожидания отслеживает процесс выполнения в Azure. Скрипт сначала проверяет, существует ли пул, чтобы предотвратить ошибки повторяющихся названий.
if [ "${AKS_USER_NODE_COUNT}" -gt 0 ]; then
if az aks nodepool show \
--cluster-name "${AKS_CLUSTER_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--name "${AKS_USER_NODEPOOL_NAME}" >/dev/null 2>&1; then
echo "Node pool ${AKS_USER_NODEPOOL_NAME} already exists; skipping add.";
else
az aks nodepool add \
--cluster-name "${AKS_CLUSTER_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--name "${AKS_USER_NODEPOOL_NAME}" \
--node-count "${AKS_USER_NODE_COUNT}" \
--node-vm-size "${AKS_NODE_VM_SIZE}" \
--no-wait
az aks nodepool wait \
--cluster-name "${AKS_CLUSTER_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--name "${AKS_USER_NODEPOOL_NAME}" \
--created
fi
fi
Получение учетных данных кластера
Объедините kubeconfig AKS с локальным контекстом и убедитесь, что все узлы доступны для подключения.
az aks get-credentials \
--name "${AKS_CLUSTER_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--overwrite-existing
kubectl get nodes -o wide
Присоединение ACR к кластеру AKS
Предоставьте кластеру AKS разрешение на извлечение образов из подготовленного ACR, чтобы будущие развертывания могли получить доступ к образам контейнеров.
az aks update \
--name "${AKS_CLUSTER_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--attach-acr "${ACR_NAME}" \
--output table
Проверка
Убедитесь, что кластер AKS существует и отвечает на базовые kubectl запросы, прежде чем продолжить выполнение подчиненных шагов развертывания. Сначала убедитесь, что кластер AKS существует.
if ! az aks show \
--name "${AKS_CLUSTER_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--query "{name:name,provisioningState:provisioningState,location:location}" \
--output table; then
echo "AKS cluster '${AKS_CLUSTER_NAME}' not found in resource group '${RESOURCE_GROUP}'."
else
echo "AKS cluster '${AKS_CLUSTER_NAME}' exists in resource group '${RESOURCE_GROUP}'."
fi
Если кластер AKS создан, вы увидите следующее:
AKS cluster ${AKS_CLUSTER_NAME} exists in resource group ${RESOURCE_GROUP}.
Затем проверьте kubectl правильность настройки:
kubectl cluster-info
Эта команда выводит состояние текущего кластера, например:
Kubernetes control plane is running at ...
CoreDNS is running at https://...
Metrics-server is running at https://...
Наконец, убедитесь, что доступны как системные, так и пользовательские узлы:
kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.labels.agentpool}{"\n"}{end}' |
sort |
uniq -c
Это выведет количество узлов, примерно так:
1 system
1 user
Сводка: Подтверждено, что кластер AKS присутствует, работоспособен и доступен через kubectl в текущем контексте.
Сводка
Группа ресурсов, реестр контейнеров, кластер AKS, необязательный пул узлов и присоединение реестра проверяются, что оставляет кластер готовым к любым контейнерным рабочим нагрузкам.
Дальнейшие шаги
- Продолжайте с
docs/OpenWebSearch_On_AKS.mdдля развертывания KMCP и сервера MCP. - Настройка назначений ролей или политик сети, относящихся к вашей системе безопасности
- Интегрируйте Azure Monitor или Log Analytics для оперативной видимости
- Выполнение команд очистки инфраструктуры после эксперимента для управления затратами