We couldn't find a match for given <KEYWORD>, please try again.

Che cos'è uno spazio dei nomi Kubernetes?

Gli spazi dei nomi sono un modo per organizzare i cluster in cluster secondari virtuali e possono essere utili quando team o progetti diversi condividono un cluster Kubernetes. All'interno di un cluster è supportato un numero qualsiasi di spazi dei nomi, separati logicamente gli uni dagli altri ma con la capacità di comunicare tra loro. Gli spazi dei nomi non possono essere nidificati l'uno nell'altro.

Qualsiasi risorsa esistente all'interno di Kubernetes esiste nello spazio dei nomi predefinito o in uno spazio dei nomi creato dall'operatore del cluster. Al di fuori dello spazio dei nomi esistono solo nodi e volumi di storage persistenti; queste risorse di basso livello sono sempre visibili in ogni spazio dei nomi nel cluster.

Stato di Kubernetes

Operatività completa con Kubernetes

Che cos'è lo spazio dei nomi "predefinito" in Kubernetes?

Kubernetes viene fornito con tre spazi dei nomi pronti all'uso. Eccoli nel dettaglio.

  1. default: come suggerisce il nome, questo è lo spazio dei nomi a cui viene fatto riferimento per impostazione predefinita per ogni comando Kubernetes e in cui si trova ogni risorsa Kubernetes per impostazione predefinita. Fino a quando non vengono creati nuovi spazi dei nomi, l'intero cluster risiede in "default".
  2. kube-system: viene utilizzato per i componenti di Kubernetes e deve essere evitato.
  3. kube-public: viene utilizzato per le risorse pubbliche. Non è consigliato per l'uso da parte degli utenti.

Perché scegliere gli spazi dei nomi Kubernetes?

Esistono molti casi d'uso per gli spazi dei nomi Kubernetes, tra cui:

  • Possibilità per team o progetti di esistere nei loro cluster virtuali senza paura di influire sul lavoro degli altri.
  • Miglioramento dei controlli degli accessi basati sul ruolo (RBAC) limitando utenti e processi a determinati spazi dei nomi.
  • Possibilità di suddividere le risorse di un cluster tra più team e utenti tramite quote di risorse.
  • Possibilità di separare facilmente lo sviluppo, il test e il deployment delle applicazioni containerizzate, consentendo lo svolgimento dell'intero ciclo di vita sullo stesso cluster.

Quando si dovrebbero usare più spazi dei nomi Kubernetes?

Lo spazio dei nomi predefinito è perfetto per i team di piccole dimensioni o le organizzazioni più piccole. È particolarmente adatto se non è necessario isolare gli sviluppatori o gli utenti gli uni dagli altri. Tuttavia, l'utilizzo di più spazi dei nomi offre molti vantaggi, tra cui:

  • Isolamento. I team di grandi dimensioni o in crescita possono utilizzare gli spazi dei nomi per isolare i loro progetti e microservizi l'uno dall'altro. I team possono riutilizzare senza problemi gli stessi nomi di risorse in Workspace diversi. Inoltre, l'esecuzione di un'azione sugli elementi in un Workspace non influisce mai sugli altri Workspace.
  • Organizzazione. Le organizzazioni che utilizzano un singolo cluster per lo sviluppo, i test e la produzione possono utilizzare gli spazi dei nomi per sandbox di ambienti di sviluppo e test. Ciò garantisce che il codice di produzione non sia influenzato dalle modifiche apportate da sviluppatori o responsabili dei test nei loro spazi dei nomi durante il ciclo di vita delle applicazioni.
  • Autorizzazioni. Gli spazi dei nomi consentono l'utilizzo di RBAC Kubernetes, in modo che i team possano definire ruoli che raggruppano elenchi di autorizzazioni o funzionalità sotto un unico nome. Ciò può garantire che solo gli utenti autorizzati abbiano accesso alle risorse in un determinato spazio dei nomi.
  • Controllo delle risorse. Limiti delle risorse basati su policy possono essere impostati sugli spazi dei nomi definendo le quote delle risorse per l'utilizzo della CPU o della memoria. Ciò può garantire che ogni progetto o spazio dei nomi disponga delle risorse necessarie per l'esecuzione e che nessuno spazio dei nomi stia monopolizzando tutte le risorse disponibili.
  • Prestazioni. L'utilizzo degli spazi dei nomi può contribuire a migliorare le prestazioni di un determinato cluster. Se un cluster è separato in più spazi dei nomi per progetti diversi, l'API Kubernetes avrà meno elementi da cercare durante l'esecuzione delle operation. Ciò può ridurre la latenza e accelerare le prestazioni complessive di ciascuna applicazione in esecuzione sul cluster.

