Membuat cluster admin menggunakan klien GKE On-Prem API

Halaman ini menjelaskan cara membuat cluster admin menggunakan Konsol Google Cloud atau Google Cloud CLI (gcloud CLI). Kedua klien Google Cloud standar ini menggunakan GKE On-Prem API untuk membuat cluster.

Apa itu GKE On-Prem API?

GKE On-Prem API adalah API yang dihosting Google Cloud dan dapat Anda gunakan untuk mengelola siklus proses cluster lokal menggunakan Terraform dan aplikasi Google Cloud standar. GKE On-Prem API berjalan di infrastruktur Google Cloud. Terraform, konsol, dan gcloud CLI adalah klien API, dan menggunakan API untuk membuat cluster di pusat data Anda.

Untuk mengelola siklus proses cluster Anda, GKE On-Prem API harus menyimpan metadata tentang status cluster Anda di Google Cloud, menggunakan region Google Cloud yang Anda tentukan saat membuat cluster. Metadata ini memungkinkan API mengelola siklus proses cluster dan tidak menyertakan data khusus workload.

Saat membuat cluster menggunakan klien GKE On-Prem API, Anda harus menentukan project Google Cloud. Setelah dibuat, cluster akan otomatis terdaftar ke fleet project yang ditentukan. Project ini disebut sebagai project host armada. Project host fleet tidak dapat diubah setelah cluster dibuat.

Jika ingin, Anda dapat membuat cluster admin dengan membuat file konfigurasi cluster admin dan menggunakan bmctl, seperti yang dijelaskan dalam Membuat cluster admin.

Jika Anda ingin menggunakan konsol atau gcloud CLI untuk mengelola siklus proses cluster yang dibuat menggunakan bmctl, lihat Mengonfigurasi cluster yang akan dikelola oleh GKE On-Prem API.

Izin IAM

Jika bukan pemilik project Google Cloud, Anda harus meminta pemilik project untuk memberi Anda peran berikut:

Jika ingin mengakses halaman GKE Enterprise dan GKE di konsol, Anda juga harus memiliki roles/container.viewer.

Untuk mengetahui informasi tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Akses command line

Setelah cluster dibuat, jika Anda ingin menggunakan gateway koneksi untuk menjalankan perintah kubectl terhadap cluster di komputer selain workstation admin, instal alat command line berikut di komputer yang akan Anda gunakan.

  • Versi terbaru gcloud CLI.

  • kubectl untuk menjalankan perintah pada cluster Kubernetes. Jika Anda perlu menginstal kubectl, ikuti instructions ini.

Pilih klien untuk membuat cluster admin

Anda dapat menggunakan konsol atau gcloud CLI untuk membuat cluster admin yang dikelola oleh GKE On-Prem API. Jika ini adalah pertama kalinya Anda menginstal GKE di Bare Metal, konsol tersebut mungkin lebih mudah digunakan daripada gcloud CLI.

Setelah terbiasa dengan informasi yang perlu diberikan untuk membuat cluster, Anda dapat menggunakan gcloud CLI lebih praktis karena dapat menyimpan perintah beserta argumennya ke dalam file teks. Jika menggunakan alat CI/CD, seperti Cloud Build, Anda dapat menggunakan perintah gcloud untuk membuat cluster dan menentukan flag --impersonate-service-account untuk mengotomatiskan pembuatan.

Prasyarat

Konsol

  1. Di konsol, buka halaman Create a GKE on Bare Metal cluster.

    Buka Create a GKE pada cluster Bare Metal

  2. Pilih project Google Cloud tempat Anda ingin membuat cluster. Project yang dipilih juga digunakan sebagai project host fleet.

Halaman Prasyarat menampilkan persyaratan untuk workstation admin dan mesin node cluster Anda. Perencana alamat IP di bagian Persyaratan jaringan membantu Anda merencanakan alamat IP yang diperlukan untuk penginstalan minimal satu cluster admin dan satu cluster pengguna.

Prasyarat workstation admin

Luaskan bagian ini untuk menampilkan persyaratan hardware, sistem operasi, dan konektivitas untuk workstation admin Anda.

Prasyarat mesin node cluster

