Dalam kluster ACK multi-tenant, beberapa tim yang berbagi kluster yang sama dapat menghabiskan sumber daya tanpa batasan. Namespace memungkinkan Anda membagi sumber daya kluster menjadi kelompok terisolasi sehingga Anda dapat menerapkan kuota, mengelola izin, dan melacak biaya per tim atau lingkungan.
Namespace
Di kluster ACK, namespace membagi sumber daya kluster menjadi kelompok terisolasi. Saat beberapa tim berbagi satu kluster, buat namespace untuk mengklasifikasikan sumber daya berdasarkan tim atau lingkungan, lalu gunakan resource quotas guna membatasi konsumsi setiap namespace.
Secara default, Pod dalam status berjalan dapat mengonsumsi sumber daya CPU dan memori pada node tanpa batas. Pod dalam satu namespace bahkan dapat menghabiskan seluruh sumber daya kluster. Untuk mencegah hal ini, konfigurasikan kuota sumber daya per namespace—termasuk CPU, memori, dan jumlah Pod.
Alokasi contoh: Dalam kluster dengan RAM 32 GiB dan 16 core CPU, alokasikan 20 GiB dan 10 core untuk tim A, 10 GiB dan 4 core untuk tim B, serta sisakan 2 GiB dan 2 core sebagai cadangan. Sebagai alternatif, berikan namespace testing 1 core dan RAM 1 GiB, dan biarkan namespace production menggunakan sisa sumber daya.
Buat namespace
Gunakan Konsol ACK
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Konsol ACK Clusters.
Pada halaman Clusters, temukan kluster yang ingin Anda kelola lalu klik namanya. Di panel navigasi kiri, klik Namespaces and Quotas.
Klik Create. Pada kotak dialog yang muncul, konfigurasikan nama dan label namespace lalu klik OK.
Gunakan kubectl
Buat namespace.
kubectl create namespace testVerifikasi bahwa namespace telah dibuat.
kubectl get namespacesOutput yang diharapkan:
NAME STATUS AGE default Active 46h kube-node-lease Active 46h kube-public Active 46h kube-system Active 46h test Active 9sNamespace
testkini aktif dalam daftar.
Konfigurasikan kuota dan batas sumber daya
Setelah Anda mengonfigurasi kuota CPU dan memori untuk suatu namespace, semua Pod yang dibuat di namespace tersebut harus menentukan batas CPU dan memori. Agar pembuatan Pod tidak gagal, konfigurasikan batas sumber daya default untuk kontainer dalam namespace tersebut.
Konfigurasikan melalui Konsol ACK
Pada halaman Namespace, klik Resource Quotas and Limits di kolom Actions untuk namespace yang ingin Anda kelola.
Pada kotak dialog Resource Quotas and Limits, konfigurasikan kuota sumber daya dan batas sumber daya default. Untuk detail konfigurasi, lihat Resource Quotas dan Configure Default Memory Requests and Limits for a Namespace.
Praktik terbaik untuk mengubah kuota
Praktik terbaik: Ubah kuota selama jam sepi. Periksa penggunaan sumber daya dari beban kerja yang ada sebelum melakukan perubahan.
Sisihkan sumber daya yang cukup untuk auto scaling Penyekala Pod Horizontal (HPA).
Monitor kluster setidaknya selama 30 menit setelah menyesuaikan kuota untuk memastikan HPA berjalan sesuai harapan.
Hapus namespace
Namespace bawaan (default, kube-system, kube-public, kube-node-lease) tidak dapat dihapus. Kosongkan semua sumber daya dalam namespace sebelum menghapusnya. Jika namespace tetap dalam status Terminating dalam waktu lama, lihat Apa yang harus saya lakukan jika namespace terjebak dalam status Terminating?.
Gunakan Konsol ACK
Pada halaman Namespace, temukan namespace yang ingin Anda hapus lalu klik
> Delete di kolom Actions. Untuk menonaktifkan perlindungan penghapusan terlebih dahulu, klik
> Disable Deletion Protection di kolom Actions.Pada kotak dialog Confirm, konfirmasi sumber daya terkait dalam namespace lalu klik Confirm Deletion.
Gunakan kubectl
kubectl delete namespace testFAQ
Apa yang harus saya lakukan jika namespace terjebak dalam status Terminating?
Saat Anda menghapus namespace yang masih memiliki sumber daya, proses penghapusan akan tetap dalam status Terminating tanpa henti. Solusinya adalah mengosongkan array finalizers dalam spesifikasi namespace — Kubernetes kemudian secara otomatis menghapus namespace tersebut. Perlu diperhatikan bahwa tindakan ini mungkin menyisakan sumber daya yatim di kluster, jadi bersihkan beban kerja dalam namespace sebelum melanjutkan.
Ikuti langkah-langkah berikut untuk memaksa penghapusan namespace (namespace istio-system digunakan sebagai contoh):
Buka terminal dan mulai reverse proxy untuk kluster Anda.
kubectl proxyOutput yang diharapkan:
Starting to serve on 127.0.0.1:8001Buka terminal kedua. Ekspor token dan verifikasi konektivitas ke server API.
export TOKEN=$(kubectl describe secret $(kubectl get secrets | grep default | cut -f1 -d ' ') | grep -E '^token' | cut -f2 -d':' | tr -d '\t') curl http://localhost:8001/api/v1/namespaces --header "Authorization: Bearer $TOKEN" --insecureEkspor konfigurasi namespace ke file JSON.
kubectl get namespace istio-system -o json > istio-system.jsonBuka file
istio-system.jsondan kosongkan arrayfinalizersdalam bagianspec."spec": { "finalizers": [] }Terapkan konfigurasi yang diperbarui untuk menghapus finalizers.
curl -X PUT --data-binary @istio-system.json http://localhost:8001/api/v1/namespaces/istio-system/finalize -H "Content-Type: application/json" --header "Authorization: Bearer $TOKEN" --insecure
Langkah selanjutnya
Untuk batasan layanan cloud dan konfigurasi kluster, termasuk batasan kapasitas kluster individual, kuota kluster, dan kuota layanan cloud terkait, lihat Kuota dan batasan.
Untuk konfigurasi kuota pada jenis objek API tertentu, lihat Configure Quotas for API Objects.
Untuk menerapkan pengelolaan izin detail halus untuk kluster atau namespace menggunakan Pengguna RAM, Peran RAM, dan kontrol akses berbasis peran (RBAC), lihat Gunakan RAM untuk mengotorisasi akses ke kluster dan sumber daya cloud dan Gunakan RBAC untuk mengelola izin operasi pada sumber daya dalam kluster.