Поделиться через


Настройка 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 с одним узлом.

Предпосылки

  • Не менее трех физических машин или виртуальных машин 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 на этой машине. Приведенный ниже пример скрипта указывает версию 1.15.0Kubernetes. Используемая версия зависит от кластера 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

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

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

kubectl get nodes

Дальнейшие шаги

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

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