全部产品
Search
文档中心

Container Service for Kubernetes:Kelola namespaces dan kuota sumber daya

更新时间:Jul 02, 2025

Namespaces memungkinkan Anda membagi sumber daya di kluster yang sama ke dalam ruang kerja yang berbeda. Hal ini memungkinkan Anda mengisolasi sumber daya serta mengelola kuota, izin, dan pembukuan. Ini mengurangi biaya pengelolaan dan pemeliharaan kluster Container Service for Kubernetes (ACK) dalam skenario multi-pengguna.

Namespaces

Dalam kluster ACK, Anda dapat menggunakan namespaces sebagai mekanisme untuk membagi sumber daya di kluster yang sama menjadi grup-grup terisolasi. Jika beberapa pengguna berbagi kluster, Anda dapat membuat namespaces untuk mengklasifikasikan sumber daya kluster yang digunakan untuk menyelesaikan tugas-tugas berbeda dan menggunakan kuota sumber daya untuk membatasi dan mengelola alokasi sumber daya dalam namespaces tersebut.

Secara default, pod yang berada dalam status running dapat menggunakan sumber daya CPU dan memori node tanpa batasan. Dalam kasus ini, pod dalam sebuah namespace mungkin menghabiskan sumber daya kluster. Anda dapat mengonfigurasi beberapa kuota sumber daya untuk sebuah namespace, termasuk kuota CPU, memori, dan pod.

Buat sebuah namespace

Gunakan konsol ACK

  1. Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.

  2. Pada halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel navigasi di sebelah kiri, klik Namespaces and Quotas.

  3. Klik Create. Di kotak dialog yang muncul, konfigurasikan nama dan label namespace lalu klik OK.

Gunakan kubectl

  1. Buat sebuah namespace.

    kubectl create namespace test
  2. Verifikasi bahwa namespace telah dibuat.

    kubectl get namespaces

    Output yang diharapkan:

    NAME              STATUS   AGE
    default           Active   46h
    kube-node-lease   Active   46h
    kube-public       Active   46h
    kube-system       Active   46h
    test              Active   9s

    Output perintah menunjukkan bahwa namespace baru bernama test ada dalam daftar.

Setelah membuat namespace, Anda dapat memodifikasi konfigurasi namespace tersebut, seperti memodifikasi label, menetapkan kuota dan batas sumber daya, menghapus namespace, dan melakukan operasi lainnya.

Konfigurasikan kuota sumber daya dan batas

Setelah membuat namespace, Anda dapat mengonfigurasi kuota dan rentang batas untuk mengontrol penggunaan sumber daya dan biaya dari pod dalam namespace tersebut.

  1. Di halaman Namespace, klik Resource Quotas and Limits di kolom Actions untuk namespace yang ingin dikelola.

  2. Di kotak dialog Resource Quotas and Limits, konfigurasikan kuota sumber daya dan batas sumber daya default.

    Untuk informasi lebih lanjut tentang cara mengonfigurasi kuota sumber daya dan batas, lihat Kuota Sumber Daya dan Konfigurasikan Permintaan Memori Default dan Batas untuk Sebuah Namespace.

    Catatan

    Setelah mengonfigurasi kuota CPU dan memori untuk sebuah namespace, Anda harus menentukan batas CPU dan memori saat membuat pod. Anda juga dapat mengonfigurasi batas sumber daya default untuk semua kontainer dalam namespace.

Saran untuk memodifikasi kuota sumber daya sebuah namespace

  • Kami merekomendasikan Anda melakukan modifikasi selama jam-jam sepi. Periksa penggunaan sumber daya beban kerja yang ada sebelum operasi.

  • Pastikan cukup sumber daya dicadangkan untuk mendukung penskalaan otomatis HPA.

  • Kami merekomendasikan Anda memantau sistem setidaknya selama 30 menit setelah penyesuaian untuk memastikan HPA berjalan sesuai harapan.

Hapus sebuah namespace

Catatan
  • Namespaces bawaan tidak dapat dihapus.

  • Untuk mengaktifkan perlindungan penghapusan pada sebuah namespace, pilih image > Disable Deletion Protection di kolom Tindakan.

  • Saat menghapus sebuah namespace, pastikan sumber daya di dalam namespace tersebut telah dibersihkan. Jika namespace berada dalam status Terminating untuk waktu yang lama, Anda dapat memaksa penghapusan namespace. Untuk informasi lebih lanjut, lihat Apa yang harus saya lakukan jika namespace berada dalam status Terminating?

Gunakan konsol ACK

  1. Pada halaman Namespace, temukan namespace yang ingin Anda hapus dan klik image > Delete di kolom Actions.

  2. Di kotak dialog Confirm, konfirmasikan sumber daya terkait dalam namespace dan klik Confirm Deletion.

Gunakan kubectl

Jalankan perintah berikut untuk menghapus sebuah namespace:

kubectl delete namespace test

FAQ

Apa yang harus saya lakukan jika namespace berada dalam status Terminating?

Saat menghapus namespace yang memiliki sumber daya, operasi penghapusan tetap berada dalam status Terminating untuk waktu yang lama. Anda dapat menghapus field finalizers dari namespace untuk dengan cepat mengakhiri status ini. Operasi ini dapat menyebabkan sumber daya namespace tetap ada di kluster. Kami merekomendasikan Anda membersihkan sumber daya dalam namespace sebelum operasi.

Saat array field finalizers kosong dan statusnya adalah Terminating, Kubernetes secara otomatis akan menghapus namespace. Anda dapat menggunakan salah satu metode berikut untuk memaksa penghapusan namespace:

  1. Buka terminal shell. Jalankan perintah berikut untuk membuat reverse proxy untuk kluster Kubernetes Anda:

    kubectl proxy

    Contoh output perintah:

    Starting to serve on 127.0.0.1:8001
  2. Buka terminal shell baru. Definisikan variabel lingkungan untuk terhubung ke kluster Kubernetes. Lalu, jalankan perintah curl untuk memeriksa konektivitas dan otorisasi.

    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" --insecure
  3. Kueri konfigurasi sebuah namespace. Dalam contoh ini, istio-system digunakan.

    kubectl get namespace istio-system -o json > istio-system.json
  4. Hapus array field finalizers dan simpan konfigurasi.

        "spec": {
            "finalizers": [
            ]
        },
  5. Hapus field finalizers. Dalam contoh ini, namespace istio-system digunakan.

    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

Referensi