Настройка Kubernetes на нескольких компьютерах для развертываний кластера больших данных SQL Server

Область применения: SQL Server 2019 (15.x)

Важно!

Поддержка надстройки "Кластеры больших данных" Microsoft SQL Server 2019 будет прекращена. Мы прекратим поддержку Кластеров больших данных SQL Server 2019 28 февраля 2025 г. Все существующие пользователи SQL Server 2019 с Software Assurance будут полностью поддерживаться на платформе, а программное обеспечение будет продолжать поддерживаться через SQL Server накопительных обновлений до этого времени. Дополнительные сведения см. в записи блога объявлений и в статье о параметрах больших данных на платформе Microsoft SQL Server.

Эта статья содержит пример использования kubeadm для настройки Kubernetes на нескольких компьютерах для развертываний Кластеры больших данных SQL Server. В этом примере целевым объектом являются несколько компьютеров с Ubuntu 16.04 или 18.04 LTS (физических или виртуальных). При развертывании на другой платформе Linux нужно изменить некоторые команды в соответствии с вашей системой.

Совет

Примеры скриптов для настройки Kubernetes см. в статье Создание кластера Kubernetes с использованием Kubeadm в Ubuntu 20.04 LTS.

Пример скрипта, который автоматизирует развертывание kubeadm из одного узла на виртуальной машине, а затем поверх него развертывает конфигурацию по умолчанию кластера больших данных, см в статье Развертывание в кластере kubeadm с одним узлом с помощью скрипта bash.

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

  • Не менее трех физических компьютеров или виртуальных машин с Linux.
  • Рекомендуемая конфигурация отдельного компьютера:
    • 8 ЦП
    • 64 ГБ памяти
    • 100 ГБ хранилища

Важно!

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

Подготовка компьютеров

На каждом компьютере нужно выполнить несколько предварительных условий. Выполните следующие команды в терминале bash на каждом компьютере:

  1. Добавьте текущий компьютер в файл /etc/hosts:

    echo $(hostname -i) $(hostname) | sudo tee -a /etc/hosts
    
  2. Отключите подкачку на всех устройствах.

    sudo sed -i "/ swap / s/^/#/" /etc/fstab
    sudo swapoff -a
    
  3. Импортируйте ключи и зарегистрируйте репозиторий для Kubernetes.

    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo sudo tee /etc/apt/trusted.gpg.d/apt-key.asc
    echo 'deb http://apt.kubernetes.io/ kubernetes-xenial main' | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
    
  4. Настройте на компьютере необходимые компоненты Docker и Kubernetes.

    KUBE_DPKG_VERSION=1.15.0-00 #or your other target K8s version, which should be at least 1.13.
    sudo apt-get update && \
    sudo apt-get install -y ebtables ethtool && \
    sudo apt-get install -y docker.io && \
    sudo apt-get install -y apt-transport-https && \
    sudo apt-get install -y kubelet=$KUBE_DPKG_VERSION kubeadm=$KUBE_DPKG_VERSION kubectl=$KUBE_DPKG_VERSION && \
    curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash
    
  5. Задайте net.bridge.bridge-nf-call-iptables=1. В Ubuntu 18.04 выполните указанную ниже команду для включения br_netfilter.

    . /etc/os-release
    if [ "$VERSION_CODENAME" == "bionic" ]; then sudo modprobe br_netfilter; fi
    sudo sysctl net.bridge.bridge-nf-call-iptables=1
    

Настройка главного узла Kubernetes

После выполнения предыдущих команд на каждом компьютере выберите один из компьютеров в качестве главного узла Kubernetes. Затем выполните на этом компьютере указанные ниже команды.

  1. Сначала создайте файл rbac.yaml в текущем каталоге с помощью следующей команды.

    cat <<EOF > rbac.yaml
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: default-rbac
    subjects:
    - kind: ServiceAccount
      name: default
      namespace: default
    roleRef:
      kind: ClusterRole
      name: cluster-admin
      apiGroup: rbac.authorization.k8s.io
    EOF
    
  2. Инициализируйте главный узел Kubernetes на этом компьютере. В приведенном ниже примере сценария указана версия Kubernetes 1.15.0. Используемая версия зависит от кластера Kubernetes.

    KUBE_VERSION=1.15.0
    sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --kubernetes-version=$KUBE_VERSION
    

    Вы должны увидеть выходные данные, указывающие на успешную инициализацию главного узла Kubernetes.

  3. Обратите внимание на команду kubeadm join, которую нужно использовать на других серверах для присоединения к кластеру Kubernetes. Скопируйте ее для последующего использования.

    kubeadm join

  4. Настройте файл конфигурации Kubernetes в домашнем каталоге.

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
  5. Настройте кластер и панель мониторинга Kubernetes.

    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    helm init
    kubectl apply -f rbac.yaml
    kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
    kubectl create clusterrolebinding kubernetes-dashboard --clusterrole=cluster-admin --serviceaccount=kube-system:kubernetes-dashboard
    

Настройка агентов Kubernetes

Другие компьютеры будут выступать в качестве агентов Kubernetes в кластере.

На каждом из остальных компьютеров выполните команду kubeadm join, скопированную в предыдущем разделе.

kubeadm join agents

Просмотр состояния кластера

Чтобы проверить подключение к кластеру, используйте команду kubectl get для получения списка узлов кластера.

kubectl get nodes

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

Действия, описанные в этой статье, обеспечивают настройку кластера Kubernetes на нескольких компьютерах Ubuntu. Следующим шагом является развертывание кластера больших данных SQL Server 2019. Инструкции см. в следующей статье:

Развертывание SQL Server в Kubernetes