Panduan ini membahas contoh deployment GKE di Bare Metal pada virtual machine (VM) OpenStack dengan sistem operasi yang didukung. Deployment tersebut menggunakan skrip untuk menyederhanakan penginstalan cluster hybrid di VM OpenStack. Panduan ini juga menunjukkan salah satu cara untuk mengaktifkan load balancing sebagai Service (LBaaS). Anda dapat menggunakan OpenStack LBaaS dan Penyedia Cloud OpenStack Kubernetes di GKE pada Bare Metal untuk mengekspos layanan Kubernetes di luar cluster OpenStack.
GKE di Bare Metal tidak menyediakan VM OpenStack secara otomatis, dan penyediaan VM berada di luar cakupan panduan ini. Untuk mempelajari persyaratan VM dan meninjau contoh deployment, baca contoh Terraform untuk membuat VM OpenStack.
Panduan ini terdiri dari bagian-bagian berikut:
Men-deploy GKE di Bare Metal
Konfigurasikan OpenStack Cloud Provider untuk Kubernetes di GKE pada Bare Metal untuk berintegrasi dengan load balancer Octavia
Memvalidasi Penyedia Cloud OpenStack untuk integrasi Kubernetes
Panduan ini menggunakan OpenStack Ussuri, tetapi GKE di Bare Metal tidak memiliki persyaratan untuk versi tertentu dari OpenStack. Panduan ini menggunakan VM OpenStack untuk memberi Anda GKE dua node pada lingkungan konsep Bare Metal yang berjalan di OpenStack. Untuk mengetahui informasi cara membuat lingkungan produksi dengan bidang kontrol ketersediaan tinggi, lihat dokumentasi GKE on Bare Metal untuk mengetahui persyaratan lingkungan produksi.
Contoh penerapan
Panduan ini menyajikan contoh deployment GKE pada Bare Metal di OpenStack yang terintegrasi dengan OpenStack LBaaS. Anda harus memahami dan menyesuaikan perintah dan nilai konfigurasi dengan lingkungan OpenStack Anda. Diagram berikut menunjukkan deployment yang dihasilkan:
Prasyarat
- OpenStack Ussuri dengan LBaaS v2 yang di-deploy dan berfungsi
- Akun layanan untuk mendownload alat bmctl
- Konfigurasikan VM dan jaringan OpenStack Anda seperti yang ditunjukkan dalam contoh deployment.
Untuk menyediakan penyiapan serupa di lingkungan OpenStack, Anda memiliki opsi berikut:
- Gunakan skrip Terraform ini untuk menyediakan resource secara otomatis.
- Sediakan resource secara manual.
- VM OpenStack berikut harus siap dan tersedia melalui SSH:
Nama | Alamat IP | Tujuan |
---|---|---|
abm-ws |
10.200.0.10 (IP pribadi) floating_ip (IP publik) |
Berfungsi sebagai workstation admin: Yang digunakan untuk men-deploy GKE di Bare Metal ke komputer lain. |
abm-cp1 | 10.200.0.11 | Bidang kontrol cluster GKE: Host ini menjalankan bidang kontrol dan load balancer Kubernetes. |
abm-w1 | 10.200.0.12 | Node pekerja cluster GKE: Host ini menjalankan beban kerja Kubernetes. |
Men-deploy GKE di Bare Metal
Bagian ini menunjukkan cara menyelesaikan tugas berikut:
- Instal alat yang Anda perlukan di VM workstation admin
abm-ws
. - Mengonfigurasi project ID dan akun layanan yang diperlukan untuk menyelesaikan deployment dengan aman
- Membuat file konfigurasi cluster
- Membuat cluster
Instal alat yang Anda perlukan
Ambil alamat IP mengambang publik dari 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 '"')
Pastikan Anda dapat menggunakan SSH untuk terhubung dengan aman ke VM
abm-ws
dan login sebagai penggunaroot
. Penggunaroot
yang dikonfigurasi oleh skrip Terraform adalahabm
.ssh ubuntu@$FLOATING_IP sudo -u abm -i
Pastikan Anda dapat menggunakan SSH untuk terhubung ke node lain:
ssh abm@10.200.0.11 'echo SSH to $HOSTNAME succeeded' ssh abm@10.200.0.12 'echo SSH to $HOSTNAME succeeded'
Respons yang diharapkan untuk perintah sebelumnya adalah:
SSH to abm-cp1 succeeded SSH to abm-w1 succeeded
Download utilitas command line
kubectl
di 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/
Instal Docker di VM
abm-ws
:curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh sudo usermod -aG docker abm newgrp docker
Mengonfigurasi project Google Cloud dan akun layanan
Dapatkan kredensial akses Google Cloud CLI untuk akun pengguna Anda.
Kredensial ini digunakan dengan perintah
gcloud
berikutnya.gcloud auth login
Pastikan Google Cloud CLI dikonfigurasi untuk menggunakan project Google Cloud tempat Anda ingin mendaftarkan GKE di Bare Metal.
gcloud config set project PROJECT_ID
Tetapkan Kredensial Default Aplikasi (ADC) untuk akun pengguna Anda di workstation admin. Atribut ini akan digunakan saat alat
bmctl
digunakan untuk pembuatan cluster.gcloud auth application-default login
Buat akun layanan
bm-gcr
. Anda menggunakan akun layanan ini untuk melakukan autentikasi dari GKE pada 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
Aktifkan API yang diperlukan:
gcloud services enable \ anthos.googleapis.com \ anthosaudit.googleapis.com \ anthosgke.googleapis.com \ cloudresourcemanager.googleapis.com \ connectgateway.googleapis.com \ container.googleapis.com \ gkeconnect.googleapis.com \ gkehub.googleapis.com \ gkeonprem.googleapis.com \ iam.googleapis.com \ logging.googleapis.com \ monitoring.googleapis.com \ opsconfigmonitoring.googleapis.com \ serviceusage.googleapis.com \ stackdriver.googleapis.com \ storage.googleapis.com
Memberikan izin tambahan ke akun layanan
bm-gcr
. Dengan menambahkan izin, Anda tidak perlu membuat beberapa akun layanan untuk setiap layanan.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"
Membuat file konfigurasi cluster
Download utilitas command line
bmctl
.mkdir baremetal && cd baremetal gsutil cp gs://anthos-baremetal-release/bmctl/1.28.400-gke.77/linux-amd64/bmctl . chmod a+x bmctl sudo mv bmctl /usr/local/sbin/
Buat GKE di ruang kerja Bare Metal untuk cluster Anda.
bmctl create config -c CLUSTER_NAME
Buat file konfigurasi untuk GKE Anda di cluster 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.28.400-gke.77 gkeConnect: projectID: PROJECT_ID controlPlane: nodePoolSpec: clusterName: CLUSTER_NAME nodes: - address: 10.200.0.11 clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 services: cidrBlocks: - 10.96.0.0/20 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
Membuat cluster
Membuat cluster:
bmctl create cluster -c CLUSTER_NAME
Menjalankan perintah bmctl
akan memulai penyiapan cluster hybrid baru. Hal ini
termasuk melakukan pemeriksaan preflight pada node, membuat admin dan cluster
pengguna, serta mendaftarkan cluster tersebut ke Google Cloud menggunakan
Connect.
Seluruh penyiapan dapat memerlukan waktu hingga 15 menit. Anda akan melihat output berikut saat cluster sedang dibuat:
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...
Memverifikasi dan berinteraksi dengan cluster
Anda dapat menemukan file kubeconfig
cluster di VM abm-ws
di dalam
direktori bmctl-workspace
. Untuk memverifikasi deployment, selesaikan langkah-langkah berikut:
Tetapkan variabel lingkungan
KUBECONFIG
dengan jalur ke file konfigurasi cluster untuk menjalankan perintahkubectl
di cluster:export KUBECONFIG=$HOME/bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig kubectl get nodes
Anda akan melihat node cluster yang dicetak, mirip dengan output berikut:
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
Login ke cluster Anda dari konsol Google Cloud
Untuk mengamati beban kerja di konsol Google Cloud, Anda harus login ke cluster. Untuk mendapatkan petunjuk dan informasi lebih lanjut tentang cara login ke cluster, lihat Bekerja dengan cluster dari Konsol Google Cloud.
Pembersihan
Anda dapat membersihkan cluster dengan menjalankan perintah berikut di VM workstation admin (abm-ws
):
export KUBECONFIG=$HOME/bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
bmctl reset --cluster CLUSTER_NAME
Apa langkah selanjutnya?
- Untuk menginstal Penyedia Cloud OpenStack di GKE yang baru dibuat pada cluster Bare Metal, ikuti panduan Mengonfigurasi OpenStack Cloud Provider untuk Kubernetes