Настройка параметров развертывания для кластерных ресурсов и службConfigure deployment settings for cluster resources and services

Применимо к:Applies to: даSQL Server 2019 (15.x)SQL Server 2019 (15.x)yesSQL Server 2019 (15.x)SQL Server 2019 (15.x)Применимо к:Applies to: даSQL Server 2019 (15.x)SQL Server 2019 (15.x)yesSQL Server 2019 (15.x)SQL Server 2019 (15.x)

Начиная с предопределенного набора профилей конфигурации, встроенных в инструмент управления azdata, можно легко изменять параметры по умолчанию для достижения лучшего соответствия требованиям рабочих нагрузок BDC.Starting from a pre-defined set of configuration profiles that are built into the azdata management tool, you can easily modify the default settings to better suit your BDC workload requirements. Структура файлов конфигурации позволяет детально обновлять параметры для каждой службы в ресурсе.The structure of the configuration files enables you to granularly update settings for each service of the resource.

Просмотрите это 13-минутное видео, в котором представлены общие сведения о конфигурации кластеров больших данных:Watch this 13-minute video for an overview of big data cluster configuration:

Совет

Дополнительные сведения о развертывании высокодоступных служб см. в статьях, посвященных настройке высокой доступности для критически важных компонентов, таких как главный экземпляр SQL Server или узел имен HDFS.Please reference the articles on how to configure high availability for mission critical components like SQL Server master or HDFS name node, for details on how to deploy highly available services.

Можно также задавать конфигурации уровня ресурсов или обновлять конфигурации для всех служб в ресурсе.You can also set resource level configurations or update the configurations for all services in a resource. Ниже приведена сводка по структуре для bdc.json.Here is a summary of the structure for bdc.json:

