Blame
| b7d0e3 | Cédric | 2025-12-23 18:02:11 | 1 | #### Divers kubectl : |
| 2 | ```shell |
|||
| 3 | kubectl get pods |
|||
| 4 | kubectl --namespace kube-system get pods |
|||
| 5 | kubectl get all (dans le namespace par défaut) |
|||
| 6 | kubectl get pod --all-namespaces |
|||
| 7 | ||||
| 8 | kubectl config set-context --current --namespace default |
|||
| 9 | kubectl get services --all-namespaces |
|||
| 10 | ``` |
|||
| 11 | ||||
| 12 | #### Récuperer toutes les api dispos sur kubectl : |
|||
| 13 | ```shell |
|||
| 14 | kubectl api-resources |
|||
| 15 | ``` |
|||
| 16 | ||||
| 17 | #### Créer un token sur un user : |
|||
| 18 | ```shell |
|||
| 19 | kubectl -n kubernetes-namespace create token user |
|||
| 20 | ``` |
|||
| 21 | #### Se connecter sur un pod : |
|||
| 22 | ```shell |
|||
| 23 | kubectl exec --stdin --tty <pod> -- /bin/bash (par exemple) |
|||
| 24 | ``` |
|||
| 25 | #### Obtenir des logs sur un pod |
|||
| 26 | ```shell |
|||
| 27 | kubectl logs mariadb-deployment-d7897d899-kv4z9 |
|||
| 28 | ``` |
|||
| 29 | #### Passer des commandes sur le cluster en démarrant une image debian ephémère : |
|||
| 30 | ```shell |
|||
| 31 | kubectl run debianpod -i --tty --image debian:bullseye --restart=Never -- bash |
|||
| 32 | ``` |
|||
| 33 | #### Par exemple utilisation client mysql sur une debian éphémère : |
|||
| 34 | ``` shell |
|||
| 35 | apt install mariadb-client |
|||
| 36 | mysql -uradmin -pXXXXXX -hmariadb.mariadb.svc.cluster.local |
|||
| 37 | ``` |
|||
| 38 | ### Créer un secret "from-literal" : |
|||
| 39 | ```shell |
|||
| 40 | kubectl create secret generic my-test-secret --from-literal=rootpassword=alphabeta |
|||
| 41 | ``` |
|||
| 42 | #### Le Supprimer : |
|||
| 43 | ```shell |
|||
| 44 | kubectl delete secret my-test-secret |
|||
| 45 | ``` |
|||
| 46 | #### Ensuite pour le récupérer : |
|||
| 47 | ```shell |
|||
| 48 | kubectl get secret my-test-secret -o go-template='{{.data}}' |
|||
| 49 | map[rootpassword:YWxwaGFiZXRh] |
|||
| 50 | ||||
| 51 | echo "YWxwaGFiZXRh" | base64 -d |
|||
| 52 | alphabeta |
|||
| 53 | ``` |
|||
| 54 | ||||
| 55 | ### Visualiser les labels des nodes |
|||
| 56 | ```shell |
|||
| 57 | kubectl get nodes --show-labels |
|||
| 58 | ``` |
|||
| 59 | ... le seter : |
|||
| 60 | ```shell |
|||
| 61 | kubectl label nodes <your-node-name> label=value |
|||
| 62 | ``` |
|||
| 63 | ||||
| 64 | ### Affecter un label à quelque chose (des pods par exemple) |
|||
| 65 | ```yaml |
|||
| 66 | spec: |
|||
| 67 | nodeSelector: |
|||
| 68 | label: value |
|||
| 69 | ``` |
|||
| 70 | ||||
| 71 | ### Exsemple de Security Context |
|||
| 72 | ```shell |
|||
| 73 | image: toto:version |
|||
| 74 | volumesMount: |
|||
| 75 | (...) |
|||
| 76 | securityContext: |
|||
| 77 | privileged: true |
|||
| 78 | ``` |
|||
| 79 | ||||
| 80 | ### Affinité sur un Node particulier (exemple alice) |
|||
| 81 | ```shell |
|||
| 82 | kubectl label nodes alice clefnode=primary (par exemple) |
|||
| 83 | kubectl get node alice --show-labels |
|||
| 84 | ``` |
|||
| 85 | ... et ensuite |
|||
| 86 | ```yaml |
|||
| 87 | affinity: |
|||
| 88 | nodeAffinity: |
|||
| 89 | requiredDuringSchedulingIgnoredDuringExecution: |
|||
| 90 | # preferred marche aussi, autant coté nodeAffinity que sur podAffinity |
|||
| 91 | nodeSelectorTerms: |
|||
| 92 | - matchExpressions: |
|||
| 93 | - key: clefnode |
|||
| 94 | operator: In |
|||
| 95 | values: |
|||
| 96 | - primary |
|||
| 97 | # options possibles sur le pod avec labelSelector |
|||
| 98 | # - labelSelector |
|||
| 99 | # matchLabels: |
|||
| 100 | # app: backend (par exemple) |
|||
| 101 | # topologyKey : "kubernetes.io/hostname" (forcer sur les pods sur le même serveur) |
|||
| 102 | ``` |
|||
| 103 | #### Avoir des explications sur une spec |
|||
| 104 | ```shell |
|||
| 105 | kubectl explain pod.spec.affinity.nodeAffinity (par exemple) |
|||
| 106 | ``` |
|||
| 107 | #### Forcer la suppression de pv/pvc : |
|||
| 108 | ```shell |
|||
| 109 | kubectl patch pv <pv_name> -p '{"metadata":{"finalizers":null}}' |
|||
| 110 | kubectl delete pv <pv_name> --grace-period=0 --force |
|||
| 111 | ||||
| 112 | PVC_NAME="<pvc-name>"; kubectl get pods,deployments,statefulsets,daemonsets,replicasets,jobs,cronjobs --all-namespaces -o json | jq --arg PVC "$PVC_NAME" '.items[] | select(.spec.template.spec.volumes[]?.persistentVolumeClaim.claimName == $PVC) | .metadata.namespace + "/" + .metadata.name + " (" + .kind + ")"' |
|||
| 113 | ``` |
