Kubernetes - Commandes
Alasta 21 Juillet 2024 kubernetes kubernetes cli
Description : Commandes génériques kubernetes
Commandes Kubernetes
POD
Création de pod
kubectl run nginx-pod --image=nginx [--restart=Never --port=80 -n default]Lister les pods du namespace courant
kubectl get podsLister les pods d’un namespace
kubectl get pods --namespace=<my_namespace>Se connecter au pod
kubectl exec --stdin --tty <my-pod> -- /bin/bashSe connecter à un conteneur d’un pod
kubectl exec -i -t <my-pod> --container <main-app> -- /bin/bashLancer une commande et avoir le retour sans connection
kubectl exec <my-pod> -- envReplicaSet
Création de ReplicaSet
kubectl create -f replicaset-def.ymlRemplacement de ReplicaSet
kubectl replace -f replicaset-def.ymlou
kubectl scale --replicas=6 -f replicaset-def.ymlou
kubectl scale --replicas=6 replicaset <my_replicaset_name>Listing des ReplicaSet
kubectl get replicaset --namespace=<my_namespace>Description de ReplicaSet
kubectl describe replicaset [<my_replicaset_name>]Edition d’un ReplicaSet
kubectl edit replicaset <my_replicaset_name>Suppression d’un ReplicaSet
kubectl delete -f replicaset-def.ymlou
kubectl delete replicaset <my_replicaset_name>Déploiement
Création de déploiement
kubectl -f deployment-def.ymlLister les déploiements
kubectl get deploymentsModifier l’image dans le déploiement
kubectl set image deployment/my-deployment nginx=nginx:1.9.1Status Rollout
kubectl rollout status deployment/my-deploymentNote: un rollout manage les resources suivantes : deployments / daemonsets / statefulsets
Historique des rollout
kubectl rollout history deployment/my-deploymentAnnule un rollout / Rollback
kubectl rollout undo deployment/my-deploymentRedémarrer un deployment
kubectl rollout restart deployment/abc
kubectl rollout restart deployment --selector=app=nginxNamespace
Lister les namespaces
kubectl get namespacesChanger le namespace courant
kubectl config set-context $(kubectl config current-context) --namespace=prod
Resource Quota
Lister les resources quota
kubectl get quotaDecrire les resources quota
kubectl describe quotaLabels & Selectors
Lister les pods avec un label spécifique
kubectl get pods --selector app=nginx
kubectl get pods -l app=nginxDonner un ou des labels à un pod
kubectl label pods myapp-pod env=prod
kubectl label pod myapp2-pod env=dev tier=frontendSupprimer un label à un pod
kubectl label pods myapp-pod env-Afficher toutes les ressources avec un label spécifique
kubectl describe all --selector tier=frontendSupprimer des pods avec un label spécifique
kubectl delete pods --selector environment=developmentAffichier les logs containers avec un label spécifique
kubectl logs -l app=mysql --all-containersAffichier les logs d’un pod
kubectl logs <pod>
k logs --since=1h <pod>
k logs --tail=10 <pod>Affichier les logs d’un container spécifique dans un pod
kubectl logs <pod> -c <container>note: le “-c” est facultatif
Afficher les services avec le label app myapp ou myapp2 et l’env prod
kubectl get services --selector='app in (myapp,myapp2)',env=prod ## or notinAfficher toutes les ressources avec des labels
kubectl get all --show-labelsAfficher tous les pods avec des labels
kubectl get pods --show-labelsNote: fonctionne aussi avec les ReplicaSet & Deployment.
Taints & Tolerances
Lister les nodes avec leurs taints
kubectl get nodes -o=custom-columns=NodeName:.metadata.name,TaintKey:.spec.taints[*].key,TaintValue:.spec.taints[*].value,TaintEffect:.spec.taints[*].effectLister les pods avec leurs taints
kubectl get pods -o=custom-columns=NodeName:.metadata.name,TolerationKey:.spec.tolerations[*].key,TolerationOperator:.spec.tolerations[*].operator,TolerationValue:.spec.tolerations[*].value,TolerationEffect:.spec.tolerations[*].effectTaint un node
kubectl taint nodes node1 app=blue:NoScheduleSupprimer une taint un node
kubectl taint nodes node1 app=blue:NoSchedule-DaemonSet
Lister les daemonsets
kubectl get daemonsetDescription d’un daemonset
kubectl describe daemonset monitoring-agentService Account
Créer un Service Account
kubectl create serviceaccounts <account_name>Lister les Service Accounts
kubectl get serviceaccounts Raccourçis
- ds: DaemonSet
- deploy: Deployment
- ev: Events
- ns: Namespace
- no: Node
- po: Pod
- rc: Replication Controller
- rs: ReplicaSet
- svc: Services
- sa: Service Accounts
- sts: StatefulSet
ConfigMaps
Créer une configMap en CLI
kubectl create configmap <config-name> --from-literal=<key>=<value> --from-literal=<key2>=<value2>
Ou
kubectl create configmap <config-name> --from-file=/path/or/path/to/file1.txt --from-file=/path/or/path/to/file2.txtLister les configMap
k get configmapsLister le contenu d’une configMap
k get configmaps color-configmap -o yaml
Ou
k describe configmaps color-configmapSecrets
Créer un secret en CLI
kubectl create secret <type> <secret-name> --from-literal=<key>=<value> --from-literal=<key2>=<value2>
Ou
kubectl create secret <type> <secret-name> --from-file=/path/or/path/to/file1.txt --from-file=/path/or/path/to/file2.txt Decoder le secret
kubectl get secret <secret-name> -o 'jsonpath={.data.<secret>}' | base64 -dLister les configMap
k get secretLister le contenu d’une configMap
k get secret <secret-name> -o yaml
Ou
k describe secret <secret-name>Note: pour connaître le secret, il faut décoder le contenu de la value en base64.
Cluster
Etat des composants du cluster
kubectl get --raw='/readyz?verbose'
[+]ping ok
[+]log ok
[+]etcd ok
[+]etcd-readiness ok
[+]informer-sync ok
[+]poststarthook/start-apiserver-admission-initializer ok
[+]poststarthook/generic-apiserver-start-informers ok
[+]poststarthook/priority-and-fairness-config-consumer ok
[+]poststarthook/priority-and-fairness-filter ok
[+]poststarthook/storage-object-count-tracker-hook ok
[+]poststarthook/start-apiextensions-informers ok
[+]poststarthook/start-apiextensions-controllers ok
[+]poststarthook/crd-informer-synced ok
[+]poststarthook/start-service-ip-repair-controllers ok
[+]poststarthook/rbac/bootstrap-roles ok
[+]poststarthook/scheduling/bootstrap-system-priority-classes ok
[+]poststarthook/priority-and-fairness-config-producer ok
[+]poststarthook/start-system-namespaces-controller ok
[+]poststarthook/bootstrap-controller ok
[+]poststarthook/start-cluster-authentication-info-controller ok
[+]poststarthook/start-kube-apiserver-identity-lease-controller ok
[+]poststarthook/start-kube-apiserver-identity-lease-garbage-collector ok
[+]poststarthook/start-legacy-token-tracking-controller ok
[+]poststarthook/aggregator-reload-proxy-client-cert ok
[+]poststarthook/start-kube-aggregator-informers ok
[+]poststarthook/apiservice-registration-controller ok
[+]poststarthook/apiservice-status-available-controller ok
[+]poststarthook/apiservice-discovery-controller ok
[+]poststarthook/kube-apiserver-autoregistration ok
[+]autoregister-completion ok
[+]poststarthook/apiservice-openapi-controller ok
[+]poststarthook/apiservice-openapiv3-controller ok
[+]shutdown ok
readyz check passedNote: fonctionne aussi avec : curl -k https://localhost:6443/livez?verbose
Infos sur le cluster
kubectl cluster-info
Kubernetes control plane is running at https://192.168.49.2:8443
CoreDNS is running at https://192.168.49.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxyPlus verbeux:
kubectl cluster-info dumpLister les clusters
kubectl config get-contextsSur quel cluster on est connecté
kubectl config current-contextSwitch de cluster
kubectl config use-context <cluster>Dry-run client
Commande pour avoir des templates yaml permettant de gérer facilement l’indentation.
Pod:
kubectl run nginx --image=nginx --dry-run=client -o yamlDeployment:
kubectl create deployment --image=nginx nginx --dry-run=client -o yamlDeployment:
kubectl expose deployment kuard --port 8080 --target-port=8080 --output yaml --dry-run=clientRBAC
Tester ses droits:
kubectl auth can-i create deployments
yes
kubectl auth can-i delete nodes
nonote: on peut ajouter le namespace via **–namespance
Tester ses droits avec de l’impersonnalisation:
kubectl auth can-i create deployments —as dev-user
no
kubectl auth can-i delete nodes —as dev-user
yes
kubectl --as=system:serviceaccount:MYNS:MYSA auth can-i get configmap/MYCM
yesEndpoints
k get endpoints [<service>]k get endpoints [<service>] -o yaml k describe endpoints [<service>]EndpointSlices
k get endpointslices [<service>]k get endpointslices [<service>] -o yaml k describe endpointslices [<service>]API group
Afficher les ressources qui sont gérées de manière globale ou par namespace
k api-resources --namespaced=<true/false>Afficher toutes les types de ressources, verbs
k api-resources -o wideAutre
Afficher toutes les ressources
kubectl get allRécupérer les événements sur un namespace particulier
kubectl get events -n frontend