Spazi nomi ed organizzazione
Namespace
- Organizzazione delle risorse
- Cluster virtuale in un cluster
Lista dei namespace col comando:
kubectl get namespaces
NAME STATUS AGE
default Active 104s
kube-node-lease Active 110s
kube-public Active 110s
kube-system Active 111s
local-path-storage Active 72s
Alcuni namespace sono di sistema e non devono essere toccati.
Il namespace di default è default
.
Ogni nuova risorsa viene creata qui dentro.
Uso di Namespace
Creazione di namespace:
kubectl create namespace my-namespace
Rimozione di namespace:
kubectl delete namespace my-namespace
Uso di namespace in file di specifiche, p.es in scripts/mysql-configmap.yml
:
apiVersion: v1
kind: ConfigMap
metadata:
name: mysql-configmap
namespace: my-namespace
data:
db_url: mysql-service.database
La configmap corrente è nel namespace my-namespace
.
Il servizio riferito mysql-service è nel namespace database
.
Organizzazione dei Namespace
Suddivisione organizzativa in:
- Namespace privati
- Namespace comuni - a cui i ns privati si riferiscono
Limitazioni.
Alcune risorse possono riferire ad altri ns ma non essere riferite da altri ns:
- ConfigMap
- Secret
Alcune risorse non appartengono a namespaces ma sono globali:
- Volume
- Node
Utilities per Namespaces
Krew
Gestione plugins per Kubernetes.
Krew ha bisogno del pacchetto ncurses
. In Alpine:
apk add ncurses
Installazione, per Bash su qualsiasi Linux:
(
set -x; cd "$(mktemp -d)" &&
OS="$(uname | tr '[:upper:]' '[:lower:]')" &&
ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" &&
KREW="krew-${OS}_${ARCH}" &&
curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" &&
tar zxvf "${KREW}.tar.gz" &&
./"${KREW}" install krew
)
E modificare il PATH:
echo 'export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"' >> .profile
Logout e login di nuovo.
kubectx e kubens
kubectx
- cambiare contesto (cluster)kubens
- cambiare namespace di default
Installati tramite krew
:
kubectl krew install ctx
kubectl krew install ns
echo "alias kubectx='kubectl ctx'" >> ~/.profile
echo "alias kubens='kubectl ns'" >> ~/.profile
Logout e login di nuovo.
Uso.
Listare i namespaces:
kubens
Cambiare namespace di default:
kubens namespace
Secondo Cluster
KinD supporta la creazione di più cluster.
Configurare un nuovo cluster con la configurazione ~/scripts/second.yml
:
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
Creare il cluster:
kind create cluster --name second --config ~/scripts/second.yml --image kindest/node:v1.24.0
Di default siamo posizionati nel contesto del nuovo cluster.
Listare i contesti (cluster):
kubectx
Il contesto corrente è evidenziato.
Cambiare contesto:
kubectx second
Cancellare il cluster:
kind delete cluster --name second