# Kubernetes

Gestionnaire avancé de conteneurs.

# [Kubernetes] Installation

## Introduction

Kubernetes est un gestionnaire de conteneurs avancé qui permet de créer des clusters, faire de la haute disponibilité, du load balancing et apporte beaucoup d'avantages lors du déploiement à grande échelle d'une application.

## Source

- [Installation KubeCTL - Documentation officielle](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/)

## Installation

```bash
 curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" && sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
```

# [Kubernetes] Cheat-sheet

## Introduction

Kubernetes est un gestionnaire de conteneurs avancé qui permet de créer des clusters, faire de la haute disponibilité, du load balancing et apporte beaucoup d'avantages lors du déploiement à grande échelle d'une application.

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-04/scaled-1680-/6v3image.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-04/6v3image.png)

## Configuration kubectl

#### Utiliser un fichier de configuration spécifique

```bash
export KUBECONFIG=<PATH_TO_KUBECONFIG>
```

#### Définir le cluster

```bash
kubectl config set-cluster <CLUSTER_NAME> --server="<IP|FQDN>"
```

#### Définir l'utilisateur

```bash
kubectl config set-credentials <USERNAME> --client-certificate=<CRT_PATH> --client-key=<KEY_PATH>
```

#### Définir le contexte

```bash
kubectl config set-context <CONTEXT_NAME> --cluster=<CLUSTER_NAME> --user=<USERNAME>
```

```bash
kubectl config use-context <CONTEXT_NAME>
```

## Pods

Les pods sont des groupes de un ou plusieurs conteneurs. Il s'agit de la plus petite entité manipulable par Kubernetes. :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-04/scaled-1680-/dGFimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-04/dGFimage.png)

#### Créer un pod

Les pods peuvent être créés à partir de fichiers de configuration au format YAML tel que **mypod.yam**l :

```yaml
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: mycontainer
    image: nginx
```

<p class="callout info">Le pod ci-dessus permettra de déployer un conteneur avec l'image nginx.</p>

Une fois le fichier de configuration établit, on peut déployer le pod grâce à la commande suivante :

```bash
kubectl apply -f mypod.yaml
```

Vous pouvez aussi déployer des pods à la volée grâce à la commande suivante (non-recommandé) :

```bash
kubectl run <POD_NAME> --image=<IMG>
```

#### Supprimer un pod

```bash
kubectl delete pod <POD_NAME>
```

## Déploiements

## Débogage et monitoring

#### Vérifier la configuration de kubectl

```bash
kubectl config view
```

#### Vérifier la création des pods

```bash
kubectl get pods
```

Pour afficher en détail le status des pods, vous pouvez utiliser la commande suivante :

```bash
kubectl get pods -o wide
```

Pour vérifier un pod spécifique :

```bash
kubectl describe pod <POD_NAME>
```

#### Afficher les logs d'un pod

```bash
kubectl logs <POD_NAME>
```

#### Exécuter une commande dans un pod

```bash
kubectl exec <POD_NAME> -- <CMD>
```