Membuat cluster mandiri

Halaman ini menunjukkan cara membuat cluster mandiri, yang merupakan cluster mandiri yang menjalankan beban kerja. Cluster mandiri tidak mengelola cluster lain, sehingga tidak perlu menjalankan cluster admin terpisah dalam skenario yang dibatasi resource. Selain itu, cluster mandiri menawarkan dua profil penginstalan yang dapat dipilih:

  • Default: Profil default memiliki persyaratan resource yang terbatas.
  • Edge: Profil edge telah mengurangi persyaratan resource sistem secara signifikan dan direkomendasikan untuk perangkat edge dengan batasan resource yang tinggi.

Sebelum membuat cluster mandiri, pertimbangkan kompromi antara mengurangi resource dan keamanan secara keseluruhan. Karena cluster mandiri mengelola dirinya sendiri, menjalankan beban kerja di cluster yang sama akan meningkatkan risiko mengekspos data administrasi sensitif, seperti kunci SSH.

Prasyarat

Sebelum membuat cluster mandiri, pastikan hal berikut:

  • 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 di cluster mandiri target.
  • Workstation yang menjalankan bmctl memiliki konektivitas jaringan ke VIP bidang kontrol cluster mandiri target.
  • Kunci SSH yang digunakan untuk membuat cluster mandiri tersedia untuk root, atau ada akses pengguna SUDO di semua node di cluster mandiri target.
  • Akun layanan Connect-register dikonfigurasi untuk digunakan dengan Connect.

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.

Membuat cluster mandiri

Anda dapat membuat cluster mandiri yang memiliki satu bidang node kontrol menggunakan perintah bmctl. Jenis konfigurasi ini mengurangi konsumsi resource, tetapi tidak menyediakan ketersediaan tinggi (HA), dan cluster yang dihasilkan memiliki satu titik kegagalan.

Anda juga dapat membuat cluster mandiri HA. Dalam mode HA, jika node gagal, node lainnya akan menggantikannya. Untuk membuat cluster mandiri HA, Anda harus menentukan setidaknya tiga node untuk bidang kontrol.

Perintah bmctl biasanya dapat dijalankan di workstation terpisah atau di salah satu node cluster mandiri. Namun, jika Anda membuat cluster mandiri dengan profil edge yang diaktifkan dan telah mengonfigurasi resource minimum yang diperlukan, sebaiknya jalankan bmctl di workstation terpisah.

Login ke gcloud

  1. Login ke gcloud sebagai pengguna:

    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 ke 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 mandiri

Setelah login ke gcloud CLI dan menyiapkan project, Anda dapat membuat file konfigurasi cluster dengan perintah bmctl. Dalam contoh ini, semua akun layanan otomatis dibuat oleh perintah bmctl create config:

bmctl create config -c STANDALONE_CLUSTER_NAME --enable-apis \
    --create-service-accounts --project-id=$CLOUD_PROJECT_ID

Ganti kode berikut:

  • STANDALONE_CLUSTER_NAME dengan nama cluster mandiri yang ingin Anda buat.

Contoh

Perintah berikut akan membuat file konfigurasi untuk cluster mandiri yang disebut standalone1 yang dikaitkan dengan project ID my-gcp-project:

bmctl create config -c standalone1 --create-service-accounts --project-id=my-gcp-project

File ditulis ke bmctl-workspace/standalone1/standalone1.yaml.

Sebagai alternatif untuk mengaktifkan API dan membuat akun layanan secara otomatis, Anda juga dapat memberikan akun layanan yang ada jika memiliki izin IAM yang sesuai. Dengan cara ini, Anda dapat melewati pembuatan akun layanan otomatis di langkah sebelumnya dalam perintah bmctl:

bmctl create config -c standalone1

Mengedit file konfigurasi cluster

Setelah memiliki file konfigurasi cluster, buat perubahan berikut pada file tersebut:

  1. Tambahkan kunci pribadi SSH untuk mengakses node cluster mandiri:

    # 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 dalam file konfigurasi cluster.
  3. Ubah konfigurasi untuk menentukan jenis cluster standalone, bukan admin. Jika Anda ingin mengaktifkan profil edge untuk meminimalkan konsumsi resource, tentukan profile: edge:

    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: standalone
      # Edge profile minimizes the resource consumption of Google Distributed Cloud. It is only available for standalone clusters.
      profile: edge
    
  4. (Opsional) Ubah konfigurasi untuk menentukan bidang kontrol multi-node dengan ketersediaan tinggi. Tentukan 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
    

    Jika Anda memiliki node dalam jumlah genap untuk sementara saat menambahkan atau menghapus node untuk pemeliharaan atau penggantian, deployment Anda akan mempertahankan HA selama Anda memiliki kuorum.

  5. Dalam file konfigurasi cluster, isi atau edit detail jaringan cluster:

    • clusterNetwork.pods.cidrBlocks: rentang alamat IP dalam notasi blok CIDR untuk digunakan oleh Pod. Nilai awal yang direkomendasikan, yang diisi otomatis dalam file konfigurasi cluster yang dihasilkan, adalah 192.168.0.0/16.

    • clusterNetwork.services.cidrBlocks: rentang alamat IP dalam notasi blok CIDR untuk digunakan oleh Layanan. Nilai awal yang direkomendasikan, yang diisi otomatis dalam file konfigurasi cluster yang dihasilkan, adalah 10.96.0.0/20.

    • loadBalancer.vips.controlPlaneVIP: alamat IP virtual (VIP) untuk server Kubernetes API cluster.

    • loadBalancer.vips.ingressVIP: alamat VIP yang akan digunakan sebagai alamat eksternal untuk proxy masuk.

    • loadBalancer.addressPools.addresses:: rentang sepuluh alamat IP untuk digunakan sebagai alamat IP eksternal untuk Layanan jenis LoadBalancer. Perhatikan bahwa rentang ini mencakup VIP masuk, yang diperlukan oleh MetalLB. Tidak ada alamat IP lain yang dapat tumpang-tindih dengan rentang ini.

  6. 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 mandiri, nilai yang diizinkan untuk maxPodsPerNode adalah 32-250 untuk cluster HA dan 64-250 untuk cluster non-HA. Nilai defaultnya adalah 110 jika tidak ditentukan. 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 mandiri dengan konfigurasi cluster

Gunakan perintah bmctl untuk men-deploy cluster mandiri:

bmctl create cluster -c CLUSTER_NAME

Ganti CLUSTER_NAME dengan nama cluster yang Anda buat di bagian sebelumnya.

Berikut adalah contoh perintah untuk membuat cluster yang disebut standalone1:

bmctl create cluster -c standalone1

Contoh konfigurasi cluster mandiri

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