In che modo i pod possono comunicare tra gli spazi dei nomi Kubernetes?

Nonostante gli spazi dei nomi siano separati l'uno dall'altro, possono comunicare facilmente tra loro. La directory dei servizi DNS di Kubernetes può individuare facilmente qualsiasi servizio in base al nome utilizzando la forma estesa di indirizzamento DNS:

..svc.cluster.local

La semplice aggiunta del nome dello spazio dei nomi al nome del servizio fornisce l'accesso ai servizi in qualsiasi spazio dei nomi nel cluster. Ad esempio, per accedere al servizio di gestione stipendi nello spazio dei nomi di sviluppo, si usa l'indirizzo
payroll.development
Per accedere al servizio di gestione stipendi nello spazio dei nomi di produzione, si utilizza
payroll.production

Tieni presente che le policy di rete possono essere utilizzate facoltativamente per controllare l'accesso tra gli spazi dei nomi. Ad esempio, una policy di rete può consentire o negare tutto il traffico da altri spazi dei nomi. Le policy di rete si applicano solo alle connessioni e non sostituiscono i firewall che eseguono l'ispezione dei pacchetti.

Quali sono i comandi kubectl di base relativi allo spazio dei nomi?

Qual è il comando per trovare gli spazi dei nomi Kubernetes correnti?

Tutti gli spazi dei nomi nel cluster possono essere visualizzati con il comando:
kubectl get namespace
In questo modo viene restituito un elenco di tutti gli spazi dei nomi nel cluster, inclusi gli spazi dei nomi predefiniti, con i relativi stato ed età.

Qual è il comando per creare un nuovo spazio dei nomi Kubernetes?

Gli spazi dei nomi vengono creati semplicemente con il comando:
kubectl create namespace
Come con qualsiasi altra risorsa Kubernetes, è possibile creare anche un file YAML e applicarlo per creare uno spazio dei nomi:

newspace.yaml:
kind: Namespace
apiVersion: v1
metadata:
name: newspace
labels:
name: newspacekubectl apply -f newspace.yaml

Come si passa da uno spazio dei nomi Kubernetes a un altro?

Per gestire gli spazi dei nomi una volta creati, le azioni devono includere l'opzione –namepsace= nel comando. Poiché questa operazione può risultare complessa, lo spazio dei nomi predefinito può essere modificato utilizzando il comando kubectl config per impostare lo spazio dei nomi nel contesto del cluster.
Ad esempio, per passare dallo spazio dei nomi predefinito a uno denominato "testing", è necessario immettere:
kubectl config set-context --current --namespace=testing
Questo imposterà lo spazio dei nomi predefinito su "testing" per tutti. futuri comandi kubectl.

Come si rinomina uno spazio dei nomi Kubernetes?

Non è una pratica standard rinominare uno spazio dei nomi Kubernetes, quindi scegli attentamente gli spazi dei nomi (al di fuori dell'impostazione predefinita).

Come si elimina uno spazio dei nomi Kubernetes?

Gli spazi dei nomi vengono eliminati con il comando:
kubectl delete namespaces
Poiché l'eliminazione è un'attività asincrona, lo spazio dei nomi verrà visualizzato come "terminating" fino a quando non sarà eliminato.

Un avviso relativo all'eliminazione degli spazi dei nomi Kubernetes

L'eliminazione di uno spazio dei nomi è un atto finale. Tutto ciò che si trova nello spazio dei nomi, inclusi tutti i servizi, i pod in esecuzione e gli artefatti, verrà eliminato. Verrà eseguita una garbage collection su tutto ciò che è stato presente in quello spazio dei nomi. Prima di eseguire questa azione, è necessario eliminare tutti gli elementi presenti nello spazio dei nomi.

Soluzioni e prodotti correlati

Laboratori: modernizzazione delle app

Trasferisci le tue app nel cloud in poche settimane.

Tanzu Kubernetes for Operation

La base per un'infrastruttura di container multi-cloud moderna.

Tanzu Application Platform

Un'esperienza di sviluppo multi-cloud superiore su Kubernetes.