Luaskan bagian ini untuk menampilkan persyaratan hardware, sistem operasi, dan konektivitas untuk mesin node cluster.

Persyaratan jaringan

Bagian ini membantu Anda merencanakan alamat IP yang diperlukan untuk lingkungan minimal. Secara opsional, di bagian Node IP and Virtual IP addresses, Anda dapat memberikan alamat IP node awal dan alamat IP virtual (VIP), serta di konsol akan menampilkan tabel alamat IP yang Anda perlukan. Alamat IP ini tidak diterapkan ke konfigurasi cluster admin. Laporan ini dimaksudkan sebagai panduan untuk membantu Anda merencanakan alamat IP yang diperlukan untuk penginstalan. Anda dapat mendownload tabel ke file CSV dan mengimpornya ke dalam spreadsheet atau alat perencanaan alamat IP untuk digunakan sebagai titik awal dalam melacak alamat IP yang diperlukan untuk cluster Anda.

Tinjau referensi Google Cloud:

Pastikan semua Google API yang diperlukan diaktifkan di project fleet host. Selain itu, Anda perlu mengaktifkan GKE On-Prem API:

gcloud services enable --project FLEET_HOST_PROJECT_ID \
  gkeonprem.googleapis.com

Ganti FLEET_HOST_PROJECT_ID dengan project ID dari project host fleet.

Sebelum membuat cluster, jalankan perintah bmctl register bootstrap di workstation admin seperti yang dijelaskan dalam Menyiapkan lingkungan bootstrap. Perintah ini dapat membuat akun layanan yang diperlukan dengan izin IAM minimum yang diperlukan untuk membuat cluster admin. Jika ingin, Anda dapat Mengonfigurasi akun layanan secara manual.

Jika Anda sudah siap untuk memulai, klik Install bootstrap environment di menu navigasi sebelah kiri.

gcloud CLI

Prasyarat hardware, jaringan, dan sistem operasi

Pembuatan cluster admin menggunakan klien GKE On-Prem API memerlukan prasyarat hardware, jaringan, dan sistem operasi yang sama seperti membuat cluster menggunakan bmctl. Untuk mengetahui detailnya, lihat Prasyarat penginstalan.

Google API yang diperlukan

Pastikan semua Google API yang diperlukan diaktifkan di project fleet host. Selain itu, Anda perlu mengaktifkan GKE On-Prem API:

gcloud services enable --project FLEET_HOST_PROJECT_ID \
  gkeonprem.googleapis.com

Ganti FLEET_HOST_PROJECT_ID dengan project ID dari project host fleet.

Akun layanan dan izin yang diperlukan

Sebelum membuat cluster, jalankan perintah bmctl register bootstrap di workstation admin seperti yang dijelaskan dalam Menyiapkan lingkungan bootstrap. Perintah ini dapat membuat akun layanan yang diperlukan dengan izin IAM minimum yang diperlukan untuk membuat cluster admin. Jika ingin, Anda dapat Mengonfigurasi akun layanan secara manual.

Alamat IP paket

Sebelum membuat cluster admin, Anda perlu merencanakan alamat IP untuk cluster Anda. Tinjau artikel Merencanakan alamat IP untuk mengetahui contoh cara mengalokasikan alamat IP untuk cluster admin dengan ketersediaan tinggi (HA) dan dua cluster pengguna dengan ketersediaan tinggi (HA). Meskipun Anda akan menggunakan gcloud CLI untuk membuat cluster admin, Anda dapat mengikuti langkah-langkah konsol di bagian ini untuk menggunakan perencana alamat IP.

Mempersiapkan lingkungan bootstrap

Sebelum membuat cluster admin, Anda harus menjalankan perintah bmctl register bootstrap di workstation admin. Perintah ini menerapkan cluster Kubernetes di Docker (jenis) di workstation admin. Cluster bootstrap ini menghosting pengontrol Kubernetes yang diperlukan untuk membuat cluster admin. Saat Anda membuat cluster admin, pengontrol di cluster bootstrap akan menyediakan node, menjalankan pemeriksaan preflight, dan mendaftarkan cluster admin ke fleet. Cluster bootstrap otomatis dihapus setelah cluster berhasil dibuat.

