Membuat cluster
Halaman ini menjelaskan cara membuat cluster dan node pool di GKE di Azure pada Kubernetes versi 1.29.4-gke.200.
Sebelum memulai
Untuk menyelesaikan langkah-langkah di halaman ini, lakukan hal berikut:
Ikuti langkah-langkah di Mengonfigurasi prasyarat.
Pilih apakah Anda akan menjalankan bidang kontrol di beberapa zona atau satu zona.
Pilih rentang classless inter-domain routing (CIDR) yang akan diberikan ke cluster Anda.
Penempatan zona bidang kontrol
Secara default, GKE di Azure menempatkan replika bidang kontrol terpisah di subnet yang sama di tiga zona di region yang Anda pilih. Anda dapat memilih zona dan subnet ini.
Jika Anda ingin menggunakan penempatan replika bidang kontrol default, lanjutkan ke bagian Memilih rentang CIDR untuk cluster Anda.
Gateway Azure NAT dan bidang kontrol cluster
Setiap replika bidang kontrol juga memerlukan konektivitas ke layanan pengelolaan yang dihosting Google untuk beroperasi dalam keadaan normal.
Jika menggunakan gateway Azure NAT untuk menyediakan konektivitas keluar, Anda harus mempertimbangkan dampak kegagalan zona terhadap bidang kontrol cluster. Satu endpoint gateway NAT diisolasi ke satu zona atau bersifat regional/non-zona, dan ini menunjukkan titik tunggal kegagalan.
Jika Anda ingin menempatkan replika bidang kontrol di satu zona, gunakan satu subnet dan zona. Jika Anda menggunakan Gateway NAT untuk konektivitas keluar, pastikan endpoint ditempatkan di zona yang sama.
Jika ingin menempatkan replika di dua atau tiga zona, Anda dapat meneruskan daftar subnet dan zona saat membuat cluster. Saat meneruskan dua subnet dan zona, GKE di Azure akan menempatkan dua replika di zona pertama Jika Anda meneruskan tiga subnet dan zona, GKE di Azure menempatkan replika di setiap subnet. Untuk mengetahui informasi selengkapnya, lihat Menempatkan replika di subnet tertentu.
Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi subnet dan zona Azure untuk ketersediaan tinggi, lihat Isolasi zona dengan stack zona dalam dokumentasi Azure.
Menempatkan replika di subnet tertentu
Bagian ini bersifat opsional.
Untuk mengontrol tempat replika bidang kontrol ditempatkan, gunakan flag
--replica-placements
dan teruskan daftar ID subnet dan zona saat membuat
cluster. Anda dapat menggunakan hingga tiga subnet dan zona tempat untuk menempatkan replika bidang kontrol.
Untuk memformat daftar subnet, lakukan langkah-langkah berikut.
Ambil ID subnet Azure Anda dengan alat command line
az
:az network vnet subnet show \ --resource-group=VNET_RESOURCE_GROUP_NAME --vnet-name=VNET_NAME \ --name SUBNET_NAME --query "id" -otsv
Ganti kode berikut:
CLUSTER_RESOURCE_GROUP_NAME
: nama grup resource yang sudah ada, tempat Anda ingin menjalankan clusterVNET_RESOURCE_GROUP_NAME
: nama grup resource yang menyimpan VNet AndaVNET_NAME
: nama VNet AndaSUBNET_NAME
: nama subnet Anda
Output-nya adalah ID subnet. ID subnet Azure terlihat seperti berikut:
/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP/providers/Microsoft.Network/virtualNetworks/VNET_NAME/subnets/SUBNET_NAME
Ulangi perintah ini untuk setiap subnet tempat Anda ingin membuat replika bidang kontrol. Salin ID subnet ke editor teks untuk langkah berikut.
Buat daftar ID subnet dan zona ketersediaan Azure yang dipisahkan koma, dengan titik dua yang memisahkan subnet dan zona. Misalnya, untuk membuat replika bidang kontrol di
subnet1
di zona 1,subnet2
di zona 2, dansubnet3
di zona 3, gunakan string berikut:/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP/providers/Microsoft.Network/virtualNetworks/VNET_NAME/subnets/subnet1:1,/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP/providers/Microsoft.Network/virtualNetworks/VNET_NAME/subnets/subnet2:2,/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP/providers/Microsoft.Network/virtualNetworks/VNET_NAME/subnets/subnet3:3
Salin string ini dan gunakan sebagai nilai untuk tanda
--replica-placements
saat Anda membuat cluster.
Memilih rentang CIDR untuk cluster Anda
Saat membuat cluster di GKE di Azure, Anda perlu menyediakan rentang alamat IPv4 yang akan digunakan untuk Pod dan Service.
Rentang IP ini ditentukan menggunakan notasi Classless Inter-Domain Routing (CIDR)—misalnya, 100.64.0.0/16
.
Rentang yang direkomendasikan
Sebaiknya gunakan rentang CIDR berikut untuk Layanan dan Pod:
- Layanan: 100.64.0.0/16
- Pod: 100.96.0.0/11
Rentang ini cukup besar bagi Anda untuk mengembangkan cluster tanpa masalah.
Bagian berikut memberikan detail selengkapnya.
Detail tentang cara memilih rentang
GKE di Azure menggunakan jaringan overlay untuk Pod dan Service, sehingga rentang IP untuk jaringan ini tidak perlu di-rout dalam VNet. Setiap rentang IP yang Anda gunakan harus dijamin tersedia. Untuk mengetahui informasi selengkapnya, lihat Dataplane V2.
Rentang IP Pod dan Service dapat tumpang-tindih dengan jaringan VNet, asalkan tidak menyertakan bidang kontrol atau rentang IP subnet kumpulan node.
Rentang IP Pod dan Service harus termasuk dalam salah satu rentang IP pribadi berikut:
10.0.0.0/8
,172.16.0.0/12
,192.168.0.0/16
— Alamat IP pribadi (RFC 1918)100.64.0.0/10
— Ruang alamat bersama (RFC 6598)192.0.0.0/24
— Penetapan protokol IETF (RFC 6890)192.0.2.0/24
,198.51.100.0/24
,203.0.113.0/24
— Dokumentasi (RFC 5737)192.88.99.0/24
— Relai IPv6 ke IPv4 (tidak digunakan lagi) (RFC 7526)198.18.0.0/15
— Pengujian benchmark (RFC 2544)
Sebaiknya gunakan rentang IP dalam 100.64.0.0/10
(RFC 6598). Rentang ini
dicadangkan untuk NAT tingkat operator, yang kemungkinan tidak digunakan di
VNet Anda.
Misalnya, berikut ini adalah konfigurasi yang valid dengan jaringan Pod, Service, dan Node tidak tumpang tindih (VNet menggunakan alamat IP pribadi RFC 1918, sedangkan jaringan Pod dan Service ditempatkan ke IP pribadi RFC 6598).
- Jaringan VNet:
10.0.0.0/16
,172.16.1.0/24
,172.16.2.0/24
- Jaringan pod:
100.65.0.0/16
- Jaringan layanan:
100.66.0.0/16
Berikut ini juga merupakan konfigurasi yang valid meskipun jaringan Pod dan Service tumpang-tindih dengan jaringan VNet karena tidak ada tumpang-tindih dengan replika bidang kontrol.
- Jaringan VNet:
10.0.0.0/16
- Jaringan pod:
10.0.1.0/24
- Jaringan layanan:
10.0.2.0/24
- Subnet Replika Bidang Kontrol:
10.0.3.0/24
,10.0.4.0/24
,10.0.5.0/24
Konfigurasi berikut tidak valid, karena rentang IP Pod tumpang-tindih dengan jaringan bidang kontrol. Tumpang-tindih ini dapat mencegah beban kerja berkomunikasi dengan replika bidang kontrol di jaringan VNet:
- Jaringan VNet:
10.0.0.0/16
- Jaringan pod:
10.0.1.0/24
- Jaringan layanan:
10.1.0.0/24
- Subnet Replika Bidang Kontrol:
10.0.1.0/24
,10.0.2.0/24
,10.0.3.0/24
Detail tentang rentang alamat Pod
Kubernetes mengalokasikan alamat ke objek Pod dari rentang alamat Pod. Rentang Pod cluster dibagi menjadi rentang yang lebih kecil untuk setiap node. Saat Pod dijadwalkan pada node tertentu, Kubernetes akan menetapkan alamat IP Pod dari rentang node.
Untuk menghitung ukuran rentang alamat Pod, Anda perlu memperkirakan jumlah node yang Anda inginkan dalam cluster dan jumlah Pod yang ingin dijalankan pada setiap node.
Tabel berikut memberikan rekomendasi ukuran untuk rentang CIDR Pod berdasarkan jumlah node dan Pod yang ingin Anda jalankan.
Tabel rentang alamat pod
Rentang alamat IP pod | Alamat IP Pod maksimum | Node maksimum | Pod maksimum |
---|---|---|---|
/24 Rentang alamat Pod Pod terkecil |
256 alamat | 1 node | 110 Pod |
/23 | 512 alamat | 2 node | 220 Pod |
/22 | 1.024 alamat | 4 node | 440 Pod |
/21 | 2.048 alamat | 8 node | 880 Pod |
/20 | 4.096 alamat | 16 node | 1.760 Pod |
/19 | 8.192 alamat | 32 node | 3.520 Pod |
/18 | 16.384 alamat | 64 node | 7.040 Pod |
/17 | 32.768 alamat | 128 node | 14.080 Pod |
/16 | 65.536 alamat | 256 node | 28.160 Pod |
/15 | 131.072 alamat | 512 node | 56.320 Pod |
/14 | 262.144 alamat | 1.024 node | 112.640 Pod |
Detail tentang rentang alamat IP layanan
Kubernetes mengalokasikan alamat IP virtual untuk Objek layanan — misalnya, load balancer dari rentang alamat ini.
Untuk menghitung ukuran rentang alamat IP Layanan, Anda perlu memperkirakan jumlah layanan yang Anda inginkan di cluster.
Tabel berikut memberikan rekomendasi ukuran untuk rentang CIDR Layanan berdasarkan jumlah Layanan yang ingin Anda jalankan.
Tabel rentang alamat layanan
Rentang alamat IP layanan | Jumlah Layanan maksimum |
---|---|
/27 Rentang alamat IP Layanan terkecil |
32 Layanan |
/26 | 64 Layanan |
/25 | 128 Layanan |
/24 | 256 Layanan |
/23 | 512 Layanan |
/22 | 1.024 Layanan |
/21 | 2.048 Layanan |
/20 | 4.096 Layanan |
/19 | 8.192 Layanan |
/18 | 16.384 Layanan |
/17 | 32.768 Layanan |
/16 Rentang alamat IP Layanan seluas mungkin |
65.536 Layanan |
Autentikasi ke Azure
GKE di Azure menyediakan dua metode autentikasi ke Azure: federasi workload workload dan membuat sertifikat klien. Autentikasi workload identity federation adalah metode yang direkomendasikan karena lebih sederhana dan aman.
Workload identity federation
Dengan penggabungan workload, GKE di Azure dapat melakukan autentikasi ke Azure menggunakan akun layanan Google, sehingga selanjutnya dapat mengelola resource di aplikasi Azure AD. Dibandingkan dengan AzureClient, Anda tidak perlu mengelola sertifikat dan mengupload ke Azure AD secara manual.
Untuk mengonfigurasi kredensial identitas gabungan di aplikasi Azure AD Anda, jalankan perintah berikut. Perlu diperhatikan bahwa Anda dapat menambahkan hingga dua puluh kredensial ke setiap aplikasi Azure AD.
Simpan ID aplikasi Azure Anda ke variabel lingkungan:
APPLICATION_ID=$(az ad app list --all \ --query "[?displayName=='APPLICATION_NAME'].appId" --output tsv) PROJECT_ID="$(gcloud config get-value project)" PROJECT_NUMBER=$(gcloud projects describe "$PROJECT_ID" \ --format "value(projectNumber)")
APPLICATION_NAME
: nama aplikasi Azure AD yang Anda gunakan saat Membuat Aplikasi Azure Active Directory.
Buat file JSON bernama
credential.json
.{ "name": "CREDENTIAL_NAME", "issuer": "https://accounts.google.com", "subject": "service-PROJECT_NUMBER@gcp-sa-gkemulticloud.iam.gserviceaccount.com", "audiences": ["api://AzureADTokenExchange"], "description": "Allow GKE on Azure to authenticate to the Azure AD application using a Google service account." }
CREDENTIAL_NAME
: nama kredensial.PROJECT_NUMBER
: jumlah project Google Cloud yang menghosting cluster.
Buat kredensial identitas gabungan di aplikasi Azure AD:
az ad app federated-credential create --id "${APPLICATION_ID}" --parameters credential.json
Untuk mengetahui detail selengkapnya, lihat dokumentasi Azure Federasi identitas workload Azure AD dengan Google Cloud.
Anda juga dapat menyediakan kredensial identitas gabungan Azure menggunakan Terraform. Untuk mengetahui detailnya, lihat azuread_application_federated_identity_credential.
Setelah mengonfigurasi kredensial, buat atau pilih pasangan kunci SSH untuk cluster Anda.
Membuat pasangan kunci SSH
Saat membuat cluster, Anda perlu menyediakan pasangan kunci SSH. Jika Anda sudah memiliki pasangan kunci untuk digunakan, lewati langkah ini.
Untuk membuat pasangan kunci baru, gunakan alat command line
ssh-keygen
:ssh-keygen -m PEM -t rsa -b 4096 -f KEY_PATH
Ganti
KEY_PATH
dengan jalur ke kunci pribadi baru Anda.Simpan kunci dalam variabel lingkungan:
SSH_PUBLIC_KEY=$(cat KEY_PATH.pub)
Misalnya, untuk membuat pasangan kunci baru di
~/.ssh/anthos-multicloud-key.pub
dan menyimpan kunci publik dalam variabel lingkungan, jalankan perintah berikut:ssh-keygen -m PEM -t rsa -b 4096 -f ~/.ssh/anthos-multicloud-key SSH_PUBLIC_KEY=$(cat ~/.ssh/anthos-multicloud-key.pub)
Setelah menyimpan kunci publik ke variabel lingkungan, Anda siap untuk membuat cluster.
Pilih project host Fleet Anda
Armada adalah konsep Google Cloud untuk mengatur cluster ke dalam grup yang lebih besar. Dengan fleet, Anda dapat mengelola banyak cluster di beberapa cloud dan menerapkan kebijakan yang konsisten di semua cluster tersebut. GKE Multi-Cloud API akan otomatis mendaftarkan cluster Anda dengan Fleet saat cluster dibuat.
Saat membuat cluster, Anda menentukan project host Armada tempat cluster akan dikelola. Karena GKE di Azure menggunakan nama cluster sebagai nama keanggotaan Fleet, Anda harus memastikan bahwa nama cluster Anda unik di seluruh Fleet.
Pendaftaran lintas project
Jika ingin menggunakan project Fleet Host selain project Google Cloud tempat cluster berada, Anda harus menerapkan binding kebijakan IAM tambahan ke akun layanan Multi-Cloud Service Agent. Tindakan ini memungkinkan akun layanan mengelola Fleet dengan Project Host Fleet.
Untuk menambahkan Agen Layanan ke project Anda, jalankan perintah ini:
gcloud beta services identity create --service=gkemulticloud.googleapis.com \ --project=CLUSTER_PROJECT_NUMBER
Ganti
CLUSTER_PROJECT_NUMBER
dengan nomor project Google Cloud Anda.Tetapkan binding ini dengan perintah berikut:
gcloud projects add-iam-policy-binding FLEET_PROJECT_ID \ --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@gcp-sa-gkemulticloud.iam.gserviceaccount.com" \ --role="roles/gkemulticloud.serviceAgent"
Ganti kode berikut:
FLEET_PROJECT_ID
: project Google Cloud project host Fleet AndaCLUSTER_PROJECT_NUMBER
: nomor project Google Cloud Anda
Nama akun Agen Layanan Multi-Cloud memiliki format berikut:
service-CLUSTER_PROJECT_NUMBER@gcp-sa-gkemulticloud.iam.gserviceaccount.com
.
Anda dapat menemukan akun layanan di halaman Service account di Konsol Google Cloud. Untuk informasi selengkapnya tentang cara menemukan nomor project Anda, lihat Mengidentifikasi project.
Membuat cluster
Untuk membuat cluster, jalankan perintah berikut:
Simpan grup resource Azure, VNet, dan ID subnet Anda ke variabel lingkungan:
SUBSCRIPTION_ID=$(az account show --query "id" --output tsv) TENANT_ID=$(az account list \ --query "[?id=='${SUBSCRIPTION_ID}'].{tenantId:tenantId}" --output tsv) CLUSTER_RG_ID=$(az group show --resource-group=CLUSTER_RESOURCE_GROUP_NAME \ --query "id" -otsv) VNET_ID=$(az network vnet show --resource-group=VNET_RESOURCE_GROUP_NAME \ --name=VNET_NAME --query "id" -otsv) SUBNET_ID=$(az network vnet subnet show \ --resource-group=VNET_RESOURCE_GROUP_NAME --vnet-name=VNET_NAME \ --name default --query "id" -otsv)
Ganti kode berikut:
CLUSTER_RESOURCE_GROUP_NAME
: nama grup resource yang sudah ada, tempat Anda ingin menjalankan clusterVNET_RESOURCE_GROUP_NAME
: nama grup resource yang menyimpan VNet AndaVNET_NAME
: nama VNet Anda
Buat cluster dengan Google Cloud CLI:
Workload identity federation
gcloud container azure clusters create CLUSTER_NAME \ --location GOOGLE_CLOUD_LOCATION \ --fleet-project FLEET_PROJECT \ --azure-tenant-id "${TENANT_ID}" \ --azure-application-id "${APPLICATION_ID}" \ --azure-region AZURE_REGION \ --pod-address-cidr-blocks POD_CIDR \ --service-address-cidr-blocks SERVICE_CIDR \ --vm-size VM_SIZE \ --cluster-version 1.29.4-gke.200 \ --ssh-public-key "$SSH_PUBLIC_KEY" \ --resource-group-id "$CLUSTER_RG_ID" \ --vnet-id "$VNET_ID" \ --subnet-id "$SUBNET_ID" # Optional, see following note \ --tags "control-plane=CLUSTER_NAME" \ --admin-users ADMIN_USERS_LIST
Klien Azure
gcloud container azure clusters create CLUSTER_NAME \ --location GOOGLE_CLOUD_LOCATION \ --fleet-project FLEET_PROJECT \ --client CLIENT_NAME \ --azure-region AZURE_REGION \ --pod-address-cidr-blocks POD_CIDR \ --service-address-cidr-blocks SERVICE_CIDR \ --vm-size VM_SIZE \ --cluster-version 1.29.4-gke.200 \ --ssh-public-key "$SSH_PUBLIC_KEY" \ --resource-group-id "$CLUSTER_RG_ID" \ --vnet-id "$VNET_ID" \ --subnet-id "$SUBNET_ID" # Optional, see following note \ --tags "control-plane=CLUSTER_NAME" \ --admin-users ADMIN_USERS_LIST
Ganti kode berikut:
CLUSTER_NAME
: nama cluster AndaGOOGLE_CLOUD_LOCATION
: lokasi Google Cloud yang mengelola cluster AndaFLEET_PROJECT
dengan project host fleet tempat cluster akan didaftarkan. Jika ingin mengelola cluster ini dari project Google Cloud lain, lihat Pendaftaran lintas project.AZURE_REGION
: region Azure yang didukung yang terkait dengan region Google Cloud AndaPOD_CIDR
: rentang alamat pod cluster Anda—misalnya,10.0.1.0/18
SERVICE_CIDR
: Rentang alamat layanan cluster AndaVM_SIZE
: ukuran VM Azure yang didukungADMIN_USERS_LIST
(opsional): daftar alamat email pengguna yang dipisahkan koma, yang dapat diberikan hak istimewa administratif kepada pengguna, misalnya "kai@example.com,hao@example.com,kalani@example.com". Setelan defaultnya adalah pengguna yang membuat clusterCLIENT_NAME
: nama AzureClient Anda
Periksa status cluster Anda:
gcloud container azure clusters describe CLUSTER_NAME --location GOOGLE_CLOUD_LOCATION
Ganti kode berikut:
CLUSTER_NAME
GOOGLE_CLOUD_LOCATION
Output mencakup informasi tentang status dan konfigurasi cluster Anda.
Mengizinkan Cloud Logging / Cloud Monitoring
Izin harus diberikan agar GKE di Azure dapat membuat serta mengupload log dan metrik sistem ke Google Cloud.
Untuk mengizinkan gke-system/gke-telemetry-agent
workload Kubernetes menulis log ke Google Cloud Logging, dan metrik ke Google Cloud Monitoring, jalankan perintah ini:
gcloud projects add-iam-policy-binding GOOGLE_PROJECT_ID \
--member="serviceAccount:GOOGLE_PROJECT_ID.svc.id.goog[gke-system/gke-telemetry-agent]" \
--role=roles/gkemulticloud.telemetryWriter
Ganti GOOGLE_PROJECT_ID
dengan ID project Google Cloud cluster.
Binding IAM ini memberikan akses ke semua cluster dalam project project Google Cloud untuk mengupload log dan metrik. Anda hanya perlu menjalankannya setelah membuat cluster pertama untuk project tersebut.
Penambahan binding IAM ini akan gagal kecuali jika setidaknya satu cluster telah dibuat dalam project Google Cloud Anda. Hal ini karena kumpulan workload identity
yang dirujuk (GOOGLE_PROJECT_ID.svc.id.goog
) tidak
disediakan hingga cluster dibuat.
Membuat node pool
Sebelum membuat kumpulan node, Anda memerlukan hal berikut:
- Izin untuk menggunakan alat command line
az
untuk mengambil ID subnet Azure. - Akses ke kunci publik SSH cluster.
Untuk membuat kumpulan node, jalankan perintah berikut:
Simpan ID subnet Azure VNet dan kunci publik SSH Anda ke variabel lingkungan:
SUBNET_ID=$(az network vnet subnet show \ --resource-group=VNET_RESOURCE_GROUP_NAME --vnet-name=VNET_NAME \ --name default --query "id" -otsv) SSH_PUBLIC_KEY=$(cat KEY_PATH.pub)
Ganti kode berikut:
VNET_RESOURCE_GROUP_NAME
: nama grup resource yang menyimpan VNetVNET_NAME
: nama VNet AndaKEY_PATH
: jalur ke pasangan kunci
Buat node pool dengan Google Cloud CLI:
gcloud container azure node-pools create NODE_POOL_NAME \ --cluster CLUSTER_NAME \ --location GOOGLE_CLOUD_LOCATION \ --node-version 1.29.4-gke.200 \ --vm-size VM_SIZE \ --max-pods-per-node 110 \ --min-nodes MIN_NODES \ --max-nodes MAX_NODES \ --ssh-public-key "${SSH_PUBLIC_KEY}" \ --subnet-id "${SUBNET_ID}"
Ganti kode berikut:
NODE_POOL_NAME
: nama unik untuk kumpulan node Anda—misalnya,node-pool-1
CLUSTER_NAME
: nama GKE Anda di cluster AzureGOOGLE_CLOUD_LOCATION
: lokasi Google Cloud yang mengelola cluster AndaVM_SIZE
: ukuran VM Azure yang didukungMIN_NODES
: jumlah minimum node dalam kumpulan node—untuk mengetahui informasi selengkapnya, lihat Penskala otomatis clusterMAX_NODES
: jumlah maksimum node dalam kumpulan node
Periksa status kumpulan node Anda:
gcloud container azure node-pools describe NODE_POOL_NAME \ --cluster CLUSTER_NAME \ --location GOOGLE_CLOUD_LOCATION
Ganti kode berikut:
NODE_POOL_NAME
: nama unik untuk kumpulan node Anda—misalnya,node-pool-1
CLUSTER_NAME
: nama GKE Anda di cluster AzureGOOGLE_CLOUD_LOCATION
: lokasi Google Cloud yang mengelola cluster Anda
Outputnya mencakup status kumpulan node Anda, termasuk apakah kumpulan node tersebut adalah
PROVISIONING
atauRUNNING
.
Langkah selanjutnya
- Mengonfigurasi akses cluster untuk kubectl.
- Buat node pool.
- Coba Panduan Memulai untuk meluncurkan workload pertama Anda.
- Baca dokumentasi referensi untuk
gcloud container clusters create
. - Ada masalah saat membuat cluster? Lihat Pemecahan masalah untuk mengetahui informasi selengkapnya.