{
    "apiVersion": "v1",
    "metadata": {
        "kind": "BigDataCluster",
        "name": "mssql-cluster"
    },
    "spec": {
        "resources": {
            "nmnode-0": {...
            },
            "sparkhead": {...
            },
            "zookeeper": {...
            },
            "gateway": {...
            },
            "appproxy": {...
            },
            "master": {...
            },
            "compute-0": {...
            },
            "data-0": {...
            },
            "storage-0": {...
        },
        "services": {
            "sql": {
                "resources": [
                    "master",
                    "compute-0",
                    "data-0",
                    "storage-0"
                ]
            },
            "hdfs": {
                "resources": [
                    "nmnode-0",
                    "zookeeper",
                    "storage-0",
                    "sparkhead"
                ],
                "settings": {...
            },
            "spark": {
                "resources": [
                    "sparkhead",
                    "storage-0"
                ],
                "settings": {...
            }
        }
    }
}

Для обновления конфигураций уровня ресурсов, таких как число экземпляров в пуле, необходимо обновить спецификацию ресурсов. Например, чтобы обновить число экземпляров в пуле вычислений, измените этот раздел в файле конфигурации bdc.json:For updating resource level configurations like instances in a pool, you will update the resource spec. For example, to update the number of instances in the compute pool you will modify this section in bdc.json configuration file:

"resources": {
    ...
    "compute-0": {
        "metadata": {
            "kind": "Pool",
            "name": "default"
        },
        "spec": {
            "type": "Compute",
            "replicas": 4
        }
    }
    ...
}

Аналогичным образом выполняется изменение параметров отдельной службы в определенном ресурсе.Similarly for changing the settings of a single service within a specific resource. Например, если вы хотите изменить параметры памяти Spark только для компонента Spark в пуле носителей, обновите ресурс storage-0, добавив в файл конфигурации bdc.json раздел settings для службы spark.For example, if you want to change the Spark memory settings only for the Spark component in the Storage pool, you will update the storage-0 resource with a settings section for spark service in the bdc.json configuration file.

"resources":{
    ...
     "storage-0": {
        "metadata": {
            "kind": "Pool",
            "name": "default"
        },
        "spec": {
            "type": "Storage",
            "replicas": 2,
            "settings": {
                "spark": {
                    "spark-defaults-conf.spark.driver.memory": "2g",
                    "spark-defaults-conf.spark.driver.cores": "1",
                    "spark-defaults-conf.spark.executor.instances": "3",
                    "spark-defaults-conf.spark.executor.memory": "1536m",
                    "spark-defaults-conf.spark.executor.cores": "1",
                    "yarn-site.yarn.nodemanager.resource.memory-mb": "18432",
                    "yarn-site.yarn.nodemanager.resource.cpu-vcores": "6",
                    "yarn-site.yarn.scheduler.maximum-allocation-mb": "18432",
                    "yarn-site.yarn.scheduler.maximum-allocation-vcores": "6",
                    "yarn-site.yarn.scheduler.capacity.maximum-am-resource-percent": "0.3"
                }
            }
        }
    }
    ...
}

Если вы хотите применить одни и те же конфигурации для службы, связанной с несколькими ресурсами, обновите соответствующие разделы settings в разделе services.If you want to apply same configurations for a service associated with multiple resources, you will update the corresponding settings in the services section. Например, если нужно задать одинаковые параметры для Spark в обоих пулах носителей и пулах Spark, следует обновить раздел settings в разделе службы spark в файле конфигурации bdc.json.For example, if you would like to set same settings for Spark across both storage pool and Spark pools, you will update the settings section in the spark service section in the bdc.json configuration file.

"services": {
    ...
    "spark": {
        "resources": [
            "sparkhead",
            "storage-0"
        ],
        "settings": {
            "spark-defaults-conf.spark.driver.memory": "2g",
            "spark-defaults-conf.spark.driver.cores": "1",
            "spark-defaults-conf.spark.executor.instances": "3",
            "spark-defaults-conf.spark.executor.memory": "1536m",
            "spark-defaults-conf.spark.executor.cores": "1",
            "yarn-site.yarn.nodemanager.resource.memory-mb": "18432",
            "yarn-site.yarn.nodemanager.resource.cpu-vcores": "6",
            "yarn-site.yarn.scheduler.maximum-allocation-mb": "18432",
            "yarn-site.yarn.scheduler.maximum-allocation-vcores": "6",
            "yarn-site.yarn.scheduler.capacity.maximum-am-resource-percent": "0.3"
        }
    }
    ...
}

Чтобы настроить файлы конфигурации развертывания кластера, можно использовать любой редактор формата JSON, например VSCode.To customize your cluster deployment configuration files, you can use any JSON format editor, such as VSCode. Чтобы внести эти изменения в скрипты для автоматизации, используйте команду azdata bdc config.For scripting these edits for automation purposes, use the azdata bdc config command. В этой статье описано, как настроить развертывания кластера больших данных, изменив файлы конфигурации развертывания.This article explains how to configure big data cluster deployments by modifying deployment configuration files. Она содержит примеры изменения конфигурации для различных сценариев.It provides examples for how to change the configuration for different scenarios. Дополнительные сведения об использовании файлов конфигурации используются в развертываниях, см. в руководстве по развертыванию.For more information about how configuration files are used in deployments, see the deployment guidance.

Предварительные требованияPrerequisites

  • Установка azdata.Install azdata.

  • В каждом из примеров в этом разделе предполагается, что вы создали копию одной из стандартных конфигураций.Each of the examples in this section assume that you have created a copy of one of the standard configurations. Дополнительные сведения см. в статье Создание настраиваемой конфигурации.For more information, see Create a custom configuration. Например, следующая команда создает каталог с именем custom-bdc, содержащий два файла конфигурации развертывания JSON — bdc.json и control.json, основанных на конфигурации по умолчанию aks-dev-test:For example, the following command creates a directory called custom-bdc that contains two JSON deployment configuration files, bdc.json and control.json, based on the default aks-dev-test configuration:

    azdata bdc config init --source aks-dev-test --target custom-bdc
    

Изменение тегов реестра, репозитория и образов Docker по умолчаниюChange default Docker registry, repository, and images tag

Во встроенных файлах конфигурации, в частности в control.json, имеется раздел docker, в котором содержатся предварительно заполненные теги реестра, репозитория и образов контейнеров.The built-in configuration files, specifically control.json includes a docker section where container registry, repository, and images tag are pre-populated. По умолчанию образы, необходимые для кластеров больших данных, находятся в реестре контейнеров Майкрософт (mcr.microsoft.com), в репозитории mssql/bdc:By default, images required for big data clusters are in the Microsoft Container Registry (mcr.microsoft.com), in the mssql/bdc repository:

{
    "apiVersion": "v1",
    "metadata": {
        "kind": "Cluster",
        "name": "mssql-cluster"
    },
    "spec": {
        "docker": {
            "registry": "mcr.microsoft.com",
            "repository": "mssql/bdc",
            "imageTag": "2019-GDR1-ubuntu-16.04",
            "imagePullPolicy": "Always"
        },
        ...
    }
}

Перед развертыванием можно настроить параметры docker, изменив их непосредственно в файле конфигурации control.json или с помощью команд azdata bdc config.Before deployment, you can customize the docker settings by either directly editing the control.json configuration file or using azdata bdc config commands. Например, следующие команды обновляют файл конфигурации control.json в каталоге custom-bdc, задавая другие теги <registry>, <repository> и <image_tag>:For example, following commands are updating a custom-bdc control.json configuration file with a different <registry>, <repository> and <image_tag>:

azdata bdc config replace -c custom-bdc/control.json -j "$.spec.docker.registry=<registry>"
azdata bdc config replace -c custom-bdc/control.json -j "$.spec.docker.repository=<repository>"
azdata bdc config replace -c custom-bdc/control.json -j "$.spec.docker.imageTag=<image_tag>"

Совет

Рекомендуется задавать тег образа с указанием конкретной версии и не использовать тег образа latest, так как это может привести к несовпадению версий и как следствие к проблемам с работоспособностью кластера.As a best practice, you must use a version specific image tag and avoid using latest image tag, as this can result in version mismatch that will cause cluster health issues.

Совет

Развертывание кластеров больших данных должно иметь доступ к реестру контейнеров и репозиторию, из которого извлекаются образы контейнеров.Big data clusters deployment must have access to the container registry and repository from which to pull container images. Если ваша среда не имеет доступа к реестру контейнеров Майкрософт по умолчанию, можно выполнить автономную установку, в которой необходимые образы сначала помещаются в частный репозиторий Docker.If your environment does not have access to the default Microsoft Container Registry, you can perform an offline installation where the required images are first placed into a private Docker repository. Дополнительные сведения об автономных установках см. в разделе Выполнение автономного развертывания кластера больших данных SQL Server.For more information about offline installations, see Perform an offline deployment of a SQL Server big data cluster. Обратите внимание, что перед выполнением развертывания необходимо задать переменные среды DOCKER_USERNAME и DOCKER_PASSWORD, чтобы рабочий процесс развертывания имел доступ к вашему частному репозиторию для извлечения из него образов.Note that you must set the DOCKER_USERNAME and DOCKER_PASSWORD environment variables before issuing the deployment to ensure the deployment workflow has acces to your private repository to pull the images from.

Изменение имени кластераChange cluster name

Имя кластера — это имя кластера больших данных и пространство имен Kubernetes, которое будет создано при развертывании.The cluster name is both the name of the big data cluster and the Kubernetes namespace that will be created on deployment. Оно указывается в следующей части файла конфигурации развертывания bdc.json:It is specified in the following portion of the bdc.json deployment configuration file:

"metadata": {
    "kind": "BigDataCluster",
    "name": "mssql-cluster"
},

Следующая команда отправляет пару "ключ — значение" в параметр --json-values, чтобы изменить имя кластера больших данных на test-cluster.The following command sends a key-value pair to the --json-values parameter to change the big data cluster name to test-cluster:

azdata bdc config replace --config-file custom-bdc/bdc.json --json-values "metadata.name=test-cluster"

Важно!

Имя кластера больших данных должно содержать только строчные буквы и цифры, без пробелов.The name of your big data cluster must be only lower case alpha-numeric characters, no spaces. Все артефакты Kubernetes (контейнеры, pod, наборы с отслеживанием состояния, службы) для кластера будут созданы в пространстве имен с именем, соответствующим указанному имени кластера.All Kubernetes artifacts (containers, pods, statefull sets, services) for the cluster will be created in a namespace with same name as the cluster name specified.

Обновление портов конечной точкиUpdate endpoint ports

Конечные точки задаются для контроллера в файле control.json, а для шлюза и главного экземпляра SQL Server — в соответствующих разделах файла bdc.json.Endpoints are defined for the controller in the control.json and for gateway and SQL Server master instance in the corresponding sections in bdc.json. В следующей части файла конфигурации control.json показаны определения конечных точек для контроллера.The following portion of the control.json configuration file shows the endpoint definitions for the controller:

{
  "endpoints": [
    {
      "name": "Controller",
      "serviceType": "LoadBalancer",
      "port": 30080
    },
    {
      "name": "ServiceProxy",
      "serviceType": "LoadBalancer",
      "port": 30777
    }
  ]
}

В следующем примере с помощью встроенного JSON изменяется порт для конечной точки controller.The following example uses inline JSON to change the port for the controller endpoint:

azdata bdc config replace --config-file custom-bdc/control.json --json-values "$.spec.endpoints[?(@.name==""Controller"")].port=30000"

Настройка масштабаConfigure scale

Конфигурации каждого ресурса, такого как пул носителей, задаются в файле конфигурации bdc.json.The configurations of each resource, such as the storage pool, is defined in the bdc.json configuration file. Например, в следующей части bdc.json показано определение ресурса storage-0.For example, the following portion of the bdc.json shows a storage-0 resource definition:

"storage-0": {
    "metadata": {
        "kind": "Pool",
        "name": "default"
    },
    "spec": {
        "type": "Storage",
        "replicas": 2,
        "settings": {
            "spark": {
                "spark-defaults-conf.spark.driver.memory": "2g",
                "spark-defaults-conf.spark.driver.cores": "1",
                "spark-defaults-conf.spark.executor.instances": "3",
                "spark-defaults-conf.spark.executor.memory": "1536m",
                "spark-defaults-conf.spark.executor.cores": "1",
                "yarn-site.yarn.nodemanager.resource.memory-mb": "18432",
                "yarn-site.yarn.nodemanager.resource.cpu-vcores": "6",
                "yarn-site.yarn.scheduler.maximum-allocation-mb": "18432",
                "yarn-site.yarn.scheduler.maximum-allocation-vcores": "6",
                "yarn-site.yarn.scheduler.capacity.maximum-am-resource-percent": "0.3"
            }
        }
    }
}

Можно настроить несколько экземпляров пула носителей, вычислений или данных, изменив значение replicas для каждого пула.You can configure the number of instances in a storage, compute and/or data pool by modifying the replicas value for each pool. В следующем примере с помощью встроенного JSON изменяются эти значения для пулов носителей вычислений и данных на 10, 4 и 4 соответственно.The following example uses inline JSON to change these values for the storage, compute and data pools to 10, 4 and 4 respectively:

azdata bdc config replace --config-file custom-bdc/bdc.json --json-values "$.spec.resources.storage-0.spec.replicas=10"
azdata bdc config replace --config-file custom-bdc/bdc.json --json-values "$.spec.resources.compute-0.spec.replicas=4"
azdata bdc config replace --config-file custom-bdc/bdc.json --json-values "$.spec.resources.data-0.spec.replicas=4"

Примечание

Максимальное число экземпляров, допустимое для пулов вычислений и данных, составляет 8 для каждого.The maximum number of instances validated for compute and data pools is 8 each. Это ограничение не применяется во время развертывания, однако не рекомендуется настраивать более высокие значения в рабочих развертываниях.There is no enforcement of this limit at deployment time, but we do not recommend configuring a higher scale in production deployments.

Настройка хранилищаConfigure storage

Вы также может изменить характеристики и класс хранилища, используемые для каждого пула.You can also change the storage class and characteristics that are used for each pool. В следующем примере пулам носителей и данных назначается пользовательский класс хранения, а также изменяется размер утверждения постоянного тома для хранения данных на 500 ГБ для HDFS (пула хранения) и на 100 ГБ для пула данных.The following example assigns a custom storage class to the storage and data pools and updates the size of the persistent volume claim for storing data to 500 Gb for HDFS (storage pool) and 100 Gb for data pool.

Совет

Дополнительные сведения о конфигурации хранилища см. в статье Сохраняемость данных при использовании кластера больших данных SQL Server в Kubernetes.For more information about storage configuration, see Data persistence with SQL Server big data cluster on Kubernetes.

Сначала создайте файл patch.json, как описано ниже, включающий раздел storage в дополнение к type и replicas.First create a patch.json file as below that includes the new storage section, in addition to type and replicas

{
  "patch": [
    {
      "op": "replace",
      "path": "spec.resources.storage-0.spec",
      "value": {
        "type": "Storage",
        "replicas": 2,
        "storage": {
          "data": {
            "size": "500Gi",
            "className": "myHDFSStorageClass",
            "accessMode": "ReadWriteOnce"
          },
          "logs": {
            "size": "32Gi",
            "className": "myHDFSStorageClass",
            "accessMode": "ReadWriteOnce"
          }
        }
      }
    },
    {
      "op": "replace",
      "path": "spec.resources.data-0.spec",
      "value": {
        "type": "Data",
        "replicas": 2,
        "storage": {
          "data": {
            "size": "100Gi",
            "className": "myDataStorageClass",
            "accessMode": "ReadWriteOnce"
          },
          "logs": {
            "size": "32Gi",
            "className": "myDataStorageClass",
            "accessMode": "ReadWriteOnce"
          }
        }
      }
    }
  ]
}

Затем можно использовать команду azdata bdc config patch, чтобы обновить файл конфигурации bdc.json.You can then use the azdata bdc config patch command to update the bdc.json configuration file.

azdata bdc config patch --config-file custom-bdc/bdc.json --patch ./patch.json

Примечание

В файле конфигурации на основе kubeadm-dev-test отсутствует определение хранилища для каждого пула, но при необходимости его можно добавить с помощью приведенной выше процедуры.A configuration file based on kubeadm-dev-test does not have a storage definition for each pool, but you can use above process to added if needed.

Настройка пула носителей без SparkConfigure storage pool without spark

Кроме того, можно настроить пулы носителей для работы без Spark и создать отдельный пул Spark.You can also configure the storage pools to run without spark and create a separate spark pool. Такая конфигурация позволяет масштабировать вычислительные мощности Spark независимо от хранилища.This configuration enables you to scale spark compute power independent of storage. О том, как настроить пул Spark, см. в разделе Создание пула Spark этой статьи.To see how to configure the spark pool, see the Create a spark pool section in this article.

Примечание

Развертывание кластера больших данных без Spark не поддерживается.Deploying a big data cluster without Spark is not supported. Поэтому вы должны либо задать для includeSpark значение true, либо создать отдельный пул Spark по крайней мере с одним экземпляром.So you must either have includeSpark set to true or you must create a separate spark pool with at least one instance. Также можно одновременно запустить Spark в пуле носителей (includeSpark имеет значение true) и иметь отдельный пул Spark.You can also have Spark running both in storage pool (includeSpark is true) and have a separate Spark pool.

По умолчанию параметр includeSpark для ресурса пула носителей имеет значение true, поэтому для внесения изменений необходимо добавить поле includeSpark в конфигурацию хранилища.By default, the includeSpark setting for the storage pool resource is set to true, so you must edit the includeSpark field into the storage configuration in order to make changes. Следующая команда демонстрирует, как изменить это значение с помощью встроенного JSON.The following command shows how to edit this value using inline json.

azdata bdc config replace --config-file custom-bdc/bdc.json --json-values "$.spec.resources.storage-0.spec.settings.spark.includeSpark=false"

Создание пула SparkCreate a spark pool

Пул Spark можно создать в дополнение к экземплярам Spark, работающим в пуле носителей, или вместо них.You can create a Spark pool in addition, or instead of Spark instances running in the storage pool. В следующем примере показано, как создать пул Spark с двумя экземплярами путем исправления файла конфигурации bdc.json.Following example shows how to create a spark pool with two instances by patching the bdc.json configuration file.

Сначала создайте файл spark-pool-patch.json, как показано ниже.First, create a spark-pool-patch.json file as below:

{
    "patch": [
        {
            "op": "add",
            "path": "spec.resources.spark-0",
            "value": {
                "metadata": {
                    "kind": "Pool",
                    "name": "default"
                },
                "spec": {
                    "type": "Spark",
                    "replicas": 2
                }
            }
        },
        {
            "op": "add",
            "path": "spec.services.spark.resources/-",
            "value": "spark-0"
        },
        {
            "op": "add",
            "path": "spec.services.hdfs.resources/-",
            "value": "spark-0"
        }
    ]
}

Затем выполните следующую команду azdata bdc config patch:Then run the azdata bdc config patch command:

azdata bdc config patch -c custom-bdc/bdc.json -p spark-pool-patch.json

Настройка размещения pod с помощью меток KubernetesConfigure pod placement using Kubernetes labels

Вы можете управлять размещением pod на узлах Kubernetes, имеющих определенные ресурсы для удовлетворения различных типов требований к рабочей нагрузке.You can control pod placement on Kubernetes nodes that have specific resources to accommodate various types of workload requirements. С помощью меток Kubernetes можно задать, какие узлы в кластере Kubernetes будут использоваться для развертывания ресурсов кластера больших данных, а также ограничить круг узлов, используемых для конкретных ресурсов.Using Kubernetes labels, you can customize which are the nodes in your Kubernetes cluster will be used for deploying big data cluster resources, but also restrict which nodes are used for specific resources. Например, может потребоваться, чтобы объекты pod ресурса пула носителей размещались на узлах с увеличенным объемом хранилища, а главные экземпляры SQL Server — на узлах с увеличенными ресурсами ЦП и памяти.For example, you might want to ensure the storage pool resource pods are placed on nodes with more storage, while SQL Server master instances are placed on nodes that have higher CPU and memory resources. В этом случае сначала вы создадите разнородный кластер Kubernetes с различными типами оборудования, а затем назначите метки узлов соответствующим образом.In this case, you will first build a heterogeneous Kubernetes cluster with different types of hardware and then assign node labels accordingly. Во время развертывания кластера больших данных можно задать одинаковые метки на уровне кластера, чтобы указать, какие узлы используются для кластера больших данных, с помощью атрибута clusterLabel в файле control.json.At the time of deploying big data cluster, you can specify same labels at cluster level to indicate which nodes are used for big data cluster using the clusterLabel attribute in the control.json file. Затем для размещения на уровне пула будут использоваться разные метки.Then, different labels will be used for pool level placement. Эти метки можно указать в файлах конфигурации развертывания кластера больших данных с помощью атрибута nodeLabel.These labels can be specified in the big data cluster deployment configuration files using nodeLabel attribute. Kubernetes назначает объекты pod на узлы, соответствующие заданным меткам.Kubernetes assigns the pods on nodes that match the specified labels. Конкретные ключи меток, которые необходимо добавить к узлам в кластере Kubernetes: mssql-cluster (чтобы указать узлы, используемые для кластера больших данных) и mssql-resource (чтобы указать конкретные узлы, на которых размещаются объекты pod, для различных ресурсов).The specific label keys that needs to be added to the nodes in the kubernetes cluster are mssql-cluster (for indicating which nodes are used for big data cluster) and mssql-resource (to indicate which specific nodes the pods are placed on for various resources). В качестве значений этих меток можно задать любые выбранные вами строки.The values of these labels can be any string that you choose.

Примечание

В силу особенностей pod, которые выполняют сбор метрик на уровне узла, pod metricsdc развертываются на всех узлах с меткой mssql-cluster, и к этим pod метка mssql-resource относиться не будет.Due to the nature of the pods that do node level metrics collection, metricsdc pods are deployed on all nodes with the mssql-cluster label, and the mssql-resource will not apply to these pods.

В следующем примере показано, как изменить пользовательский файл конфигурации, чтобы включить метку узла bdc для всего кластера больших данных, метку bdc-master для размещения объектов pod главного экземпляра SQL Server на определенном узле, метку bdc-storage-pool для ресурсов пула носителей, метку bdc-compute-pool для объектов pod пула вычислений и пула данных, а также метку bdc-shared для остальных ресурсов.The following example shows how to edit a custom configuration file to include a node label bdc for the entire big data cluster, a label bdc-master for placing SQL Server master instance pods on a specific node, bdc-storage-pool for storage pool resources, bdc-compute-pool for compute pool and data pool pods, and bdc-shared for rest of the resources.

Сначала включите метки узлов Kubernetes:First label the Kubernetes nodes:

kubectl label node <kubernetesNodeName1> mssql-cluster=bdc mssql-resource=bdc-shared --overwrite=true
kubectl label node <kubernetesNodeName2> mssql-cluster=bdc mssql-resource=bdc-master --overwrite=true
kubectl label node <kubernetesNodeName3> mssql-cluster=bdc mssql-resource=bdc-compute-pool --overwrite=true
kubectl label node <kubernetesNodeName4> mssql-cluster=bdc mssql-resource=bdc-compute-pool --overwrite=true
kubectl label node <kubernetesNodeName5> mssql-cluster=bdc mssql-resource=bdc-storage-pool --overwrite=true
kubectl label node <kubernetesNodeName6> mssql-cluster=bdc mssql-resource=bdc-storage-pool --overwrite=true
kubectl label node <kubernetesNodeName7> mssql-cluster=bdc mssql-resource=bdc-storage-pool --overwrite=true
kubectl label node <kubernetesNodeName8> mssql-cluster=bdc mssql-resource=bdc-storage-pool --overwrite=true

Затем обновите файлы конфигурации развертывания кластера, чтобы включить значения меток.Then update the cluster deployment configuration files to include the label values. В этом примере предполагается, что файлы конфигурации настраиваются в профиле custom-bdc.This example assumes that you are customizing configuration files in a custom-bdc profile. По умолчанию во встроенных конфигурациях отсутствуют ключи nodeLabel и clusterLabel, поэтому необходимо либо изменить пользовательский файл конфигурации вручную, либо внести нужные изменения с помощью команд azdata bdc config add.By default, there are no nodeLabel and clusterLabel keys in the built-in configurations so you will need to either edit a custom configuration file manually or use the azdata bdc config add commands to make the necessary edits.

azdata bdc config add -c custom-bdc/control.json -j "$.spec.clusterLabel=bdc"
azdata bdc config add -c custom-bdc/control.json -j "$.spec.nodeLabel=bdc-shared"

azdata bdc config add -c custom-bdc/bdc.json -j "$.spec.resources.master.spec.nodeLabel=bdc-master"
azdata bdc config add -c custom-bdc/bdc.json -j "$.spec.resources.compute-0.spec.nodeLabel=bdc-compute-pool"
azdata bdc config add -c custom-bdc/bdc.json -j "$.spec.resources.data-0.spec.nodeLabel=bdc-compute-pool"
azdata bdc config add -c custom-bdc/bdc.json -j "$.spec.resources.storage-0.spec.nodeLabel=bdc-storage-pool"

# below can be omitted in which case we will take the node label default from the control.json
azdata bdc config add -c custom-bdc/bdc.json -j "$.spec.resources.nmnode-0.spec.nodeLabel=bdc-shared"
azdata bdc config add -c custom-bdc/bdc.json -j "$.spec.resources.sparkhead.spec.nodeLabel=bdc-shared"
azdata bdc config add -c custom-bdc/bdc.json -j "$.spec.resources.zookeeper.spec.nodeLabel=bdc-shared"
azdata bdc config add -c custom-bdc/bdc.json -j "$.spec.resources.gateway.spec.nodeLabel=bdc-shared"
azdata bdc config add -c custom-bdc/bdc.json -j "$.spec.resources.appproxy.spec.nodeLabel=bdc-shared"

Примечание

Рекомендуется избегать предоставления главному узлу Kubernetes любой из указанных выше ролей BDC.Best practice avoids giving the Kubernetes master any of the above BDC roles. Если вы все равно планируете назначить эти роли главному узлу Kubernetes, потребуется удалить его отметку master:NoSchedule.If you plan on assigning these roles to the Kubernetes master node anyway, you'll need to remove its master:NoSchedule taint. Имейте в виду, что это может привести к перегрузке главного узла и препятствовать осуществлению им управления Kubernetes в больших кластерах.Be aware that this could overload the master node and inhibit its ability to perform its Kubernetes management duties on larger clusters. В общем случае в любом развертывании можно наблюдать, что для главного узла запланированы некоторые объекты pod: они уже допускают отметку master:NoSchedule и в основном используются для помощи при управлении кластером.It's normal to see some pods scheduled to the master on any deployment: they already tolerate the master:NoSchedule taint, and they're mostly used to help manage the cluster.

Другие настройки с использованием файлов исправлений JSONOther customizations using JSON patch files

Файлы исправлений JSON настраивают несколько параметров одновременно.JSON patch files configure multiple settings at once. Дополнительные сведения об исправлениях JSON см. в статьях Исправления JSON в Python и JSONPath Online Evaluator.For more information about JSON patches, see JSON Patches in Python and the JSONPath Online Evaluator.

Следующие файлы patch.json выполняют следующие изменения.The following patch.json files perform the following changes:

  • Обновление порта отдельной конечной точки в control.json.Update the port of single endpoint in control.json.
{
  "patch": [
    {
      "op": "replace",
      "path": "$.spec.endpoints[?(@.name=='Controller')].port",
      "value": 30000
    }
  ]
}
  • Обновление всех конечных точек (port и serviceType) в control.json.Update all endpoints (port and serviceType) in control.json.
{
  "patch": [
    {
      "op": "replace",
      "path": "spec.endpoints",
      "value": [
        {
          "serviceType": "LoadBalancer",
          "port": 30001,
          "name": "Controller"
        },
        {
          "serviceType": "LoadBalancer",
          "port": 30778,
          "name": "ServiceProxy"
        }
      ]
    }
  ]
}
  • Обновление параметров хранения контроллера в control.json.Update the controller storage settings in control.json. Эти параметры применимы ко всем компонентам кластера, если только они не переопределены на уровне пула.These settings are applicable to all cluster components, unless overridden at pool level.
{
  "patch": [
    {
      "op": "replace",
      "path": "spec.storage",
      "value": {
        "data": {
          "className": "managed-premium",
          "accessMode": "ReadWriteOnce",
          "size": "100Gi"
        },
        "logs": {
          "className": "managed-premium",
          "accessMode": "ReadWriteOnce",
          "size": "32Gi"
        }
      }
    }
  ]
}
  • Обновление имени класса хранения в control.json.Update the storage class name in control.json.
{
  "patch": [
    {
      "op": "replace",
      "path": "spec.storage.data.className",
      "value": "managed-premium"
    }
  ]
}
  • Обновление параметров хранения для пула носителей в bdc.json.Update pool storage settings for storage pool in bdc.json.
{
  "patch": [
    {
      "op": "replace",
      "path": "spec.resources.storage-0.spec",
      "value": {
        "type": "Storage",
        "replicas": 2,
        "storage": {
          "data": {
            "size": "100Gi",
            "className": "myStorageClass",
            "accessMode": "ReadWriteOnce"
          },
          "logs": {
            "size": "32Gi",
            "className": "myStorageClass",
            "accessMode": "ReadWriteOnce"
          }
        }
      }
    }
  ]
}
  • Обновление параметров Spark для пула носителей в bdc.json.Update Spark settings for storage pool in bdc.json.
{
  "patch": [
    {
      "op": "replace",
      "path": "spec.services.spark.settings",
      "value": {
            "spark-defaults-conf.spark.driver.memory": "2g",
            "spark-defaults-conf.spark.driver.cores": "1",
            "spark-defaults-conf.spark.executor.instances": "3",
            "spark-defaults-conf.spark.executor.memory": "1536m",
            "spark-defaults-conf.spark.executor.cores": "1",
            "yarn-site.yarn.nodemanager.resource.memory-mb": "18432",
            "yarn-site.yarn.nodemanager.resource.cpu-vcores": "6",
            "yarn-site.yarn.scheduler.maximum-allocation-mb": "18432",
            "yarn-site.yarn.scheduler.maximum-allocation-vcores": "6",
            "yarn-site.yarn.scheduler.capacity.maximum-am-resource-percent": "0.3"
      }
    }
  ]
}

Совет

Дополнительные сведения о структуре и способах изменения файла конфигурации развертывания см. в справочнике по файлу конфигурации развертывания для кластеров больших данных.For more information about the structure and options for changing a deployment configuration file, see Deployment configuration file reference for big data clusters.

Используйте команды azdata bdc config, чтобы применить эти изменения в файле исправления JSON.Use azdata bdc config commands to apply the changes in the JSON patch file. В следующем примере файл patch.json применяется к целевому файлу конфигурации развертывания custom-bdc/bdc.json.The following example applies the patch.json file to a target deployment configuration file custom-bdc/bdc.json.

azdata bdc config patch --config-file custom-bdc/bdc.json --patch-file ./patch.json

Отключение запуска ElasticSearch в привилегированном режимеDisable ElasticSearch to run in privileged mode

По умолчанию контейнер ElasticSearch запускается в привилегированном режиме в кластере больших данных.By default, ElasticSearch container runs in privilege mode in big data cluster. Этот параметр гарантирует, что во время инициализации контейнер будет иметь достаточные разрешения для обновления параметра на узле, который требуется, когда ElasticSearch обрабатывает большее количество журналов.This setting ensures that at container initialization time, the container has enough permissions to update a setting on the host required when ElasticSearch processes higher amount of logs. Дополнительные сведения по этому вопросу см. в этой статье.You can find more information about this topic in this article.

Чтобы отключить контейнер, запускающий ElasticSearch в привилегированном режиме, необходимо обновить раздел settings в файле control.json и указать для vm.max_map_count значение -1.For disabling the container that runs ElasticSearch to run in privileged mode, you must updated the settings section in the control.json and specify the value of vm.max_map_count to -1. Ниже приведен пример, как мог бы выглядеть этот раздел.Here is a sample of how this section would look like:

{
    "apiVersion": "v1",
    "metadata": {...},
    "spec": {
        "docker": {...},
        "storage": {...},
        "endpoints": [...],
        "settings": {
            "ElasticSearch": {
                "vm.max_map_count": "-1"
            }
        }
    }
}

Можно вручную изменить файл control.json и добавить в spec приведенный выше раздел или создать файл исправления elasticsearch-patch.json, подобный показанному ниже, и с помощью CLI azdata исправить файл control.json.You can manually edit the control.json and add the above section to the spec, or you can create a patch file elasticsearch-patch.json like below and use azdata CLI to patch the control.json file:

{
  "patch": [
    {
      "op": "add",
      "path": "spec.settings",
      "value": {
            "ElasticSearch": {
                "vm.max_map_count": "-1"
        }
      }
    }
  ]
}

Чтобы исправить файл конфигурации, выполните следующую команду:Run this command to patch the configuration file:

azdata bdc config patch --config-file custom-bdc/control.json --patch-file elasticsearch-patch.json

Важно!

Рекомендуется вручную обновить параметр max_map_count на каждом узле в кластере Kubernetes в соответствии с инструкциями из этой статьи.We recommend as a best practice to manually update the max_map_count setting manually on each host in the Kubernetes cluster as per instructions in this article.

Включение и отключение сбора метрик для модулей pod и узловTurn pods and nodes metrics colelction on/off

В SQL Server 2019 с накопительным пакетом обновления 5 (CU5) появились два параметра для управления сбором метрик для модулей pod и узлов.SQL Server 2019 CU5 enabled two feature switches to control the collection of pods and nodes metrics. Если вы используете различные решения для мониторинга инфраструктуры Kubernetes, вы можете отключить встроенный сбор метрик для модулей pod и узлов, присвоив параметрам allowNodeMetricsCollection и allowPodMetricsCollection значения false в файле конфигурации развертывания control.json.In case you are using different solutions for monitoring your Kubernetes infrastructure, you can turn off the built-in metrics collection for pods and host nodes by setting allowNodeMetricsCollection and allowPodMetricsCollection to false in control.json deployment configuration file. Для сред OpenShift для этих параметров по умолчанию задано значение false во встроенных профилях развертывания, так как сбор метрик модулей pod и узлов требует привилегированных возможностей.For OpenShift environments, these settings are set to false by default in the built-in deployment profiles, since collecting pod and node metrics requires privileged capabilities. Выполните следующую команду, чтобы обновить значения этих параметров в пользовательском файле конфигурации с помощью CLI azdata.Run this command to update the values of these settings in your custom configuration file using azdata CLI:

 azdata bdc config replace -c custom-bdc/control.json -j "$.security.allowNodeMetricsCollection=false"
 azdata bdc config replace -c custom-bdc/control.json -j "$.security.allowPodMetricsCollection=false"

Дальнейшие действияNext steps

Дополнительные сведения об использовании файлов конфигурации в развертываниях кластеров больших данных см. в статье Развертывание Кластеры больших данных SQL ServerSQL Server Big Data Clusters в Kubernetes.For more information about using configuration files in big data cluster deployments, see How to deploy Кластеры больших данных SQL ServerSQL Server Big Data Clusters on Kubernetes.