Configurare Kubernetes in più computer per distribuzioni di cluster Big Data di SQL Server

Si applica a: SQL Server 2019 (15.x)

Importante

Il componente aggiuntivo per i cluster Big Data di Microsoft SQL Server 2019 verrà ritirato. Il supporto per i cluster Big Data di SQL Server 2019 terminerà il 28 febbraio 2025. Tutti gli utenti esistenti di SQL Server 2019 con Software Assurance saranno completamente supportati nella piattaforma e fino a quel momento il software continuerà a ricevere aggiornamenti cumulativi di SQL Server. Per altre informazioni, vedere il post di blog relativo all'annuncio e Opzioni per i Big Data nella piattaforma Microsoft SQL Server.

Questo articolo fornisce un esempio di come usare kubeadm per configurare Kubernetes in più computer per distribuzioni di cluster Big Data di SQL Server. In questo esempio la destinazione è rappresentata da più computer Ubuntu 16.04 o 18.04 LTS (fisici o virtuali). Se la distribuzione viene eseguita in una piattaforma Linux diversa, è necessario modificare alcuni dei comandi per adeguarli al sistema in uso.

Suggerimento

Per gli script di esempio che configurano Kubernetes, vedere Creare un cluster Kubernetes usando Kubeadm in Ubuntu 20.04 LTS.

Per uno script di esempio che automatizza la distribuzione di uno strumento kubeadm per nodo singolo in una macchina virtuale e quindi distribuisce una configurazione predefinita di un cluster Big Data, vedere distribuzione di un cluster kubeadm a nodo singolo.

Prerequisiti

  • Almeno tre computer fisici o macchine virtuali Linux
  • Configurazione consigliata per singolo computer:
    • 8 CPU
    • 64 GB di memoria
    • 100 GB di spazio di archiviazione

Importante

Prima di avviare la distribuzione del cluster Big Data, assicurarsi che gli orologi siano sincronizzati tra tutti i nodi Kubernetes cui è destinata la distribuzione. Il cluster Big Data include proprietà di stato predefinite per diversi servizi che sono sensibili al tempo e le differenze di orario possono causare errori relativi allo stato.

Preparare i computer

Per ogni computer sono previsti prerequisiti diversi. In ogni computer eseguire i comandi seguenti in un terminale Bash:

  1. Aggiungere il computer corrente al file /etc/hosts:

    echo $(hostname -i) $(hostname) | sudo tee -a /etc/hosts
    
  2. Disabilitare lo scambio in tutti i dispositivi.

    sudo sed -i "/ swap / s/^/#/" /etc/fstab
    sudo swapoff -a
    
  3. Importare le chiavi e registrare il repository per 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. Configurare i prerequisiti Docker e Kubernetes nel computer.

    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. Impostare net.bridge.bridge-nf-call-iptables=1. In Ubuntu 18.04 i comandi seguenti abilitano prima br_netfilter.

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

Configurare il nodo master Kubernetes

Dopo aver eseguito i comandi precedenti in ogni computer, scegliere uno dei computer come nodo master Kubernetes. Eseguire quindi nel computer i comandi seguenti.

  1. Per prima cosa, creare un file rbac.yaml nella directory corrente usando il comando seguente.

    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. Inizializzare il nodo master Kubernetes nel computer. Lo script di esempio seguente specifica la versione di Kubernetes 1.15.0. La versione da usare dipende dal cluster Kubernetes.

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

    Verrà visualizzato un messaggio per informare l'utente che il nodo master Kubernetes è stato inizializzato correttamente.

  3. Annotare il comando kubeadm join da usare negli altri server per unire in join il cluster Kubernetes. Copiare il comando per poterlo usare in seguito.

    kubeadm join

  4. Configurare un file di configurazione di Kubernetes nella home directory.

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
  5. Configurare il cluster e il dashboard di 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
    

Configurare gli agenti Kubernetes

Gli altri computer svolgeranno la funzione di agenti Kubernetes nel cluster.

In ognuno degli altri computer eseguire il comando kubeadm join copiato nella sezione precedente.

kubeadm join agents

Visualizzare lo stato del cluster

Per verificare la connessione al cluster, usare il comando kubectl get per restituire un elenco di nodi del cluster.

kubectl get nodes

Passaggi successivi

La procedura illustrata in questo articolo ha consentito la configurazione di un cluster Kubernetes in più computer Ubuntu. Il passaggio successivo prevede la distribuzione di un cluster Big Data di SQL Server 2019. Per informazioni, vedere l'articolo seguente:

Distribuire SQL Server in Kubernetes