Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server 2019 (15.x)
Important
Кластеры больших данных Microsoft SQL Server 2019 прекращены. Поддержка кластеров больших данных SQL Server 2019 закончилась с 28 февраля 2025 г. Дополнительные сведения см. в записи блога объявлений и параметрах больших данных на платформе Microsoft SQL Server.
В этой статье описывается несколько полезных команд Kubernetes, которые можно использовать для мониторинга и устранения неполадок кластеров больших данных SQL Server 2019. Здесь показано, как просмотреть подробные сведения о модуле pod или других артефактах Kubernetes, расположенных в кластере больших данных. В этой статье также рассматриваются распространенные задачи, такие как копирование файлов в контейнер или из контейнера под управлением одной из служб кластера больших данных SQL Server.
Tip
Для мониторинга состояния компонентов кластеров больших данных можно использовать команды azdata bdc status или встроенные записные книжки для диагностики и устранения неполадок в Azure Data Studio.
Tip
Выполните следующие команды kubectl на клиентском компьютере Windows (cmd или PS) или Linux (bash). Для их выполнения требуется предварительная аутентификация в кластере и наличие контекста кластера, против которого они будут выполняться. Например, для ранее созданного кластера AKS можно загрузить az aks get-credentials --name <aks_cluster_name> --resource-group <azure_resource_group_name> файл конфигурации кластера Kubernetes и задать контекст кластера.
Получение состояния модулей pod
С помощью команды kubectl get pods можно получить статус pod в кластере для всех пространств имен или пространства имен, предназначенного для кластера больших данных. В следующих разделах показаны примеры обоих.
Отображение состояния всех pod в кластере Kubernetes
Выполните следующую команду, чтобы получить все поды и их состояния, включая поды, которые являются частью пространства имен, где созданы поды кластера больших данных SQL Server.
kubectl get pods --all-namespaces
Показать состояние всех pod в кластере больших данных SQL Server
-n Используйте параметр, чтобы указать определенное пространство имен. Обратите внимание, что модули pod кластера больших данных SQL Server создаются в новом пространстве имен, созданном во время загрузки кластера на основе имени кластера, указанного в файле конфигурации развертывания. Имя mssql-clusterпо умолчанию используется здесь.
kubectl get pods -n mssql-cluster
Вы увидите выходные данные, аналогичные следующему списку для работающего кластера больших данных:
PS C:\> kubectl get pods -n mssql-cluster
NAME READY STATUS RESTARTS AGE
appproxy-f2qqt 2/2 Running 0 110m
compute-0-0 3/3 Running 0 110m
control-zlncl 4/4 Running 0 118m
data-0-0 3/3 Running 0 110m
data-0-1 3/3 Running 0 110m
gateway-0 2/2 Running 0 109m
logsdb-0 1/1 Running 0 112m
logsui-jtdnv 1/1 Running 0 112m
master-0 7/7 Running 0 110m
metricsdb-0 1/1 Running 0 112m
metricsdc-shv2f 1/1 Running 0 112m
metricsui-9bcj7 1/1 Running 0 112m
mgmtproxy-x6gcs 2/2 Running 0 112m
nmnode-0-0 1/1 Running 0 110m
storage-0-0 7/7 Running 0 110m
storage-0-1 7/7 Running 0 110m
Note
Во время развертывания модули pod с состояниемContainerCreating всё ещё создаются. Если развертывание зависает по какой-либо причине, это может дать вам представление о том, где может быть проблема. Кроме того, просмотрите столбец READY . В этом разделе рассказывается, сколько контейнеров запущено в модуле pod. Обратите внимание, что развертывание может занять 30 минут или больше в зависимости от конфигурации и сети. Большая часть этого времени тратится на скачивание образов контейнеров для различных компонентов.
Получите сведения о Pod
Выполните следующую команду, чтобы получить подробное описание конкретного pod в формате JSON. Он содержит сведения, такие как текущий узел Kubernetes, на котором размещен модуль pod, контейнеры, работающие в модуле pod, и образ, используемый для загрузки контейнеров. В нем также показаны другие сведения, такие как метки, состояние и сохраняемые тома утверждения, связанные с модулем pod.
kubectl describe pod <pod_name> -n <namespace_name>
В следующем примере показаны сведения о master-0 pod в кластере больших данных с именем mssql-cluster:
kubectl describe pod master-0 -n mssql-cluster
Если произошли какие-либо ошибки, иногда можно увидеть ошибку в последних событиях модуля pod.
Получение журналов Pod
Журналы для контейнеров, работающих в модуле pod, можно получить. Следующая команда извлекает журналы для всех контейнеров, работающих в модуле с именем master-0, и выводит их в файл с именем master-0-pod-logs.txt.
kubectl logs master-0 --all-containers=true -n mssql-cluster > master-0-pod-logs.txt
Получить состояние служб
Выполните следующую команду, чтобы получить сведения о службах кластера больших данных. Эти сведения включают их тип и IP-адреса, связанные с соответствующими службами и портами. Обратите внимание, что службы кластера больших данных SQL Server создаются в новом пространстве имен, созданном во время загрузки кластера на основе имени кластера, указанного в файле конфигурации развертывания.
kubectl get svc -n <namespace_name>
В следующем примере показано состояние служб в кластере больших данных с именем mssql-cluster:
kubectl get svc -n mssql-cluster
Следующие службы поддерживают внешние подключения к кластеру больших данных:
| Service | Description |
|---|---|
| master-svc-external | Предоставляет доступ к главному экземпляру. (EXTERNAL-IP,31433 и пользователь SA ) |
| controller-svc-external | Поддерживает средства и клиентские приложения, управляющие кластером. |
| gateway-svc-external | Предоставляет доступ к шлюзу HDFS/Spark. (EXTERNAL-IP и <AZDATA_USERNAME> пользователь)1 |
| appproxy-svc-external | Поддержка сценариев развертывания приложений. |
1 Начиная с SQL Server 2019 (15.x) CU 5, при развертывании нового кластера с базовой проверкой подлинности все конечные точки, включая шлюз, используют AZDATA_USERNAME и AZDATA_PASSWORD. Конечные точки в кластерах, которые обновлены до CU 5, продолжают использовать root в качестве имени пользователя для подключения к конечной точке шлюза. Это изменение не применяется к развертываниям с помощью проверки подлинности Active Directory. См. учетные данные для доступа к службам через конечную точку шлюза в заметках о выпуске.
Tip
Это способ просмотра служб с kubectl, но также можно использовать azdata bdc endpoint list команду для просмотра этих конечных точек. Дополнительные сведения см. в разделе "Получение конечных точек кластера больших данных".
Получение сведений о службе
Выполните эту команду, чтобы получить подробное описание службы в выходных данных формата JSON. Он будет включать такие сведения, как метки, селектор, IP-адрес, внешний IP-адрес (если служба имеет тип LoadBalancer), порт и т. д.
kubectl describe service <service_name> -n <namespace_name>
В следующем примере извлекаются сведения о внешней службе master-svc-external :
kubectl describe service master-svc-external -n mssql-cluster
Copy files
Если необходимо скопировать файлы из контейнера на локальный компьютер, используйте kubectl cp команду со следующим синтаксисом:
kubectl cp <pod_name>:<source_file_path> -c <container_name> -n <namespace_name> <target_local_file_path>
Аналогичным образом можно скопировать kubectl cp файлы с локального компьютера в определенный контейнер.
kubectl cp <source_local_file_path> <pod_name>:<target_container_path> -c <container_name> -n <namespace_name>
Копирование файлов из контейнера
В следующем примере файлы журналов SQL Server копируются из контейнера ~/temp/sqlserverlogs в путь на локальном компьютере (в этом примере локальный компьютер является клиентом Linux):
kubectl cp master-0:/var/opt/mssql/log -c mssql-server -n mssql-cluster ~/tmp/sqlserverlogs
Копирование файлов в контейнер
В следующем примере файл AdventureWorks2022 копируется с локального компьютера в контейнер мастер-экземпляра SQL Server (mssql-server) в поде master-0. Файл копируется в каталог /tmp в контейнере.
kubectl cp ~/Downloads/AdventureWorks2022.bak master-0:/tmp -c mssql-server -n mssql-cluster
Принудительное удаление модуля pod
Принудительное удаление модуля pod не рекомендуется. Но для тестирования доступности, устойчивости или сохраняемости данных можно удалить pod, чтобы имитировать сбой пода с помощью команды kubectl delete pods.
kubectl delete pods <pod_name> -n <namespace_name> --grace-period=0 --force
В следующем примере удаляется модуль pod пула носителей: storage-0-0
kubectl delete pods storage-0-0 -n mssql-cluster --grace-period=0 --force
Получение IP-адреса pod
Для устранения неполадок может потребоваться получить IP-адрес узла, на котором сейчас запущен модуль pod. Чтобы получить IP-адрес, используйте kubectl get pods команду со следующим синтаксисом:
kubectl get pods <pod_name> -o yaml -n <namespace_name> | grep hostIP
В следующем примере отображается IP-адрес узла, на котором запущен под master-0.
kubectl get pods master-0 -o yaml -n mssql-cluster | grep hostIP
Kubernetes dashboard
Вы можете запустить панель мониторинга Kubernetes для получения дополнительных сведений о кластере. В следующих разделах объясняется, как запустить панель мониторинга для Kubernetes в AKS и начальную загрузку Kubernetes с помощью kubeadm.
Запуск панели мониторинга при запуске кластера в AKS
Чтобы запустить панель мониторинга Kubernetes, выполните следующие действия:
az aks browse --resource-group <azure_resource_group> --name <aks_cluster_name>
Note
Если возникает следующая ошибка: не удается прослушивать порт 8001: все прослушиватели не удалось создать с помощью следующих ошибок: не удается создать прослушиватель: ошибка прослушивания tcp4 127.0.0.1:8001: >привязка: обычно разрешено только одно использование каждого адреса сокета (протокол/сетевой адрес/порт). Не удалось создать прослушиватель: ошибка прослушивания tcp6: адрес [[::1]:8001: отсутствует порт в >адресной ошибке: не удается прослушивать любой из запрошенных портов: [{8001 9090}], убедитесь, что панель мониторинга еще не запущена из другого окна.
При запуске информационной панели в браузере вы можете получать предупреждения о разрешениях из-за включения RBAC по умолчанию в кластерах AKS, а учетная запись службы, которую использует информационная панель, не имеет достаточных разрешений для доступа ко всем ресурсам (например, запрещено использовать pods: пользователь "system:serviceaccount:kube-system:kubernetes-dashboard" не может перечислять pods в пространстве имен "по умолчанию"). Выполните следующую команду, чтобы предоставить необходимые разрешения kubernetes-dashboard, а затем перезапустить панель мониторинга:
kubectl create clusterrolebinding kubernetes-dashboard -n kube-system --clusterrole=cluster-admin --serviceaccount=kube-system:kubernetes-dashboard
Запуск панели мониторинга при загрузке кластера Kubernetes с помощью kubeadm
Подробные инструкции по развертыванию и настройке панели мониторинга в кластере Kubernetes см. в документации по Kubernetes. Чтобы запустить панель мониторинга Kubernetes, выполните следующую команду:
kubectl proxy
Next steps
Дополнительные сведения о кластерах больших данных см. в разделе "Что такое кластеры больших данных SQL Server".