Kubernetes cheatsheet
Alcuni comandi k8s frequenti con parametri
Ecco il mio k8s cheat sheet che copre i comandi più importanti di Kubernetes most important commands e i concetti, dall’installazione all’esecuzione dei contenitori e alla pulizia:
Installazione di Kubernetes
Utilizzo di Kubeadm
Per installare Kubernetes utilizzando kubeadm
, segui questi passaggi:
-
Preparare l’ambiente:
- Assicurarsi che i moduli kernel necessari siano abilitati:
sudo sysctl net/bridge/bridge-nf-call-ip6tables=1 sudo sysctl net/bridge/bridge-nf-call-iptables=1 sudo sysctl net/bridge/bridge-nf-call-arptables=1
- Riavviare il sistema per applicare le modifiche.
- Assicurarsi che i moduli kernel necessari siano abilitati:
-
Installare Docker e altri prerequisiti:
- Installare Docker:
sudo apt-get update sudo apt-get install -y docker.io
- Installare
ebtables
eethtool
:sudo apt-get install ebtables ethtool
- Installare il supporto HTTPS e
curl
se necessario:sudo apt-get update sudo apt-get install -y apt-transport-https curl
- Aggiungere il repository Kubernetes e installare
kubeadm
,kubelet
ekubectl
:curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - sudo cat <<EOF >/etc/apt/sources.list.d/kubernetes.list deb http://apt.kubernetes.io/ kubernetes-xenial main EOF sudo apt-get update sudo apt-get install -y kubeadm kubelet kubectl
- Installare Docker:
-
Inizializzare il cluster Kubernetes:
- Inizializzare il primo nodo di controllo:
sudo kubeadm init
- Unire nodi aggiuntivi di controllo e worker:
kubeadm join <control-plane-node>:8443 --token <token> --discovery-token-ca-cert-hash <hash>
- Inizializzare il primo nodo di controllo:
Utilizzo di Minikube o Kind
Per lo sviluppo locale, puoi utilizzare minikube
o kind
:
-
Minikube:
minikube start
Segui la guida ufficiale [Get Started! guide].
-
Kind:
curl -sfL https://get.k3s.io | sh - kind create cluster
Segui la pagina [Kind Quick Start page].
Comandi comuni di kubectl
Comandi base
-
Ottieni informazioni sui risorse:
kubectl get <resource> # Elenco delle risorse (es. pod, servizi, deployment) kubectl get pods --all-namespaces # Elenco di tutti i pod in tutti i namespace kubectl get pods -o wide # Elenco dei pod con maggiori dettagli kubectl get pod my-pod -o yaml # Ottenere la configurazione YAML di un pod.
-
Descrivi le risorse:
kubectl describe <resource> # Descrizione dettagliata di una risorsa (es. nodi, pod) kubectl describe nodes my-node kubectl describe pods my-pod.
-
Crea risorse:
kubectl create -f <manifest-file> # Crea risorse da un file YAML o JSON kubectl create configmap <configmap-name> --from-literal=<key>=<value> # Crea un ConfigMap kubectl create secret generic <secret-name> --from-literal=<key>=<value> # Crea un Secret.
-
Elimina risorse:
kubectl delete <resource> <name> # Elimina una risorsa (es. pod, deployment) kubectl delete pod my-pod kubectl delete deployment my-deployment.
Gestione dei Pod
-
Definisci un comando e argomenti per un container:
apiVersion: v1 kind: Pod metadata: name: command-demo spec: containers: - name: command-demo-container image: debian command: ["printenv"] args: ["HOSTNAME", "KUBERNETES_PORT"]
kubectl apply -f <manifest-file> kubectl get pods kubectl logs command-demo.
-
Esegui un comando in una shell:
apiVersion: v1 kind: Pod metadata: name: shell-demo spec: containers: - name: shell-demo-container image: debian command: ["/bin/sh"] args: ["-c", "while true; do echo hello; sleep 10;done"]
kubectl apply -f <manifest-file> kubectl get pods kubectl logs shell-demo.
Gestione di ConfigMap e Secret
-
Crea un ConfigMap:
kubectl create configmap <configmap-name> --from-literal=<key>=<value> kubectl create configmap app-config --from-literal=environment=production --from-literal=log_level=info.
-
Crea un Secret:
kubectl create secret generic <secret-name> --from-literal=<key>=<value> kubectl create secret generic db-secret --from-literal=username=admin --from-literal=password=supersecret.
Gestione di Deployment e Servizi
-
Crea un Deployment:
kubectl create deployment <deployment-name> --image=<image-name> kubectl create deployment my-deployment --image=nginx:latest.
-
Espone un Deployment come Servizio:
kubectl expose deployment <deployment-name> --type=NodePort --port=<port> kubectl expose deployment my-deployment --type=NodePort --port=80.
Gestione di Namespace e Nodi
-
Elenco dei Namespace:
kubectl get namespaces
-
Crea un Namespace:
kubectl create namespace <namespace-name> kubectl create namespace my-namespace.
-
Elenco dei Nodi:
kubectl get nodes kubectl get nodes --selector='!node-role.kubernetes.io/control-plane'.
Monitoraggio e Debug
-
Visualizza i log:
kubectl logs <pod-name> kubectl logs -f <pod-name> # Segui i log in tempo reale.
-
Descrivi gli eventi:
kubectl describe events
-
Verifica le informazioni del cluster:
kubectl cluster-info kubectl version # Verifica la versione di Kubernetes.
Comandi avanzati
-
Ordina le risorse:
kubectl get pods --sort-by='.status.containerStatuses.restartCount' kubectl get services --sort-by=.metadata.name.
-
Filtra le risorse:
kubectl get pods --field-selector=status.phase=Running kubectl get nodes --selector='!node-role.kubernetes.io/control-plane'.
-
Recupera dati specifici:
kubectl get configmap myconfig -o jsonpath='{.data.ca\.crt}' kubectl get secret my-secret --template='{{index .data "key-name-with-dashes"}}'.