Skip to content

Kubernetes Cheat Sheet (Οδηγός Αναφοράς)

Το Kubernetes, συχνά αναφερόμενο ως K8s (όπου το “8” αντικαθιστά τα οκτώ γράμματα στη λέξη “ubernete”), είναι ένα σύστημα ανοικτού κώδικα για τη διαχείριση εφαρμογών σε containers σε πολλαπλούς κεντρικούς υπολογιστές σε μια πλατφόρμα cloud. Ο στόχος του Kubernetes είναι να καταστήσει την ανάπτυξη εφαρμογών σε containers απλή και αποτελεσματική (ισχυρή). Το Kubernetes παρέχει μηχανισμούς για την ανάπτυξη εφαρμογών, τον προγραμματισμό, τις ενημερώσεις και τη συντήρηση.

Προβολή Πληροφοριών Πόρων

Κόμβοι (Nodes)

Όνομα πόρου: nodes, Συντομογραφία: no

$ kubectl get no          # Προβολή όλων των κόμβων
$ kubectl get no -o wide  # Προβολή περισσότερων πληροφοριών για όλους τους κόμβους
$ kubectl describe no     # Προβολή λεπτομερειών κόμβου
$ kubectl get no -o yaml  # Προβολή λεπτομερειών κόμβου σε μορφή YAML
$ kubectl get node --selector=[label_name] # Φιλτράρισμα κόμβων βάσει συγκεκριμένης ετικέτας
$ kubectl get nodes -o jsonpath='{.items[*].status.addresses[?(@.type=="ExternalIP")].address}'
# Έξοδος πληροφοριών πεδίου που ορίζονται από έκφραση jsonpath
$ kubectl top node [node_name] # Προβολή χρήσης κόμβου (CPU/Μνήμη/Αποθηκευτικός χώρος)

Pods

Όνομα πόρου: pods, Συντομογραφία: po

$ kubectl get po 				# Προβολή όλων των pods
$ kubectl get po -o wide
$ kubectl describe po
$ kubectl get po --show-labels 	# Προβολή ετικετών των pods
$ kubectl get po -l app=nginx
$ kubectl get po -o yaml
$ kubectl get pod [pod_name] -o yaml --export
$ kubectl get pod [pod_name] -o yaml --export > nameoffile.yaml 
# Εξαγωγή πληροφοριών pod σε αρχείο YAML
$ kubectl get pods --field-selector status.phase=Running 		
# Φιλτράρισμα πληροφοριών pods χρησιμοποιώντας επιλογείς πεδίων

Διαστήματα Ονομάτων (Namespaces)

Όνομα πόρου: namespaces, Συντομογραφία: ns

$ kubectl get ns
$ kubectl get ns -o yaml
$ kubectl describe ns

Αναπτύξεις (Deployments)

Όνομα πόρου: deployments, Συντομογραφία: deploy

$ kubectl get deploy
$ kubectl describe deploy
$ kubectl get deploy -o wide 
$ kubectl get deploy -o yaml

Υπηρεσίες (Services)

Όνομα πόρου: services, Συντομογραφία: svc

$ kubectl get svc
$ kubectl describe svc
$ kubectl get svc -o wide 
$ kubectl get svc -o yaml
$ kubectl get svc --show-labels

DaemonSets

Όνομα πόρου: daemonsets, Συντομογραφία: ds

$ kubectl get ds
$ kubectl describe ds --all-namespaces
$ kubectl describe ds [daemonset_name] -n [namespace_name]
$ kubectl get ds [ds_name] -n [ns_name] -o yaml

Συμβάντα (Events)

Όνομα πόρου: events, Συντομογραφία: ev

$ kubectl get events 
$ kubectl get events -n kube-system
$ kubectl get events -w

Καταγραφές (Logs)

$ kubectl logs [pod_name]
$ kubectl logs --since=1h [pod_name]
$ kubectl logs --tail=20 [pod_name]
$ kubectl logs -f -c [container_name] [pod_name]
$ kubectl logs [pod_name] > pod.log

Λογαριασμοί Υπηρεσιών (Service Accounts)

Όνομα πόρου: serviceaccounts, Συντομογραφία: sa

$ kubectl get sa
$ kubectl get sa -o yaml
$ kubectl get serviceaccounts default -o yaml >./sa.yaml
$ kubectl replace serviceaccount default -f ./sa.yaml

ReplicaSets

Όνομα πόρου: replicasets, Συντομογραφία: rs

$ kubectl get rs
$ kubectl describe rs
$ kubectl get rs -o wide 
$ kubectl get rs -o yaml