Konsol

  1. Masukkan Nama untuk cluster admin. Perhatikan bahwa nama cluster bootstrap diperoleh dengan menambahkan bootstrap- terlebih dahulu ke nama cluster admin.

  2. Pilih GKE pada versi Bare Metal untuk cluster admin Anda.

  3. Di kolom Google Cloud API Location, pilih region Google Cloud dari daftar. Setelan ini menentukan region tempat GKE On-Prem API dijalankan, dan region tempat hal berikut disimpan:

    • Metadata cluster yang diperlukan GKE On-Prem API untuk mengelola siklus proses cluster
    • Data Cloud Logging dan Cloud Monitoring dari komponen sistem
    • Log Audit Admin yang dibuat oleh Cloud Audit Logs

    Nama cluster, project, dan lokasi bersama-sama mengidentifikasi cluster secara unik di Google Cloud.

  4. Konsol menampilkan perintah yang perlu Anda jalankan di workstation admin. Alat command line bmctl harus cocok dengan versi cluster yang Anda buat. Jika sudah mendownload versi bmctl yang berlaku ke workstation admin, Anda tidak perlu mendownloadnya lagi.

gcloud CLI

  1. Pastikan Anda memiliki gcloud CLI versi terbaru, termasuk komponen beta gcloud CLI.

  2. Jika Anda belum memiliki komponen beta, jalankan perintah berikut untuk menginstalnya:

    gcloud components install beta
    
  3. Update komponen gcloud CLI, jika diperlukan:

    gcloud components update
    
  4. Jalankan perintah berikut untuk login dengan Akun Google Anda:

    gcloud auth login
    
  5. Cantumkan GKE yang tersedia pada versi Bare Metal yang dapat Anda instal. Versi bmctl yang Anda download untuk membuat lingkungan bootstrap harus cocok dengan versi yang akan Anda instal di cluster admin.

    gcloud container bare-metal admin-clusters query-version-config \
      --location=REGION
    

    Ganti REGION dengan region Google Cloud tempat GKE On-Prem API dijalankan. Tentukan us-west1 atau wilayah lain yang didukung.

Membuat cluster bootstrap

Lakukan langkah-langkah berikut di workstation admin Anda. Perintah-perintah ini ditampilkan di konsol.

  1. Tetapkan kredensial pengguna Anda sebagai Kredensial Default Aplikasi (ADC):

    gcloud auth application-default login
    

    Ikuti petunjuk untuk memilih Akun Google Anda untuk ADC.

  2. Jika perlu, download alat command line bmctl ke direktori kerja saat ini.

    gsutil cp gs://anthos-baremetal-release/bmctl/VERSION/linux-amd64/bmctl .
    chmod a+x ./bmctl
    

    Ganti VERSION dengan versi GKE di Bare Metal yang ingin Anda instal. Jika Anda menyalin perintah dari konsol, versinya sudah ada di perintah.

  3. Membuat cluster bootstrap. Anda dapat mengizinkan bmctl membuat akun layanan (SA) yang diperlukan, atau Anda dapat membuat akun layanan dan file kunci sendiri lalu meneruskannya ke perintah bmctl register bootstrap.

bmctl membuat SA

Gunakan perintah berikut jika Anda ingin bmctl membuat akun layanan yang diperlukan dengan izin minimum yang diperlukan untuk membuat cluster admin. Perintah ini mengasumsikan bahwa bmctl berada di direktori kerja saat ini.

./bmctl register bootstrap \
  --ssh-key=YOUR_PRIVATE_KEY \
  --name=bootstrap-ADMIN_CLUSTER_NAME \
  --project-id=FLEET_HOST_PROJECT_ID

Ganti kode berikut:

Jika Anda menyalin perintah yang ditampilkan di konsol, kolom berikut sudah terisi untuk Anda.

  • ADMIN_CLUSTER_NAME: Nama cluster admin Anda. Format nama cluster bootstrap harus bootstrap-ADMIN_CLUSTER_NAME.

  • FLEET_HOST_PROJECT_ID: Project tempat cluster admin akan didaftarkan secara otomatis setelah cluster dibuat.

