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-labelsDaemonSets
Όνομα πόρου: 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.yamlReplicaSets
Όνομα πόρου: 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 yamlConfigMaps
Όνομα πόρου: configmaps, Συντομογραφία: cm
$ kubectl get cm
$ kubectl get cm --all-namespaces
$ kubectl get cm --all-namespaces -o yamlIngresses
Όνομα πόρου: 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=prodCordon / 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