Spazi nomi ed organizzazione

Namespace

Ns1

  • 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.

Ns-default

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

Ns-org

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