Kubernetes
Introduction
Commandes simples
kubectl version
Lister les ressources
Liste des orchestrateurs :
kubectl get services
Liste des noeuds :
kubectl get nodes
Pour obtenir les pods en cours d'exécution :
kubectl get pods
Informations détaillées :
kubectl get pods -o wide
kubectl config get-contexts
Vérification de la configuration du noeud :
kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://kubernetes.docker.internal:6443
name: docker-desktop
contexts:
- context:
cluster: docker-desktop
user: docker-desktop
name: docker-desktop
current-context: docker-desktop
kind: Config
preferences: {}
users:
- name: docker-desktop
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
Création d'un pod depuis un fichier yaml :
kubectl apply -f C:\Chemin\vers\fichier\yaml\web.yml
::: tip Astuce On ne charge dans le noeud kubernetes que des images finalisées ; il est cependant possible de mettre à jour l'application depuis kubernetes. :::
Vérification du pod :
kubectl describe po/myPod
Obtenir des détails sur le processus principal :
kubectl describe po/myPod -n default
Name: web
Namespace: default
Priority: 0
Node: docker-desktop/192.168.65.3
Start Time: Sun, 20 Sep 2020 11:17:19 +0200
Labels: <none>
Annotations: Status: Running
IP: 10.1.0.14
IPs:
IP: 10.1.0.14
Containers:
nginx:
Container ID: docker://51bc5190f1851b50345ff0c60c25fe573bf03f67a5520b7795943e32a9aff929
[...]
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
default-token-dlz77:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-dlz77
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled <unknown> default-scheduler Successfully assigned default/web to docker-desktop
Normal Pulling 88s kubelet, docker-desktop Pulling image "nginx:alpine"
Normal Pulled 85s kubelet, docker-desktop Successfully pulled image "nginx:alpine"
Normal Created 84s kubelet, docker-desktop Created container nginx
Normal Started 84s kubelet, docker-desktop Started container nginx
Pour les tests, on peut mapper certains ports :
kubectl port-forward web 8000:80
Exécution d'une commande à l'intérieur d'un conteneur (de la même façon que Docker) :
kubectl exec -it containerID sh
Commandes avancées
Visualiser l'activité du pod (et non les journaux d'événements) :
kubectl logs -f po/myPod
Attacher un pod et basculer vers le processus principal :
kubectl attach po/myPod
Supprimer un pod :
kubectl delete po/myPod
Utiliser les namespaces
- Segmenter un cluster
- Isoler les ressources
kubectl create namespace production
(ou Kind = namespace dans la description et namespace: production dans les metadatas)
kubectl get namespaces
kubectl get pods --namespace=production
kubectl get pods --all-namespaces
Configurer les applications
Définir les ConfigMaps
Comprendre les volumes
Sources :