Ce face Obiectul Namespace
Un Namespace este un „dosar” logic în interiorul clusterului: numele resurselor (Deployment, Service, ConfigMap, Pod) trebuie să fie unice în interiorul unui namespace, dar două namespace-uri diferite (staging și prod) pot avea fiecare propriul Deployment api fără niciun conflict.
La instalare, un cluster vine cu patru namespace-uri standard: default (folosit când nu specifici -n), kube-system (componentele interne Kubernetes), kube-public și kube-node-lease. Unele resurse nu aparțin niciunui namespace (sunt la nivel de cluster): Node, PersistentVolume, ClusterRole, StorageClass și Namespace-ul însuși (vezi kubectl api-resources --namespaced=false).
Pe un namespace poți atașa un ResourceQuota (plafon total de CPU, memorie și număr de pod-uri pe care echipa respectivă are voie să le consume) și un LimitRange (valori implicite requests/limits pentru pod-urile care nu le specifică).
Opțiuni și argumente
| Opțiune / Parametru | Descriere |
|---|---|
kubectl get ns |
Listează toate namespace-urile din cluster (ns este prescurtarea pentru namespaces). |
kubectl create ns NUME |
Creează rapid un namespace nou. |
-n, --namespace=NUME |
Opțiune globală pe orice comandă kubectl pentru a lucra în acel namespace. |
ResourceQuota |
Obiect care limitează suma totală de CPU/memorie/obiecte dintr-un namespace. |
LimitRange |
Obiect care impune valori implicite și min/max de CPU/memorie per container. |
Exemple
Exemplul 1: Namespace cu cotă de resurse (ResourceQuota)
Toate pod-urile din namespace-ul shop nu vor putea depăși cumulat 8 nuclee CPU și 16 GiB RAM.
apiVersion: v1
kind: Namespace
metadata:
name: shop
---
apiVersion: v1
kind: ResourceQuota
metadata:
name: cota-echipa-shop
namespace: shop
spec:
hard:
requests.cpu: "4"
requests.memory: 8Gi
limits.cpu: "8"
limits.memory: 16Gi
pods: "30"
Ieșire în terminal
namespace/shop created
resourcequota/cota-echipa-shop created
Exemplul 2: Inspectarea consumului față de cota alocată pe namespace
kubectl describe quota cota-echipa-shop -n shop
Ieșire în terminal
Name: cota-echipa-shop
Namespace: shop
Resource Used Hard
-------- ---- ----
limits.cpu 3500m 8
limits.memory 2560Mi 16Gi
pods 9 30
requests.cpu 1100m 4
requests.memory 1280Mi 8Gi
Greșeli frecvente
- Un Namespace izolează numele și permisiunile RBAC, dar nu izolează traficul de rețea în mod implicit: un pod din
stagingpoate apelahttp://api.prod.svc.cluster.localdacă nu definești unNetworkPolicy. - Dacă pe un namespace există un
ResourceQuotape CPU/memorie, orice Pod creat fără secțiunearesourcesîn YAML va fi respins (dacă nu există și unLimitRangecu valori implicite).
Comenzi înrudite
kubectl config: Gestionează fișierul kubeconfig: clustere, utilizatori, contexte și namespace-ul implicit.kubectl api-resources: Listează toate tipurile de resurse disponibile în cluster, cu prescurtări și grupuri API.kubectl delete: Șterge resurse după nume, etichete sau fișierele YAML din care au fost create.Obiectul Pod: Cea mai mică unitate de execuție în Kubernetes: unul sau mai multe containere care împart IP-ul și volumele.
Întrebări & Exemple de Cod:
Obiectul NamespaceAi o nelămurire despre utilizarea comenzii
Obiectul Namespacesau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.