Perintah bmctl register bootstrap membuat akun layanan berikut. Kunci akun layanan disimpan di direktori bmctl-workspace/.sa-keys.

Akun layanan Tujuan Peran IAM
anthos-baremetal-gcr GKE di Bare Metal menggunakan akun layanan ini untuk mendownload image container dari Google Container Registry. Tidak ada
anthos-baremetal-connect Connect Agent menggunakan akun layanan ini untuk mempertahankan koneksi antara cluster Anda dan Google Cloud roles/gkehub.connect
anthos-baremetal-register Connect Agent menggunakan akun layanan ini untuk mendaftarkan cluster Anda ke fleet Google Cloud. roles/gkehub.admin
anthos-baremetal-cloud-ops Agen Stackdriver menggunakan akun layanan ini untuk mengekspor log dan metrik dari cluster ke Cloud Logging dan Cloud Monitoring. role/logging.logWriter
roles/monitoring.metricWriter
roles/stackdriver.resourceMetadata.writer
roles/opsconfigmonitoring.resourceMetadata.writer
roles/monitoring.dashboardEditor

Menentukan file kunci SA

Jika mau, Anda dapat meneruskan file kunci akun layanan yang telah dibuat kepada bmctl. Perintah berikut menggunakan nama file kunci dalam Mengonfigurasi akun layanan secara manual dan mengasumsikan bahwa bmctl dan file kunci berada di direktori kerja saat ini.

./bmctl register bootstrap \
  --ssh-key=YOUR_PRIVATE_KEY \
  --name=bootstrap-ADMIN_CLUSTER_NAME \
  --project-id=FLEET_HOST_PROJECT_ID \
  --gcr-service-account-key=anthos-baremetal-gcr.json \
  --gke-agent-service-account-key=connect-agent.json \
  --gke-register-service-account-key=connect-register.json \
  --cloud-operation-service-account-key=anthos-baremetal-cloud-ops.json

Ganti kode berikut:

  • YOUR_PRIVATE_KEY: Jalur ke kunci SSH pribadi Anda. Kunci SSH telah dibuat saat menyiapkan akses root SSH ke node.

  • ADMIN_CLUSTER_NAME: Nama cluster admin Anda. Format nama cluster bootstrap harus bootstrap-ADMIN_CLUSTER_NAME.

  • FLEET_HOST_PROJECT_ID: Project tempat cluster admin akan didaftarkan secara otomatis setelah cluster dibuat.

Flag berikut menentukan jalur ke file kunci:

  • -gcr-service-account-key: Jalur ke file kunci untuk akun layanan yang menarik image container (anthos-baremetal-gcr).

  • --gke-agent-service-account-key: Jalur ke file kunci untuk akun layanan Connect Agent (anthos-baremetal-connect).

  • --gke-register-service-account-key: Jalur ke file kunci untuk akun layanan Connect Agent yang mendaftarkan cluster ke fleet (anthos-baremetal-register).

  • --cloud-operation-service-account-key: Jalur ke file kunci bagi akun layanan untuk mengaudit log dan memantau project (anthos-baremetal-cloud-ops).

Setelah bmctl berhasil membuat cluster bootstrap, Anda akan melihat output yang mirip dengan berikut ini:

[2023-03-22 17:35:24+0000] Waiting for the temporary cluster to be registered... OK
[2023-03-22 17:35:37+0000] Please go to https://console.cloud.google.com/home/dashboard?project=example-project-12345 to create the cluster
[2023-03-22 17:35:37+0000] Waiting for preflight checks and cluster to run..

Membuat cluster admin

