Software Distributed Cloud hanya memungkinkan Anda membuat penginstalan bukti konsep kecil untuk cluster GKE di hardware bare metal Anda. Di bagian pertama dari tutorial dua bagian ini, Anda akan menyiapkan lingkungan hardware minimal dan merencanakan alamat IP Anda. Di bagian kedua, Membuat cluster dasar, Anda akan membuat cluster admin dan cluster pengguna.
Dokumen ini ditujukan untuk Admin, arsitek, dan Operator yang menyiapkan, memantau, dan mengelola siklus proses infrastruktur. Untuk mempelajari lebih lanjut peran dan tugas umum, lihat Peran dan tugas pengguna GKE umum.
Infrastruktur minimal ini tidak ditujukan untuk workload produksi. Untuk penginstalan produksi, lihat Memilih model deployment.
Sebelum memulai
- Baca Tentang Google Distributed Cloud.
- Pahami beberapa konsep dasar Google Cloud , termasuk project, izin IAM, dan akun layanan.
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Catat project ID Google Cloud , karena Anda akan membutuhkannya nanti.
Ringkasan prosedur
Untuk menyiapkan infrastruktur minimal, Anda harus menyelesaikan langkah-langkah berikut:
Siapkan workstation admin Anda. Siapkan workstation admin Linux untuk tugas pengelolaan lokal. Mesin ini dapat berupa mesin yang sudah ada atau khusus, yang dapat mengelola beberapa cluster.
Siapkan mesin node cluster Anda. Siapkan setidaknya tiga mesin untuk node: satu node cluster admin, satu node bidang kontrol cluster pengguna, dan satu worker node cluster pengguna.
Merencanakan jaringan Anda. Rencanakan alamat IP untuk mesin node, alamat IP virtual (VIP), serta rentang CIDR Service dan Pod.
Tinjau resource Google Cloud yang diperlukan. Untuk membuat cluster, projectGoogle Cloud Anda memerlukan Google API dan akun layanan tertentu.
1. Menyiapkan workstation admin
Workstation admin menghosting alat dan file konfigurasi untuk membuat dan bekerja dengan cluster Anda.
Persyaratan hardware
Workstation admin memerlukan daya komputasi, memori, dan penyimpanan yang signifikan untuk menjalankan alat dan menyimpan resource yang terkait dengan pembuatan dan pengelolaan cluster.
Pastikan workstation admin Anda memenuhi persyaratan hardware berikut:
- Minimal 2 core CPU
- RAM minimal 4 GiB
- Penyimpanan minimal 128 GiB
Persyaratan sistem operasi
Untuk menjalankan bmctl dan membuat cluster, workstation admin
memiliki persyaratan sistem operasi (OS) yang sama dengan node. Setiap mesin harus menjalankan
Ubuntu versi yang didukung.
Mengonfigurasi sistem operasi dan software
Di workstation admin, Anda menginstal dan mengonfigurasi hal berikut:
Mengonfigurasi Ubuntu
Menginstal gcloud CLI
Menginstal
kubectlMenginstal
bmctl
Mengonfigurasi sistem operasi
Jalankan perintah berikut untuk mengupdate setelan firewall, menginstal dan mengonfigurasi Docker, serta memastikan setiap mesin menggunakan sinkronisasi waktu:
Nonaktifkan Uncomplicated Firewall (UFW) dan verifikasi statusnya:
sudo ufw disable sudo ufw statusHapus versi Docker sebelumnya, update pengelola paket, dan instal Docker versi terbaru:
sudo apt-get remove docker docker-engine docker.io containerd runc sudo apt-get update sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common \ docker.ioPastikan Anda sekarang menjalankan Docker versi 19.03+:
sudo docker versionVersi Klien dan Server harus 19.03 atau yang lebih tinggi seperti yang ditunjukkan dalam contoh respons berikut:
Client: Version: 20.10.21 API version: 1.41 Go version: go1.18.1 ... Server: Engine: Version: 20.10.21 API version: 1.41 (minimum version 1.12) Go version: go1.18.1 ...Buat grup
docker.sudo groupadd dockerTambahkan diri Anda ke grup Docker:
sudo usermod -aG docker $USERAktifkan perubahan grup Anda:
newgrp dockerPastikan jam sistem disinkronkan:
timedatectlOutput
timedatectlberisi status berikut:System clock synchronized: yes
Menginstal Google Cloud CLI
Untuk menginstal Google Cloud CLI di Ubuntu, ikuti petunjuk dalam panduan penginstalan ini.
Lakukan langkah-langkah berikut di workstation admin Anda untuk mengonfigurasi gcloud CLI:
Login untuk menetapkan properti
accountgcloud CLI Anda:gcloud auth loginTetapkan properti
projectgcloud CLI Anda:gcloud config set project PROJECT_IDGanti
PROJECT_IDdengan ID project Google Cloud Anda.Pastikan properti
accountdanprojectAnda ditetapkan dengan benar:gcloud config listOutput akan menampilkan nilai properti
accountdanprojectAnda. Contoh:[core] account = my-name@google.com disable_usage_reporting = False project = my-project-1234 Your active configuration is: [default]
Instal kubectl
Untuk menginstal kubectl:
Jalankan perintah berikut di workstation admin Anda:
gcloud components install kubectl
Instal bmctl
bmctl adalah alat command line eksklusif untuk Google Distributed Cloud yang dapat Anda gunakan untuk pembuatan dan pengelolaan cluster.
Instal bmctl di workstation admin Anda:
Buat direktori
baremetaldan tambahkan ke jalur Anda. Jika Anda berada di direktori utama, perintahnya adalah:mkdir baremetal export PATH="$HOME/baremetal:$PATH"Jalankan perintah berikut untuk mendownload versi terbaru file biner
bmctldan membuatnya dapat dieksekusi:gcloud storage cp gs://anthos-baremetal-release/bmctl/1.36.200-gke.118/linux-amd64/bmctl . chmod +x ./bmctlPastikan
bmctltelah diinstal dan dapat dieksekusi:bmctl versionResponsnya akan terlihat seperti berikut:
[2023-05-12 17:36:16+0000] bmctl version: 1.14.2-gke.11, git commit: 4ff1347446a93925a079000b50437d4ecebcdf3a, build date: Mon Feb 27 14:07:30 PST 2023
Konektivitas
Workstation admin memerlukan akses ke Google Cloud dan semua node cluster Anda.
Akses ke Google Cloud
Workstation admin mengakses Google Cloud untuk mendownload dan menginstal alat dan image, memproses permintaan otorisasi, membuat akun layanan, mengelola logging dan pemantauan, dan lainnya. Anda tidak dapat membuat cluster tanpa akses keGoogle Cloud.
Akses dari workstation admin
Untuk membuat dan mengelola cluster dari workstation admin, Anda memerlukan akses berikut ke mesin node:
- Konektivitas Lapisan 3 ke semua mesin node cluster.
- Akses ke VIP bidang kontrol.
- Akses SSH tanpa sandi ke semua mesin node cluster sebagai
rootatau sebagai pengguna dengan hak istimewasudotanpa sandi.
Bagian berikut berisi petunjuk untuk menyiapkan SSH di workstation admin dan mesin node.
2. Menyiapkan mesin node cluster
Untuk penginstalan minimal satu cluster admin ketersediaan non-tinggi dan satu cluster pengguna ketersediaan non-tinggi, Anda memerlukan tiga mesin:
Mesin untuk cluster admin dengan satu node bidang kontrol.
Dua mesin untuk cluster pengguna dengan satu node bidang kontrol dan satu worker node.
Persyaratan hardware
Setiap mesin node harus memenuhi persyaratan hardware berikut:
- Minimal 2 core CPU
- RAM minimal 4 GiB
- Penyimpanan minimal 128 GiB
Persyaratan sistem operasi
Setiap mesin node harus menjalankan versi Ubuntu yang didukung.
Mengonfigurasi Ubuntu
Konfigurasikan Ubuntu di setiap node dengan petunjuk yang sama dengan yang digunakan untuk workstation admin.
Menyiapkan akses SSH ke node
Workstation admin memerlukan akses SSH tanpa sandi ke semua mesin node cluster. Anda dapat menyiapkan SSH sebagai root atau dengan pengguna yang memiliki hak istimewa sudo tanpa sandi.
Berikut adalah langkah-langkah umum untuk menyiapkan SSH untuk Google Distributed Cloud:
Instal dan konfigurasi SSH di semua mesin.
Buat kunci SSH dan salin kunci publik ke setiap mesin node.
Nonaktifkan autentikasi sandi di mesin node.
Verifikasi akses SSH antara workstation admin dan mesin node.
Menginstal dan mengonfigurasi SSH di semua mesin
Google Distributed Cloud memerlukan komunikasi SSH tanpa sandi antara workstation admin dan node cluster. Lakukan langkah-langkah berikut di workstation admin dan setiap mesin node.
Untuk mengonfigurasi SSH di mesin yang menjalankan Ubuntu:
Jika Anda belum memiliki server SSH yang berjalan, instal sekarang:
sudo apt update sudo apt install openssh-server sudo systemctl status sshAktifkan autentikasi sandi SSH
rootdengan menghapus tanda komentar atau menambahkan barisPermitRootLogindanPasswordAuthenticationdi file/etc/ssh/sshd_configdan menetapkan nilainya keyes:# Authentication: #LoginGraceTime 2m PermitRootLogin yes #StrictModes yes #MaxAuthTries 6 #MaxSessions 10 ... PasswordAuthentication yesTetapkan sandi root:
sudo passwd rootUntuk menerapkan perubahan konfigurasi SSH, mulai ulang layanan SSH:
sudo systemctl restart ssh.serviceMulai ulang komputer.
Pastikan SSH berfungsi dengan membuat koneksi SSH dari komputer lain.
Membuat kunci SSH dan menyalin kunci publik ke setiap mesin node
Untuk koneksi yang aman dan tanpa sandi antara workstation admin dan node, buat kunci SSH di workstation admin Anda dan bagikan kunci publik ke node.
Di workstation admin, buat pasangan kunci pribadi dan publik. Jangan tetapkan frasa sandi untuk kunci:
ssh-keygen -t rsaDi workstation admin, salin kunci publik yang dihasilkan ke setiap mesin node Anda:
ssh-copy-id -i PUBLIC_KEY root@CLUSTER_NODE_IPGanti kode berikut:
PUBLIC_KEY: jalur ke file yang berisi kunci publik SSH. Secara default, jalurnya adalah/home/USERNAME/.ssh/id_rsa.pubCLUSTER_NODE_IP: alamat IP mesin node
Menonaktifkan autentikasi sandi di mesin node
Pada tahap ini, Anda tidak perlu lagi mengaktifkan autentikasi sandi.
Untuk setiap mesin node:
Buka
/etc/ssh/sshd_configdan tetapkanPasswordAuthenticationkeno, lalu simpan file.Mulai ulang layanan SSH.
sudo systemctl restart ssh.service
Memverifikasi akses SSH antara workstation admin dan mesin node
Jika SSH dikonfigurasi dengan benar, Anda dapat membuat koneksi SSH ke mesin node dari workstation admin (sebagai root) tanpa sandi.
Pastikan autentikasi kunci publik berfungsi antara workstation admin dan node cluster Anda:
Di workstation admin, jalankan perintah berikut untuk setiap mesin node:
ssh -o IdentitiesOnly=yes -i PRIVATE_KEY root@CLUSTER_NODE_IPGanti kode berikut:
PRIVATE_KEY: jalur ke file yang berisi kunci pribadi SSH. Secara default, jalurnya adalah/home/USERNAME/.ssh/id_rsaCLUSTER_NODE_IP: alamat IP mesin node
3. Merencanakan jaringan Anda
Saat menginstal cluster, Anda harus merencanakan alamat IP, termasuk memastikan bahwa Anda tidak membuat konflik alamat. Anda mungkin memerlukan administrator jaringan untuk membantu Anda menemukan alamat yang sesuai, bahkan untuk penginstalan sederhana ini. Tidak termasuk CIDR Pod dan Service, Anda memerlukan setidaknya 15 alamat IP unik untuk penginstalan cluster admin dan cluster pengguna minimum.
Rencanakan dan tentukan alamat IP untuk komponen cluster berikut:
- Node cluster: Anda memerlukan alamat IP untuk setiap mesin node
- Alamat IP virtual (VIP): Anda memerlukan VIP untuk akses ke server Kubernetes API, proxy ingress, dan Service jenis LoadBalancer
- Pod dan Service: Anda memerlukan rentang alamat CIDR untuk mengakomodasi setiap Pod dan Service yang berjalan di cluster Anda
Bagian selanjutnya dari artikel ini berisi contoh ilustratif nilai yang berfungsi untuk penginstalan ini dalam jaringan hipotetis - nilai Anda akan berbeda.
Untuk penginstalan kecil ini, tempatkan workstation admin, node cluster admin, dan node cluster pengguna di domain Lapisan 2 yang sama. Misalnya, semua alamat IP dalam rentang 172.16.20.0/24 dirutekan ke domain Lapisan 2 tertentu. Misalkan juga administrator jaringan Anda mengatakan bahwa Anda dapat menggunakan 172.16.20.10 - 172.16.20.12 untuk alamat mesin node dan 172.16.0.13 - 172.16.20.24 untuk VIP.
Diagram berikut mengilustrasikan domain Lapisan 2 yang memiliki workstation admin, cluster admin, dan cluster pengguna:
Contoh alamat IP node cluster
Tabel berikut memberikan contoh cara penggunaan alamat IP untuk node cluster:
| Mesin | Deskripsi | Alamat IP |
|---|---|---|
| Node bidang kontrol cluster admin | Mesin fisik yang berfungsi sebagai node bidang kontrol untuk cluster admin | 172.16.20.10 |
| Node bidang kontrol cluster pengguna | Mesin fisik yang berfungsi sebagai node bidang kontrol untuk cluster pengguna | 172.16.20.11 |
| Worker node cluster pengguna | Mesin fisik yang menjalankan workload pengguna | 172.16.20.12 |
Contoh alamat IP virtual (VIP)
Tabel berikut memberikan contoh cara menentukan VIP untuk cluster Anda:
| VIP | Deskripsi | Alamat IP |
|---|---|---|
| Alamat VIP bidang kontrol cluster admin | Alamat VIP bidang kontrol cluster admin (server API Kubernetes cluster admin) | 172.16.20.13 |
| Alamat VIP bidang kontrol cluster pengguna | Alamat VIP bidang kontrol cluster pengguna (server Kubernetes API cluster pengguna) | 172.16.20.14 |
| Alamat VIP Ingress | VIP Ingress (disertakan dalam rentang kumpulan alamat MetalLB) | 172.16.20.15 |
| Alamat VIP layanan | Sepuluh alamat untuk digunakan sebagai alamat IP eksternal untuk Service jenis LoadBalancer. Alamat dialokasikan sesuai kebutuhan pada node cluster pengguna.
Rentang ini mencakup VIP ingress. Tumpang tindih alamat IP ini merupakan persyaratan untuk MetalLB, load balancer paket default. |
172.16.20.15 - 172.16.20.24 |
Alamat IP untuk Pod dan Service
Selain alamat IP yang telah Anda tentukan untuk node cluster dan VIP,
Anda perlu menentukan alamat untuk Pod dan Service. Anda menentukan rentang CIDR yang akan digunakan untuk alamat IP Pod dan rentang CIDR lain yang akan digunakan untuk alamat ClusterIP Service Kubernetes. Gunakan alamat IP di ruang alamat pribadi, seperti yang dijelaskan dalam RFC 1918.
Alamat ini ditentukan sebagai bagian dari konfigurasi cluster, seperti yang diilustrasikan di bagian berikutnya dalam panduan ini.
Sebagai bagian dari perencanaan IP, tentukan rentang CIDR yang ingin Anda gunakan untuk Pod dan Service. Kecuali jika Anda memiliki alasan untuk melakukan sebaliknya, gunakan rentang yang disarankan berikut:
| Tujuan | Rentang CIDR yang diisi otomatis |
|---|---|
| Pod cluster admin | 192.168.0.0/16 |
| Service cluster admin | 10.96.0.0/20 |
| Pod cluster pengguna | 192.168.0.0/16 |
| Service cluster pengguna | 10.96.0.0/20 |
Rentang yang disarankan menggambarkan poin-poin berikut:
Rentang Pod CIDR dapat sama untuk beberapa cluster dalam model jaringan island mode default.
Rentang CIDR Service dapat sama untuk beberapa cluster.
Biasanya, Anda memerlukan lebih banyak Pod daripada Service dalam cluster, jadi Anda mungkin menginginkan rentang Pod CIDR yang lebih besar daripada rentang Service CIDR. Misalnya, rentang Pod yang disarankan untuk cluster pengguna memiliki 2(32-16) = 216 alamat, tetapi rentang Service yang disarankan untuk cluster pengguna hanya memiliki 2(32-20) = 212 alamat.
Hindari tumpang tindih
Agar tidak tumpang-tindih dengan alamat IP yang dapat dijangkau di jaringan Anda, Anda mungkin perlu menggunakan rentang CIDR yang berbeda dari saran sebelumnya. Rentang Service dan Pod tidak boleh tumpang-tindih dengan alamat di luar cluster yang ingin Anda jangkau dari dalam cluster.
Misalnya, rentang Service Anda adalah 10.96.232.0/24, dan rentang Pod Anda adalah 192.168.0.0/16. Traffic yang dikirim dari Pod ke alamat di salah satu rentang tersebut diperlakukan sebagai dalam cluster dan tidak dapat menjangkau tujuan apa pun di luar cluster.
Secara khusus, rentang Service dan Pod tidak boleh tumpang-tindih dengan:
Alamat IP node di cluster mana pun
Alamat IP yang digunakan oleh mesin load balancer
VIP yang digunakan oleh node bidang kontrol dan load balancer
Alamat IP server DNS atau server NTP
4. Tinjau resource Google Cloud yang diperlukan
Sebelum Anda dapat membuat cluster, Google Distributed Cloud memerlukan serangkaian Google API tertentu untuk diaktifkan di project Google Cloud terkait. Untuk menggunakan Google API, Google Distributed Cloud memerlukan akun layanan yang dikonfigurasi dengan peran IAM tertentu dalam project Google Cloud terkait.
Proses untuk membuat cluster di bagian berikutnya dalam panduan ini, Membuat cluster dasar, akan mengaktifkan API dan membuat akun layanan untuk Anda secara otomatis.
Berikut adalah Google API yang otomatis diaktifkan:
anthos.googleapis.comanthosaudit.googleapis.comanthosgke.googleapis.comcloudresourcemanager.googleapis.comconnectgateway.googleapis.comcontainer.googleapis.comgkeconnect.googleapis.comgkehub.googleapis.comgkeonprem.googleapis.comiam.googleapis.comlogging.googleapis.commonitoring.googleapis.comopsconfigmonitoring.googleapis.comserviceusage.googleapis.comstackdriver.googleapis.comstorage.googleapis.com
Tabel berikut menjelaskan akun layanan yang dibuat secara otomatis:
| Akun layanan | Tujuan | Peran |
|---|---|---|
| anthos-baremetal-gcr | Google Distributed Cloud menggunakan akun layanan ini untuk mendownload image container dari Artifact Registry. | Tidak ada |
| anthos-baremetal-connect | Connect Agent menggunakan akun layanan ini untuk mempertahankan koneksi antara cluster Anda dan Google Cloud. Tindakan ini memungkinkan akses ke cluster dan fitur pengelolaan workload, termasuk konsol Google Cloud dan gateway koneksi untuk berinteraksi dengan cluster Anda. | roles/gkehub.connect |
| anthos-baremetal-register | Connect Agent menggunakan akun layanan ini untuk mendaftarkan cluster Anda ke fleet. | roles/gkehub.admin |
| anthos-baremetal-cloud-ops | Stackdriver Agent menggunakan akun layanan ini untuk mengekspor log dan metrik dari cluster ke Cloud Logging dan Cloud Monitoring. |
roles/logging.logWriter roles/monitoring.metricWriter roles/stackdriver.resourceMetadata.writer roles/opsconfigmonitoring.resourceMetadata.writer roles/monitoring.dashboardEditor |