Kartka pomocna do Kubernetes
Częste polecenia k8s z parametrami
Oto moja k8s cheat sheet zawierająca najważniejsze polecenia i pojęcia dotyczące instalacji, uruchamiania kontenerów i czyszczenia:
Instalacja Kubernetes
Używanie Kubeadm
Aby zainstalować Kubernetes za pomocą kubeadm
, wykonaj następujące kroki:
-
Przygotuj środowisko:
- Upewnij się, że odpowiednie moduły jądra są włączone:
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
- Przeładuj system, aby zastosować zmiany.
- Upewnij się, że odpowiednie moduły jądra są włączone:
-
Zainstaluj Docker i inne wymagania wstępne:
- Zainstaluj Docker:
sudo apt-get update sudo apt-get install -y docker.io
- Zainstaluj
ebtables
iethtool
:sudo apt-get install ebtables ethtool
- Zainstaluj obsługę HTTPS i
curl
, jeśli jest to konieczne:sudo apt-get update sudo apt-get install -y apt-transport-https curl
- Dodaj repozytorium Kubernetes i zainstaluj
kubeadm
,kubelet
ikubectl
: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
- Zainstaluj Docker:
-
Inicjalizuj klaster Kubernetes:
- Inicjalizuj pierwszy węzeł kontrolny:
sudo kubeadm init
- Dołącz dodatkowe węzły kontrolne i robocze:
kubeadm join <control-plane-node>:8443 --token <token> --discovery-token-ca-cert-hash <hash>
- Inicjalizuj pierwszy węzeł kontrolny:
Używanie Minikube lub Kind
Dla rozwoju lokalnego możesz użyć minikube
lub kind
:
-
Minikube:
minikube start
Postępuj zgodnie z oficjalnym [przewodnikiem do rozpoczęcia pracy].
-
Kind:
curl -sfL https://get.k3s.io | sh - kind create cluster
Postępuj zgodnie z [stroną szybkiego startu Kind].
Powszechne polecenia kubectl
Podstawowe polecenia
-
Pobierz informacje o zasobach:
kubectl get <resource> # Lista zasobów (np. pods, services, deployments) kubectl get pods --all-namespaces # Lista wszystkich pods w wszystkich przestrzeniach nazw kubectl get pods -o wide # Lista pods z większymi szczegółami kubectl get pod my-pod -o yaml # Pobierz konfigurację YAML pods.
-
Opisz zasoby:
kubectl describe <resource> # Szczegółowy opis zasobu (np. węzły, pods) kubectl describe nodes my-node kubectl describe pods my-pod.
-
Utwórz zasoby:
kubectl create -f <manifest-file> # Utwórz zasoby z pliku YAML lub JSON kubectl create configmap <configmap-name> --from-literal=<key>=<value> # Utwórz ConfigMap kubectl create secret generic <secret-name> --from-literal=<key>=<value> # Utwórz Secret.
-
Usuń zasoby:
kubectl delete <resource> <name> # Usuń zasób (np. pod, deployment) kubectl delete pod my-pod kubectl delete deployment my-deployment.
Zarządzanie pods
-
Zdefiniuj polecenie i argumenty dla kontenera:
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.
-
Uruchom polecenie w powłoce:
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.
Zarządzanie ConfigMap i Secret
-
Utwórz ConfigMap:
kubectl create configmap <configmap-name> --from-literal=<key>=<value> kubectl create configmap app-config --from-literal=environment=production --from-literal=log_level=info.
-
Utwórz 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.
Zarządzanie wdrożeniami i usługami
-
Utwórz wdrożenie:
kubectl create deployment <deployment-name> --image=<image-name> kubectl create deployment my-deployment --image=nginx:latest.
-
Wystaw wdrożenie jako usługę:
kubectl expose deployment <deployment-name> --type=NodePort --port=<port> kubectl expose deployment my-deployment --type=NodePort --port=80.
Zarządzanie przestrzeniami nazw i węzłami
-
Wyświetl przestrzenie nazw:
kubectl get namespaces
-
Utwórz przestrzeń nazw:
kubectl create namespace <namespace-name> kubectl create namespace my-namespace.
-
Wyświetl węzły:
kubectl get nodes kubectl get nodes --selector='!node-role.kubernetes.io/control-plane'.
Monitorowanie i debugowanie
-
Wyświetl logi:
kubectl logs <pod-name> kubectl logs -f <pod-name> # Monitoruj logi w czasie rzeczywistym.
-
Opisz zdarzenia:
kubectl describe events
-
Sprawdź informacje o klastrze:
kubectl cluster-info kubectl version # Sprawdź wersję Kubernetes.
Zaawansowane polecenia
-
Sortuj zasoby:
kubectl get pods --sort-by='.status.containerStatuses.restartCount' kubectl get services --sort-by=.metadata.name.
-
Filtruj zasoby:
kubectl get pods --field-selector=status.phase=Running kubectl get nodes --selector='!node-role.kubernetes.io/control-plane'.
-
Pobierz konkretne dane:
kubectl get configmap myconfig -o jsonpath='{.data.ca\.crt}' kubectl get secret my-secret --template='{{index .data "key-name-with-dashes"}}'.