Konsol

  1. Di halaman Install bootstrap environment, klik Check Connection.

    Jika berhasil, konsol akan menampilkan Connection created.

    Koneksi ke cluster bootstrap harus dibuat sebelum Anda melanjutkan. Jika koneksi tidak terhubung, periksa argumen yang Anda tentukan ke perintah bmctl register bootstrap:

    • Pastikan nilai untuk --name cocok dengan Nama bootstrap turunan yang ditampilkan di bagian Dasar-dasar lingkungan bootstrap.

    • Pastikan nilai untuk --project-id cocok dengan ID project yang Anda pilih di konsol.

    Jika Anda perlu mengubah nama cluster bootstrap atau project ID, masukkan Ctrl-C untuk keluar dari bmctl register bootstrap dan jalankan kembali perintahnya.

  2. Klik Next untuk mulai mengonfigurasi cluster admin. Sebagian besar setelan di konsol sesuai dengan kolom dalam file konfigurasi cluster.

  3. Di bagian Node configuration, masukkan nilai antara 64 dan 250 di Maximum Pods per node, atau terima nilai default, 110. Setelah cluster dibuat, Anda tidak dapat memperbarui nilai ini.

    Pod maksimum per node (disebut sebagai kepadatan Pod} juga dibatasi oleh resource IP cluster Anda yang tersedia. Untuk mengetahui detailnya, lihat Jejaring pod.

  4. Klik Next.

  5. Di halaman Networking, tentukan cara node dan komponen dalam cluster tersebut berkomunikasi satu sama lain dan dengan bidang kontrol Kubernetes.

    Untuk informasi selengkapnya, tahan kursor ke di samping setiap kolom.

  6. Klik Verifikasi dan Buat.

    Konsol akan menampilkan pesan status saat memverifikasi setelan dan membuat cluster di pusat data Anda.

    Jika ada masalah dengan konfigurasi, konsol akan menampilkan pesan error yang seharusnya cukup jelas bagi Anda untuk memperbaiki masalah konfigurasi, lalu coba lagi untuk membuat cluster.

gcloud CLI

Sebelum membuat cluster admin, pastikan bahwa cluster bootstrap telah terdaftar sebagai anggota fleet:

gcloud container fleet memberships list \
  --project=FLEET_HOST_PROJECT_ID

Jika cluster bootstrap tidak tercantum, periksa nama cluster bootstrap dan ID project yang Anda tentukan untuk bmctl register bootstrap. Jika Anda perlu mengubah nama cluster bootstrap atau project ID, masukkan Ctrl-C untuk keluar dari bmctl register bootstrap dan jalankan kembali perintah tersebut.

Gunakan perintah berikut untuk membuat cluster admin:

gcloud container bare-metal admin-clusters create

Sebagian besar tanda yang Anda tentukan ke perintah berkaitan dengan kolom dalam file konfigurasi cluster pengguna.

Untuk membuat cluster admin dengan load balancer yang dipaketkan:

gcloud container bare-metal admin-clusters create ADMIN_CLUSTER_NAME \
  --project=FLEET_HOST_PROJECT_ID \
  --location=REGION \
  --version=VERSION \
  --max-pods-per-node=MAX_PODS_PER_NODE \
  --control-plane-vip=CONTROL_PLANE_VIP \
  --control-plane-load-balancer-port=CONTROL_PLANE_LOAD_BALANCER_PORT \
  --control-plane-node-configs 'CONTROL_PLANE_NODE_CONFIG' \
  --island-mode-service-address-cidr-blocks=SERVICE_ADDR_CIDR \
  --island-mode-pod-address-cidr-blocks=POD_ADDR_CIDR \
  --lvp-share-path=/mnt/localpv-share \
  --lvp-share-storage-class=local-shared \
  --lvp-node-mounts-config-path=/mnt/localpv-disk \
  --lvp-node-mounts-config-storage-class=local-disks

Jika Anda ingin menggunakan load balancing manual, tambahkan --enable-manual-lb ke perintah.

