Anthos clusters on bare metal supporta l'uso di OpenStack come piattaforma cloud privato. Questo supporto ti consente di utilizzare i seguenti servizi OpenStack:
- Infrastructure as a Service (IaaS)
- Bilanciamento del carico come servizio (LBaaS)
- Archiviazione
Puoi eseguire il deployment di Anthos clusters on bare metal in esecuzione su macchine virtuali (VM) OpenStack con sistemi operativi supportati. Anthos clusters on bare metal non esegue automaticamente il provisioning delle VM e il provisioning delle VM non rientra nell'ambito di questa guida. Per conoscere i requisiti delle VM ed esaminare un deployment di esempio, guarda l'esempio di Terraform per creare le VM OpenStack.
Puoi utilizzare OpenStack LBaaS e Kubernetes OpenStack Cloud Provider in Anthos clusters on bare metal per esporre i servizi Kubernetes al di fuori del cluster OpenStack.
La guida è costituita dalle seguenti sezioni:
- Esegui il deployment del cluster Anthos su Bare Metal
- Configurare OpenCloud Cloud Provider for Kubernetes in Anthos clusters on bare metal per l'integrazione con i bilanciatori del carico Octavia
- Convalida l'integrazione del cloud provider OpenStack per Kubernetes
Questa guida utilizza OpenStack Ussuri, ma potrebbe funzionare con versioni precedenti di OpenStack. Le versioni OpenStack precedenti non sono state testate. Questa guida utilizza le VM OpenStack per fornirti un cluster Anthos a due nodi di proof of concept in esecuzione su OpenStack. Per informazioni sulla creazione di un ambiente di produzione con un piano di controllo ad alta disponibilità, consulta la documentazione di Anthos clusters on bare metal per i requisiti dell'ambiente di produzione.
Deployment di esempio
Questa guida fornisce un esempio di deployment di Anthos clusters on bare metal su OpenStack che si integra con LBaaS di OpenStack. Devi comprendere e modificare i comandi e i valori di configurazione in base al tuo ambiente OpenStack. Il seguente diagramma mostra il deployment risultante:
Prerequisiti
- OpenStack Ussuri con LBaaS v2 con deployment e funzionalità
- Account di servizio per scaricare lo strumento bmctl
- Configura le VM e la rete OpenStack come mostrato nel deployment di esempio.
Per eseguire il provisioning di una configurazione simile nel tuo ambiente OpenStack, puoi utilizzare le opzioni seguenti:
- Utilizza questo script Terraform per eseguire automaticamente il provisioning delle risorse.
- Esegui il provisioning manuale delle risorse.
- Le seguenti VM OpenStack devono essere pronte e disponibili tramite SSH:
Nome | Utilizzo | Indirizzo IP |
---|---|---|
l'esempio della mamma |
10.200.0.10 (IP privato) floating_ip (IP pubblico) |
Agisce come workstation di amministrazione Viene utilizzata per il deployment di Anthos on bare metal nelle altre macchine. |
abc-cp1 | 10.200.0.11 | Piano di controllo del cluster Anthos: questo host esegue il piano di controllo e il bilanciatore del carico Kubernetes. |
abm-w1 | 10.200.0.12 | Nodo worker cluster Anthos: questo host esegue i carichi di lavoro Kubernetes. |
Esegui il deployment del cluster Anthos su Bare Metal
Questa sezione mostra come completare le seguenti attività:
- Installa gli strumenti necessari sulla VM della workstation di amministrazione
abm-ws
. - Configura l'ID progetto e l'account di servizio necessari per completare il deployment in modo sicuro
- Crea un file di configurazione del cluster
- Esegui il deployment del cluster Anthos su Bare Metal
Installa gli strumenti necessari
Recupera l'indirizzo IP mobile pubblico della VM
abm-ws
.export OPENSTACK_IPS=$(openstack floating ip list --tags=abm_ws_floatingip -f json) export FLOATING_IP=$(jq -c '.[]."Floating IP Address"' <<< $OPENSTACK_IPS | tr -d '"')
Assicurati di poterti connettere in modo sicuro alla VM
abm-ws
tramite SSH e di accedere come utenteroot
. L'utenteroot
come configurato dagli script Terraform èabm
.ssh ubuntu@$FLOATING_IP sudo -u abm -i
Verifica di poter utilizzare SSH per connetterti agli altri nodi.
ssh abm@10.200.0.11 'echo SSH to $HOSTNAME succeeded' ssh abm@10.200.0.12 'echo SSH to $HOSTNAME succeeded'
L'output previsto per i comandi precedenti è:
SSH to abm-cp1 succeeded SSH to abm-w1 succeeded
Scarica l'utilità a riga di comando
kubectl
sulla VMabm-ws
.curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl" chmod +x kubectl sudo mv kubectl /usr/local/sbin/
Installa Docker sulla VM
abm-ws
.curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh sudo usermod -aG docker abm newgrp docker
Configurare il progetto e l'account di servizio Google Cloud
Ottenere le credenziali di accesso a Google Cloud CLI per il tuo account utente. Verrà utilizzato quando utilizzi i comandi
gcloud
che seguono.gcloud auth login
Assicurati che Google Cloud CLI sia configurato per l'utilizzo del progetto Google Cloud in cui vuoi registrare i tuoi cluster Anthos su Bare Metal.
gcloud config set project PROJECT_ID
Imposta le credenziali predefinite dell'applicazione (ADC) per il tuo account utente nella workstation di amministrazione. Verrà utilizzato quando verrà utilizzato lo strumento
bmctl
per la creazione del cluster.gcloud auth application-default login
Crea l'account di servizio
bm-gcr
. Utilizzi questo account di servizio per eseguire l'autenticazione dai cluster Anthos su cluster Bare Metal.gcloud iam service-accounts create bm-gcr gcloud iam service-accounts keys create bm-gcr.json \ --iam-account=bm-gcr@PROJECT_ID.iam.gserviceaccount.com
Abilitare le API necessarie.
gcloud services enable \ anthos.googleapis.com \ anthosgke.googleapis.com \ cloudresourcemanager.googleapis.com \ container.googleapis.com \ gkeconnect.googleapis.com \ gkehub.googleapis.com \ serviceusage.googleapis.com \ stackdriver.googleapis.com \ monitoring.googleapis.com \ logging.googleapis.com \ opsconfigmonitoring.googleapis.com \ anthosaudit.googleapis.com
Concedi autorizzazioni aggiuntive all'account di servizio
bm-gcr
. Se aggiungi le autorizzazioni, non devi creare più account di servizio per i singoli servizi.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:bm-gcr@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/gkehub.connect" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:bm-gcr@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/gkehub.admin" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:bm-gcr@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/logging.logWriter" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:bm-gcr@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:bm-gcr@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.dashboardEditor" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:bm-gcr@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/stackdriver.resourceMetadata.writer" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:bm-gcr@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/opsconfigmonitoring.resourceMetadata.writer"
Crea un file di configurazione del cluster
Scarica l'utilità a riga di comando
bmctl
.mkdir baremetal && cd baremetal gsutil cp gs://anthos-baremetal-release/bmctl/1.12.9/linux-amd64/bmctl . chmod a+x bmctl sudo mv bmctl /usr/local/sbin/
Crea un'area di lavoro Anthos clusters on bare metal per il tuo cluster.
bmctl create config -c CLUSTER_NAME
Crea il file di configurazione per il tuo cluster Cluster Anthos su Bare Metal.
cat > bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME.yaml << EOB --- gcrKeyPath: /home/abm/bm-gcr.json sshPrivateKeyPath: /home/abm/.ssh/id_rsa gkeConnectAgentServiceAccountKeyPath: /home/abm/bm-gcr.json gkeConnectRegisterServiceAccountKeyPath: /home/abm/bm-gcr.json cloudOperationsServiceAccountKeyPath: /home/abm/bm-gcr.json --- apiVersion: v1 kind: Namespace metadata: name: openstack-cluster-ns --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: CLUSTER_NAME namespace: openstack-cluster-ns annotations: baremetal.cluster.gke.io/external-cloud-provider: "true" spec: type: hybrid anthosBareMetalVersion: 1.12.9 gkeConnect: projectID: PROJECT_ID controlPlane: nodePoolSpec: clusterName: CLUSTER_NAME nodes: - address: 10.200.0.11 clusterNetwork: pods: cidrBlocks: - 10.202.0.0/16 services: cidrBlocks: - 10.203.0.0/16 loadBalancer: mode: manual ports: controlPlaneLBPort: 443 vips: controlPlaneVIP: 10.200.0.101 ingressVIP: 10.200.0.102 clusterOperations: location: us-central1 projectID: PROJECT_ID storage: lvpNodeMounts: path: /mnt/localpv-disk storageClassName: node-disk lvpShare: numPVUnderSharedPath: 5 path: /mnt/localpv-share storageClassName: standard nodeAccess: loginUser: abm --- apiVersion: baremetal.cluster.gke.io/v1 kind: NodePool metadata: name: node-pool-1 namespace: openstack-cluster-ns spec: clusterName: CLUSTER_NAME nodes: - address: 10.200.0.12 EOB
Deployment
Eseguire il deployment del cluster.
bmctl create cluster -c CLUSTER_NAME
L'esecuzione del comando bmctl
avvia la configurazione di un nuovo cluster ibrido. Questo include
l'esecuzione di controlli preflight sui nodi, la creazione di cluster amministrativi e utente
e la registrazione del cluster con Google Cloud utilizzando Connetti.
L'intera configurazione può richiedere fino a 15 minuti. Vedi il seguente output durante la creazione del cluster:
Please check the logs at bmctl-workspace/CLUSTER_NAME/log/create-cluster-20210926-020741/create-cluster.log
[2021-09-26 02:07:59+0000] Creating bootstrap cluster... ⠦ kind get kubeconfig --name bmctl > ~/.kube/config && k get pods --all-namespaces
[2021-09-26 02:07:59+0000] Creating bootstrap cluster... OK
[2021-09-26 02:10:48+0000] Installing dependency components... OK
[2021-09-26 02:13:42+0000] Waiting for preflight check job to finish... OK
[2021-09-26 02:15:22+0000] - Validation Category: machines and network
[2021-09-26 02:15:22+0000] - [PASSED] gcp
[2021-09-26 02:15:22+0000] - [PASSED] node-network
[2021-09-26 02:15:22+0000] - [PASSED] 10.200.0.11
[2021-09-26 02:15:22+0000] - [PASSED] 10.200.0.11-gcp
[2021-09-26 02:15:22+0000] - [PASSED] 10.200.0.12
[2021-09-26 02:15:22+0000] - [PASSED] 10.200.0.12-gcp
[2021-09-26 02:15:22+0000] Flushing logs... OK
[2021-09-26 02:15:23+0000] Applying resources for new cluster
[2021-09-26 02:15:24+0000] Waiting for cluster to become ready OK
[2021-09-26 02:25:04+0000] Writing kubeconfig file
[2021-09-26 02:25:04+0000] kubeconfig of created cluster is at bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig, please run
[2021-09-26 02:25:04+0000] kubectl --kubeconfig bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig get nodes
[2021-09-26 02:25:04+0000] to get cluster node status.
[2021-09-26 02:25:04+0000] Please restrict access to this file as it contains authentication credentials of your cluster.
[2021-09-26 02:25:04+0000] Waiting for node pools to become ready OK
[2021-09-26 02:25:24+0000] Moving admin cluster resources to the created admin cluster
[2021-09-26 02:25:53+0000] Flushing logs... OK
[2021-09-26 02:25:53+0000] Deleting bootstrap cluster...
Verifica e interagisci con il cluster
Puoi trovare il file kubeconfig
del tuo cluster nella VM abm-ws
all'interno della directory bmctl-workspace
. Per verificare il deployment, completa i seguenti passaggi.
Imposta la variabile di ambiente
KUBECONFIG
con il percorso del file di configurazione del cluster per eseguire i comandikubectl
sul cluster:export KUBECONFIG=$HOME/bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig kubectl get nodes
Dovresti vedere i nodi del cluster stampati, come nell'output seguente:
NAME STATUS ROLES AGE VERSION abm-cp1 Ready control-plane,master 5m24s v1.20.5-gke.1301 abm-w1 Ready <none> 2m17s v1.20.5-gke.1301
Accedi al tuo cluster dalla console Google Cloud
Per osservare i tuoi carichi di lavoro nella console Google Cloud, devi accedere al cluster. Per istruzioni e ulteriori informazioni sull'accesso al cluster, consulta Accedere a un cluster dalla console Google Cloud.
Esegui la pulizia
Puoi ripulire il cluster inviando il comando seguente nella VM della workstation di amministrazione (abm-ws
).
export KUBECONFIG=$HOME/bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
bmctl reset --cluster CLUSTER_NAME
Quali sono i passaggi successivi?
Ora puoi installare OpenStack Cloud Provider sul cluster Anthos clusters on bare metal appena creato seguendo la guida Configura il cloud provider OpenStack per Kubernetes. Questo ti consente di esporre le tue applicazioni utilizzando un servizio di tipo LoadBalancer
, sfruttando LBaaS di OpenStack.