Membuat cluster hybrid

Di Google Distributed Cloud, cluster campuran menjalankan peran ganda cluster admin dan cluster pengguna. Node ini menjalankan beban kerja, dan pada saat yang sama, mengelola cluster lain, dan dirinya sendiri.

Cluster campuran menghilangkan kebutuhan untuk menjalankan cluster admin terpisah dalam skenario yang dibatasi resource, dan dapat memberikan keandalan ketersediaan tinggi (HA). Dalam cluster hybrid HA, jika satu node gagal, node lain akan menggantikannya.

Cluster campuran berbeda dengan cluster mandiri karena juga dapat mengelola cluster lain. Cluster mandiri tidak dapat membuat atau mengelola cluster lain.

Namun, saat Anda membuat cluster hybrid, ada beberapa kompromi antara fleksibilitas dan keamanan. Karena cluster hibrida mengelola dirinya sendiri, menjalankan workload di cluster yang sama akan meningkatkan risiko eksposur keamanan terhadap data administrasi sensitif, seperti kunci SSH.

Anda membuat cluster campuran dengan bidang kontrol ketersediaan tinggi (HA) menggunakan perintah bmctl. Perintah bmctl dapat dijalankan di workstation terpisah atau di salah satu node cluster hybrid.

Prasyarat

  • bmctl terbaru didownload (gs://anthos-baremetal-release/bmctl/1.30.300-gke.84/linux-amd64/bmctl) dari Cloud Storage.
  • Workstation yang menjalankan bmctl memiliki konektivitas jaringan ke semua node dalam cluster hybrid target.
  • Workstation yang menjalankan bmctl memiliki konektivitas jaringan ke VIP bidang kontrol cluster hybrid target.
  • Kunci SSH yang digunakan untuk membuat cluster hybrid tersedia untuk root, atau ada akses pengguna SUDO di semua node di cluster hybrid target.
  • Akun layanan Connect-register dikonfigurasi untuk digunakan dengan Connect.

Lihat panduan memulai Google Distributed Cloud untuk mengetahui petunjuk langkah demi langkah yang diperluas guna membuat cluster campuran.

Mengaktifkan SELinux

Jika ingin mengaktifkan SELinux untuk mengamankan penampung, Anda harus memastikan bahwa SELinux diaktifkan dalam mode Enforced di semua mesin host. Mulai dari rilis Google Distributed Cloud 1.9.0 atau yang lebih baru, Anda dapat mengaktifkan atau menonaktifkan SELinux sebelum atau setelah pembuatan cluster atau upgrade cluster. SELinux diaktifkan secara default di Red Hat Enterprise Linux (RHEL). Jika SELinux dinonaktifkan di komputer host atau Anda tidak yakin, lihat Mengamankan penampung menggunakan SELinux untuk mengetahui petunjuk cara mengaktifkannya.

Google Distributed Cloud hanya mendukung SELinux di sistem RHEL.

Login ke gcloud dan buat file konfigurasi cluster

  1. Login ke gcloud CLI sebagai pengguna menggunakan gcloud auth application-default login:

    gcloud auth application-default login
    

    Anda harus memiliki peran Pemilik Project atau Editor untuk menggunakan fitur pengaktifan API otomatis dan pembuatan Akun Layanan, yang dijelaskan di bagian berikut.

    Anda juga dapat menambahkan peran IAM berikut kepada pengguna:

    • Service Account Admin
    • Service Account Key Admin
    • Project IAM Admin
    • Compute Viewer
    • Service Usage Admin

    Atau, jika Anda sudah memiliki akun layanan dengan peran tersebut, jalankan:

    export GOOGLE_APPLICATION_CREDENTIALS=JSON_KEY_FILE
    

    Ganti JSON_KEY_FILE dengan jalur file kunci JSON akun layanan Anda.

  2. Dapatkan project ID Google Cloud Anda untuk digunakan dengan pembuatan cluster:

    export CLOUD_PROJECT_ID=$(gcloud config get-value project)
    

Membuat file konfigurasi cluster dengan bmctl

Setelah login ke gcloud CLI dan menyiapkan project, Anda dapat membuat file konfigurasi cluster dengan perintah bmctl.

Untuk membuat file konfigurasi cluster:

  1. Jalankan perintah berikut untuk membuat file konfigurasi cluster, membuat semua akun layanan yang diperlukan, dan mengaktifkan semua API yang diperlukan:

    bmctl create config -c CLUSTER_NAME</var> --enable-apis \
        --create-service-accounts --project-id=CLOUD_PROJECT_ID
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster yang Anda buat.
    • CLOUD_PROJECT_ID: ID project Google Cloud Anda.

    Secara default, file konfigurasi ditulis ke bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME.yaml.

    Jika sudah mengaktifkan API dan membuat akun layanan, Anda dapat membuat file konfigurasi tanpa mengaktifkan API dan membuat akun layanan. Anda juga tidak diwajibkan untuk menggunakan flag --project-id. Namun, Anda harus menentukan kredensial dalam file konfigurasi secara manual.

    Untuk informasi selengkapnya tentang opsi perintah, lihat membuat konfigurasi.

Mengedit file konfigurasi cluster

Setelah memiliki file konfigurasi cluster, edit file tersebut untuk membuat perubahan berikut:

  1. Berikan kunci pribadi SSH untuk mengakses node cluster hybrid:

    # bmctl configuration variables. Because this section is valid YAML but not a valid Kubernetes
    # resource, this section can only be included when using bmctl to
    # create the initial admin/hybrid cluster. Afterwards, when creating user clusters by directly
    # applying the cluster and node pool resources to the existing cluster, you must remove this
    # section.
    gcrKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-gcr.json
    sshPrivateKeyPath: /path/to/your/ssh_private_key
    gkeConnectAgentServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-connect.json
    gkeConnectRegisterServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-register.json
    cloudOperationsServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-cloud-ops.json
    
  2. Daftarkan cluster Anda ke fleet. Project ID yang Anda tentukan dalam perintah bmctl create config akan otomatis ditambahkan ke kolom gkeConnect.projectID dalam file konfigurasi cluster. Project ini disebut sebagai project host fleet.

    • Jika Anda membuat file konfigurasi, menggunakan fitur pengaktifan API otomatis dan pembuatan Akun Layanan, Anda dapat melewati langkah ini.
    • Jika Anda membuat file konfigurasi tanpa menggunakan fitur pengaktifan API otomatis dan pembuatan Akun Layanan, referensikan kunci JSON akun layanan yang didownload di kolom gkeConnectAgentServiceAccountKeyPath dan gkeConnectRegisterServiceAccountKeyPath yang sesuai dari file konfigurasi cluster.
  3. Ubah konfigurasi untuk menentukan jenis cluster hybrid, bukan admin:

    spec:
      # Cluster type. This can be:
      #   1) admin:  to create an admin cluster. This can later be used to create user clusters.
      #   2) user:   to create a user cluster. Requires an existing admin cluster.
      #   3) hybrid: to create a hybrid cluster that runs admin cluster components and user workloads.
      #   4) standalone: to create a cluster that manages itself, runs user workloads, but does not manage other clusters.
      type: hybrid
    
  4. Ubah konfigurasi untuk menentukan bidang kontrol ketersediaan tinggi multi-node. Anda ingin menentukan jumlah node ganjil agar dapat memiliki kuorum mayoritas untuk HA:

      # Control plane configuration
      controlPlane:
        nodePoolSpec:
          nodes:
          # Control plane node pools. Typically, this is either a single machine
          # or 3 machines if using a high availability deployment.
          - address: 10.200.0.4
          - address: 10.200.0.5
          - address: 10.200.0.6
    
  5. Tentukan kepadatan pod node cluster:

    ....
    # NodeConfig specifies the configuration that applies to all nodes in the cluster.
    nodeConfig:
      # podDensity specifies the pod density configuration.
      podDensity:
        # maxPodsPerNode specifies at most how many pods can be run on a single node.
        maxPodsPerNode: 250
    ....
    

    Untuk cluster campuran, nilai yang diizinkan untuk maxPodsPerNode adalah 32-250 untuk cluster HA dan 64-250 untuk cluster non-HA. Nilai default untuk maxPodsPerNode jika tidak ditentukan adalah 110. Setelah cluster dibuat, nilai ini tidak dapat diperbarui.

    Kepadatan pod juga dibatasi oleh resource IP yang tersedia di cluster Anda. Untuk mengetahui detailnya, lihat Jaringan pod.

Membuat cluster hybrid dengan konfigurasi cluster

Gunakan perintah bmctl untuk membuat cluster:

bmctl create cluster -c CLUSTER_NAME

Ganti CLUSTER_NAME dengan nama yang Anda gunakan saat membuat file konfigurasi cluster di bagian sebelumnya.

Berikut adalah contoh perintah untuk membuat cluster bernama hybrid1:

bmctl create cluster -c hybrid1

Contoh konfigurasi cluster hybrid

Misalnya, konfigurasi cluster hybrid, lihat Cluster hybrid di Contoh konfigurasi cluster.