Ganti kode berikut:

  • ADMIN_CLUSTER_NAME: Nama cluster admin Anda. Nama tidak dapat diubah setelah cluster dibuat.

  • FLEET_HOST_PROJECT_ID: Project tempat cluster admin akan didaftarkan secara otomatis setelah cluster dibuat. Project host fleet tidak dapat diubah setelah cluster dibuat.

  • REGION: Region Google Cloud tempat GKE On-Prem API berjalan. Tentukan us-west1 atau wilayah lain yang didukung. Region tidak dapat diubah setelah cluster dibuat. Setelan ini menentukan region tempat hal berikut akan disimpan:

    • Metadata cluster yang diperlukan GKE On-Prem API untuk mengelola siklus proses cluster
    • Data Cloud Logging dan Cloud Monitoring dari komponen sistem
    • Log Audit Admin yang dibuat oleh Cloud Audit Logs

    Nama cluster, project, dan lokasi bersama-sama mengidentifikasi cluster secara unik di Google Cloud.

  • VERSION: GKE pada versi Bare Metal. Versi harus cocok dengan versi bmctl yang Anda gunakan untuk menjalankan bmctl register bootstrap. Anda dapat memeriksa versi bmctl dengan menjalankan bmctl version di workstation admin.

  • MAX_PODS_PER_NODE : Untuk cluster admin, nilai yang diizinkan adalah 32-250 dan 64-250 untuk cluster non-HA. Nilai default jika --max-pods-per-node tidak disertakan dalam perintah adalah 110. Setelah cluster dibuat, nilai ini tidak dapat diperbarui.

    Pod maksimum per node (disebut kepadatan Pod) juga dibatasi oleh resource IP cluster Anda yang tersedia. Untuk mengetahui detailnya, lihat Jejaring pod.

  • CONTROL_PLANE_VIP: IP virtual (VIP) pada load balancer untuk server Kubernetes API cluster. Sertakan bidang kontrol VIP di subnet yang sama dengan node load balancer. Jangan menyertakan bidang kontrol VIP di kumpulan alamat load balancer.

  • CONTROL_PLANE_LOAD_BALANCER_PORT: Port tempat load balancer menayangkan bidang kontrol. Meskipun Anda dapat mengonfigurasi nilai lain, port 443 adalah port standar yang digunakan untuk koneksi HTTPS.

  • CONTROL_PLANE_NODE_CONFIG: Alamat IPv4 node bidang kontrol. Node bidang kontrol menjalankan beban kerja sistem. Tentukan flag ini untuk setiap node bidang kontrol. Biasanya, Anda memiliki satu mesin jika menggunakan deployment minimum, atau tiga mesin jika menggunakan deployment dengan ketersediaan tinggi (HA). Tentukan jumlah ganjil node agar memiliki kuorum utama untuk HA. Anda dapat mengubah alamat ini setiap kali mengupdate atau mengupgrade cluster.

    Nilai untuk flag memiliki format berikut:

    'node-ip=CP_IP_ADDRESS_1,labels=CP_KEY_1.1=CP_VALUE_1.1;CP_KEY_1.2=CP_VALUE_1.2;...' \
    

    Nilai memiliki segmen yang dimulai dengan kata kunci node-ip dan labels. Pisahkan setiap segmen dengan koma.

    • node-ip: Alamat IP node bidang kontrol. Anda hanya dapat menentukan satu node-ip per flag. Jika Anda perlu menentukan lebih dari satu node, sertakan lagi flag tersebut untuk setiap node.

    • labels: Satu atau beberapa key-value pair yang dilampirkan ke node.

    Perhatikan aturan sintaksis berikut:

    • Letakkan seluruh nilai dalam tanda kutip tunggal.
    • Spasi kosong tidak diizinkan.
    • Pisahkan setiap key-value pair di segmen labels dengan titik koma.

    Contoh:

    --control-plane-node-configs 'node-ip=192.0.2.1' \
    --control-plane-node-configs 'node-ip=192.0.2.2,labels=key2.1=value2.1' \
    --control-plane-node-configs 'node-ip=192.0.2.3,labels=key3.1=value3.1;key3.2=value3.2' \
    
  • SERVICE_ADDR_CIDR: Rentang alamat IPv4, dalam format CIDR, untuk Layanan di cluster Anda. Rentang CIDR harus antara /24 dan /12, dengan /12 memberikan alamat IP terbanyak. Sebaiknya gunakan rentang dalam ruang alamat IP untuk internet pribadi, yang ditentukan dalam RFC 1918, misalnya 10.96.0.0/20.

  • POD_ADDR_CIDR: Rentang alamat IPv4, dalam format CIDR, yang akan digunakan untuk Pod di cluster pengguna. Rentang CIDR harus antara /18 dan /8, dengan /8 memberikan alamat IP terbanyak. Sebaiknya gunakan rentang dalam ruang alamat IP untuk internet pribadi, yang ditentukan dalam RFC 1918, misalnya 192.168.0.0/16.

