Outils pour utilisateurs

Outils du site


tech:notes_kubernetes_k8s_-_utilisation

Ceci est une ancienne révision du document !


Notes Kubernetes k8s - Utilisation

Voir :

kubectl api-resources -o wide
kubectl explain deploy
 
kubectl get nodes
kubectl get pods --all-namespaces
kubectl --namespace=kube-system get all
kubectl --kubeconfig .kube/config  get nodes
export KUBECONFIG=/etc/kubernetes/admin.conf
#export KUBECONFIG=~/.kube/config
cp /etc/kubernetes/admin.conf ~/.kube/config
 
kubectl --server=https://192.168.56.21:6443 get nodes -o wide
kubectl get deployment --all-namespaces
kubectl get svc

Administration

Diagnostiquer le dysfonctionnement d'un pod Kubernetes

# Voir les logs
kubectl logs monpod
# Si le pod est en erreur
kubectl describe po monpod
# Si le pod n'existe pas, voir le replicaset qui devrait le créer (s'il y en a un)
kubectl describe rs monreplicaset
# Si le replicaset n'existe pas, voir son déploiement/statefulset/autre
kubectl describe deploy mondeploiement
kubectl describe sts mon statefulset

Vous pouvez consulter ce diagramme pour le troubleshooting d'un déploiement Consulter les logs de l'api server Kubernetes

On y trouvera notamment les requêtes récentes des utilisateurs et leur droits RBAC

kubectl -n kube-system logs -l component=kube-apiserver --tail 1000

Consulter les logs de plop

Peut permettre d'avoir des détails sur les messages d'erreurs de plop

kubectl -n plop logs -l app=plop -c plop --tail 1000

Note: on pourra passer plop en mode debug pour avoir des informations plus complètes (kubectl -n plop edit ds plop, puis “- --log-level=debug” dans les arguments du container) Lister les pvs de chaque node

Permet de voir les pvs (persistent volumes) disponibles sur chaque node, par exemple pour débugger un statefulset dont un pvc est en état “Pending”

export JSONPATH='{range .items[*]}{@.metadata.name}  {@.spec.nodeAffinity.required.nodeSelectorTerms[*].matchExpressions[*].values[]}  {@.status.phase}  {@.spec.capacity.storage};{end}'
kubectl get pv -o jsonpath="$JSONPATH" | tr ";" "\n"

Objets Kubernetes

Commandes pour retrouver le pod / daemonset / deploiement responsable du container “plop”:

# À utiliser sur un master, les noeuds n'ont pas la commande "kubectl"
kubectl get pod -A | grep plop
kubectl get ds -A | grep plop
kubectl get deploy -A | grep plop

Procédures Restart des pods

Se placer dans le namespace des frontaux valplop

kubectl config set-context $(kubectl config current-context) --namespace=zzz-valplop

Vérifier qu'on accède bien au cluster k8s en listant les pods

kubectl get pods

Résultat attendu

NAME                          READY   STATUS    RESTARTS   AGE
bac-valplop-8686574455-bnplq   4/4     Running   0          6d21h
bac-valplop-8686574455-ddxcf   4/4     Running   0          4d3h
bac-valplop-8686574455-dr25b   4/4     Running   0          6d21h
[...]

Vérifier quelle ressource deployment on veut relancer

kubectl get deployments.apps

Lancer un rollout (= restart des pods du deployment ciblé)

kubectl rollout restart deployment <nom du deployment>

On peut surveiller le restart séquentiel des pods avec l'utilitaire k9s, les nouveaux pods passeront successivement les états Pending, ContainerCreating, Running… les anciens passeront en Terminated et disparaitront

Restart pod récalcitrant

kubectl delete pod cassandra-cl02livebgl-a-0 --grace-period=0 --force

Je veux savoir ma conso sur mon namespace

kubectl -n $namespace get ResourceQuota kaas-compute-resources-$namespace -o yaml

Restart a resource

Resource rollout will be restarted.

kubectl rollout restart RESOURCE

Examples

# Restart all deployments in the test-namespace namespace
kubectl rollout restart deployment -n test-namespace

# Restart a deployment
kubectl rollout restart deployment/nginx

# Restart a daemon set
kubectl rollout restart daemonset/abc

# Restart deployments with the app=nginx label
kubectl rollout restart deployment --selector=app=nginx

Notes install nodes

Clef SSH /root/.ssh/

apt-get install curl

Install kubectl Install kubeadm Install Docker

kubectl get nodes -o wide
kubectl version
kubectl cluster-info

To further debug and diagnose cluster problems, use kubectl cluster-info dump

kubectl get namespaces
kubectl api-resources
# kubectl run hello --image=hello-world
pod/hello created
# kubectl get pods
NAME    READY   STATUS             RESTARTS     AGE
hello   0/1     CrashLoopBackOff   1 (4s ago)   10s

CrashLoopBackOff signifit que le container fait que de cracher, ce qui est normal pour le 'hello-word' qui se termine systématiquement

kubectl run nginx --image=nginx
kubectl describe pod nginx

Get a shell to the running container

kubectl exec -ti nginx -- /bin/bash

Get a shell to a specific running container

# Get containers list
kubectl get pod awx-task-777db545b8-7npjl -o jsonpath='{.spec.containers[*].name }'
 
kubectl exec -ti awx-task-777db545b8-7npjl --container awx-ee -- /bin/bash

Port mapping

kubectl port-forward nginx 8080:80
kubectl create deployment nginx-deployment --image=nginx
 
kubectl expose deployment nginx-deployment --port=8080 --target-port=80
kubectl get services
# kubectl describe deployment nginx-deployment |grep ^Replicas:
Replicas:               1 desired | 1 updated | 1 total | 1 available | 0 unavailable

# kubectl scale deployment nginx-deployment --replicas=2
deployment.apps/nginx-deployment scaled

Création d'un pod

nginx.yaml
apiVersion: v1
kind: Pod
metadata:
  name: www
spec:
  containers:
    - name: nginx
      image: nginx:1.12.2
kubectl create -f pod.yaml
tech/notes_kubernetes_k8s_-_utilisation.1762443964.txt.gz · Dernière modification : de Jean-Baptiste

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki