Το 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