Anda harus menentukan flag penyimpanan berikut. Contoh perintah mencakup nilai standar. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi penyimpanan lokal.

  • --lvp-share-path: Ini adalah jalur mesin host tempat subdirektori dapat dibuat. PersistentVolume (PV) lokal dibuat untuk setiap subdirektori.

  • --lvp-share-storage-class: Ini adalah StorageClass yang akan digunakan untuk membuat volume persisten. StorageClass dibuat selama pembuatan cluster.

  • --lvp-node-mounts-config-path: Ini adalah jalur mesin host tempat disk yang terpasang dapat ditemukan. PersistentVolume (PV) lokal dibuat untuk setiap pemasangan.

  • --lvp-node-mounts-config-storage: Kelas penyimpanan tempat PV dibuat selama pembuatan cluster.

Untuk mengetahui daftar lengkap flag dan deskripsinya, baca referensi gcloud CLI.

Output dari perintah ini mirip dengan berikut ini:

Waiting for operation [projects/example-project-12345/locations/us-west1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.

Dalam contoh output, string operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179 adalah OPERATION_ID dari operasi yang berjalan lama. Anda dapat mengetahui status operasi dengan perintah berikut:

gcloud container bare-metal operations describe OPERATION_ID \
  --project=FLEET_HOST_PROJECT_ID \
  --location=REGION

Untuk mengetahui informasi selengkapnya, baca artikel gcloud container bare-metal operations.

Memperbaiki error preflight

Sebelum membuat cluster, bmctl menjalankan serangkaian pemeriksaan preflight untuk memverifikasi konfigurasi. Jika ada masalah dengan konfigurasi, perintah gcloud ... create akan keluar dengan error yang mirip dengan:

ERROR: (gcloud.beta.container.bare-metal.admin-clusters.create) Invalid resource state for "projects/694677185633/locations/us-west1/bareMetalAdminClusters/abm-cluster-1": cluster preflight checks failed

Misalnya, asumsikan bahwa pemeriksaan preflight gagal karena node bidang kontrol tidak dapat dijangkau. Di workstation admin, Anda akan melihat sesuatu yang mirip dengan contoh berikut:

[2023-03-27 20:34:38+0000] Waiting for preflight check job to finish... OK
[2023-03-27 20:35:58+0000] - Validation Category: machines and network
[2023-03-27 20:35:58+0000]    - [PASSED] pod-cidr
[2023-03-27 20:35:58+0000]    - [FAILED] node-network (log: bmctl-workspace/log/register-bootstrap-20230327-201548/node-network)
[2023-03-27 20:35:58+0000]        - Failed to connect to the host via ssh: ssh: connect to host 10.100.0.5 port 22: Connection timed out
[2023-03-27 20:35:58+0000] Flushing logs... OK
[2023-03-27 20:35:58+0000] Error polling the preflight check abm-cluster-mar-27 in the cluster-abm-cluster-mar-27: preflight check failed
  1. Di workstation admin, pastikan proses bmctl register bootstrap masih berjalan. Jika tidak, jalankan kembali perintah dengan argumen yang sama dan tambahkan flag --reuse-bootstrap-cluster=true.

  2. Jalankan gcloud ... update untuk memperbaiki alamat IP yang tidak valid:

    gcloud container bare-metal admin-clusters update ADMIN_CLUSTER_NAME \
      --project=FLEET_HOST_PROJECT_ID \
      --location=REGION \
      --control-plane-node-configs 'node-ip=NEW_NODE_ID_ADDRESS'
    

    Untuk mengetahui informasi selengkapnya, lihat gcloud container bare-metal admin-clusters update.

Detail tentang proses pembuatan cluster adalah output di workstation admin Anda. Jika pemeriksaan preflight lulus, Anda akan melihat hasil seperti berikut:

[2023-03-22 23:12:47+0000] Waiting for cluster kubeconfig to become ready OK
[2023-03-22 23:15:47+0000] Writing kubeconfig file
[2023-03-22 23:15:47+0000] kubeconfig of cluster being created is present at bmctl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig
[2023-03-22 23:15:47+0000] Please restrict access to this file as it contains authentication credentials of your cluster.
[2023-03-22 23:15:47+0000] Waiting for cluster to become ready OK
[2023-03-22 23:20:17+0000] Please run
[2023-03-22 23:20:17+0000] kubectl --kubeconfig bmctl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig get nodes
[2023-03-22 23:20:17+0000] to get cluster nodes status.
[2023-03-22 23:20:17+0000] Waiting for node pools to become ready OK
[2023-03-22 23:20:37+0000] Waiting for metrics to become ready in GCP OK
[2023-03-22 23:25:38+0000] Waiting for cluster API provider to install in the created admin cluster OK
[2023-03-22 23:25:48+0000] Moving admin cluster resources to the created admin cluster
[2023-03-22 23:25:51+0000] Waiting for node update jobs to finish OK
[2023-03-22 23:27:41+0000] Flushing logs... OK
[2023-03-22 23:27:41+0000] Deleting membership... OK
[2023-03-22 23:27:42+0000] Deleting bootstrap cluster.

Menghubungkan ke cluster admin

Perintah bmctl register bootstrap membuat file kubeconfig untuk cluster admin di workstation admin Anda. Direktori tempat kubeconfig berada dan nama filenya didasarkan pada nama cluster admin sebagai berikut:

bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig

Anda harus membatasi akses ke kubeconfig ini karena berisi kredensial autentikasi untuk cluster.

Jika ingin menggunakan identitas Google Anda untuk login ke cluster, Anda dapat menyiapkan gateway koneksi sebagai berikut:

  1. Di workstation admin Anda, tetapkan variabel lingkungan KUBECONFIG:

    export KUBECONFIG=$HOME/bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig
    
  2. Setel konteks saat ini dalam variabel lingkungan:

    export CONTEXT="$(kubectl config current-context)"
    
  3. Jalankan perintah gcloud berikut. Perintah ini akan melakukan hal berikut:

    • Memberikan peran clusterrole/view Kubernetes kepada akun pengguna Anda di cluster.
    • Mengonfigurasi cluster sehingga Anda dapat menjalankan perintah kubectl hanya baca di komputer lokal tanpa harus menjalankan SSH ke workstation admin.

    Ganti GOOGLE_ACCOUNT_EMAIL dengan alamat email yang terkait dengan akun Google Cloud Anda. Contoh: --users=alex@example.com.

    gcloud container fleet memberships generate-gateway-rbac  \
        --membership=ADMIN_CLUSTER_NAME \
        --role=clusterrole/view \
        --users=GOOGLE_ACCOUNT_EMAIL \
        --project=FLEET_HOST_PROJECT_ID \
        --kubeconfig=$KUBECONFIG \
        --context=$CONTEXT\
        --apply
    

    Output perintah ini mirip dengan berikut ini, yang dipotong agar mudah dibaca:

    Validating input arguments.
    Specified Cluster Role is: clusterrole/view
    Generated RBAC policy is:
    --------------------------------------------
    ...
    
    Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster.
    Successfully applied the RBAC policy to cluster.
    

Dengan kebijakan RBAC ini, Anda dapat login ke cluster dari konsol menggunakan identitas Google Anda. Selain itu, Anda dapat menjalankan perintah kubectl hanya baca di komputer selain workstation admin menggunakan kubeconfig khusus yang merutekan permintaan melalui gateway koneksi.

  1. Jalankan perintah berikut di komputer selain workstation admin untuk mendapatkan entri kubeconfig yang dapat mengakses cluster melalui gateway koneksi.

    gcloud container fleet memberships get-credentials ADMIN_CLUSTER_NAME \
        --project=FLEET_HOST_PROJECT_ID
    

    Outputnya mirip dengan hal berikut ini:

    Starting to build Gateway kubeconfig...
    Current project_id: FLEET_HOST_PROJECT_ID
    A new kubeconfig entry "connectgateway_FLEET_HOST_PROJECT_ID_global_ADMIN_CLUSTER_NAME" has been generated and set as the current context.
    
  2. Anda kini dapat menjalankan perintah kubectl melalui gateway koneksi:

    kubectl get pods -A
    

Langkah selanjutnya