Ρόλοι (Roles)

$ kubectl get roles --all-namespaces
$ kubectl get roles --all-namespaces -o yaml

Μυστικά (Secrets)

$ kubectl get secrets
$ kubectl get secrets --all-namespaces 
$ kubectl get secrets -o yaml

ConfigMaps

Όνομα πόρου: configmaps, Συντομογραφία: cm

$ kubectl get cm
$ kubectl get cm --all-namespaces
$ kubectl get cm --all-namespaces -o yaml

Ingresses

Όνομα πόρου: ingresses, Συντομογραφία: ing

$ kubectl get ing
$ kubectl get ing --all-namespaces

Μόνιμοι Τόμοι (PersistentVolumes)

Όνομα πόρου: persistentvolumes, Συντομογραφία: pv

$ kubectl get pv 
$ kubectl describe pv

Αιτήματα Μόνιμων Τόμων (PersistentVolumeClaims)

Όνομα πόρου: persistentvolumeclaims, Συντομογραφία: pvc

$ kubectl get pvc
$ kubectl describe pvc

Κλάσεις Αποθήκευσης (StorageClasses)

Όνομα πόρου: storageclasses, Συντομογραφία: sc

$ kubectl get sc
$ kubectl get sc -o yaml

Πολλαπλοί Πόροι

$ kubectl get svc, po
$ kubectl get deploy, no
$ kubectl get all
$ kubectl get all --all-namespaces

Τροποποίηση Ιδιοτήτων Πόρων

Taints

$ kubectl taint [node_name] [taint_name]

Ετικέτες (Labels)

$ kubectl label [node_name] disktype=ssd 
$ kubectl label [pod_name] env=prod

Cordon / Uncordon

$ kubectl cordon [node_name]   # Σήμανση κόμβου για συντήρηση (μη προγραμματίσιμος)
$ kubectl uncordon [node_name] # Επαναφορά κόμβου σε προγραμματίσιμη κατάσταση

Εκκένωση Κόμβων (Draining Nodes)

$ kubectl drain [node_name]    # Εκκένωση κόμβου

Κόμβοι / Pods

$ kubectl delete node [node_name] 
$ kubectl delete pod [pod_name]
$ kubectl edit node [node_name]
$ kubectl edit pod [pod_name]

Αναπτύξεις / Διαστήματα Ονομάτων

$ kubectl edit deploy [deploy_name]
$ kubectl delete deploy [deploy_name]
$ kubectl expose deploy [deploy_name] --port=80 --type=NodePort
$ kubectl scale deploy [deploy_name] --replicas=5
$ kubectl delete ns
$ kubectl edit ns [ns_name]

Υπηρεσίες

$ kubectl edit svc [svc_name]
$ kubectl delete svc [svc_name]

DaemonSets

$ kubectl edit ds [ds_name] -n kube-system 
$ kubectl delete ds [ds_name]

Λογαριασμοί Υπηρεσιών

$ kubectl edit sa [sa_name]
$ kubectl delete sa [sa_name]

Σχόλια (Annotations)

$ kubectl annotate po [pod_name] [annotation]
$ kubectl annotate no [node_name]

Προσθήκη Πόρων

Δημιουργία Pods

$ kubectl create -f [name_of_file] 
$ kubectl apply -f [name_of_file]
$ kubectl run [pod_name] --image=nginx --restart=Never
$ kubectl run [pod_name] --generator=run-pod/v1 --image=nginx
$ kubectl run [pod_name] --image=nginx --restart=Never

Δημιουργία Υπηρεσιών

$ kubectl create svc nodeport [svc_name] --tcp=8080:80

Δημιουργία Αναπτύξεων

$ kubectl create -f [name_of_file] 
$ kubectl apply -f [name_of_file]
$ kubectl create deploy [deploy_name] --image=nginx

Αλληλεπίδραση με Container

$ kubectl run [pod_name] --image=busybox --rm -it --restart=Never -- sh

Έξοδος Αρχείων YAML

$ kubectl create deploy [deploy_name] --image=nginx --dry-run -o yaml > deploy.yaml
$ kubectl get po [pod_name] -o yaml --export > pod.yaml

Λήψη Βοήθειας

$ kubectl -h
$ kubectl create -h
$ kubectl run -h
$ kubectl explain deploy.spec

Αιτήματα

Κλήσεις API

$ kubectl get --raw /apis/metrics.k8s.io/

Πληροφορίες Συμπλέγματος

$ kubectl config
$ kubectl cluster-info
$ kubectl get componentstatus