Voici quelques notes et tests avec Kubernetes

https://blog.wescale.fr/2019/10/24/istio-sur-gke/

Exemple de CI avec Kubernetes :

https://blog.wescale.fr/2019/07/05/comment-mettre-en-place-une-ci-cd-avec-gitlab-et-gke/

1 ) Kubernetes

Source : https://blog.myagilepartner.fr/index.php/2019/10/17/docker-compose-vs-kubernetes/

A) Explication

Kubernetes propose une gestion de conteneurs qui va permettre de gérer et de déployer des clusters de containers Docker avec des concepts comme du load balancing sur X serveurs grâce à un master.

A) Plan exemple

https://kubernetes.io/fr/docs/concepts/overview/components/

  • Kubelet : Agent qui s’éxecute sur chaque noeud. S’assure du fonctionnement dans pod
  • kube-proxy : Proxy-réseau : maintient les règles réseau sur les nœuds

A) Type de kubernetes

Il existe 2 type le k8s et le k3s

  • k3s : Kubernetes light -> https://github.com/itwars/k3s-ansible
  • k8s
  • https://blog.wescale.fr/2020/01/09/k3s-le-kubernetes-allege-hautement-disponible/

Déploiement de Kubernetes

A ) On premise

Le plus simple et d’utiliser Proxmox afin de créer des VM ( VM-Master, etc)

Plan a faire

  • Kubeadm : A tester
  • Rancher Kubernetes engine : Méthode trés simple mais je trouve ça lourd
  • Kubespray : J’ai pas réussi, j’enchaine les erreurs

Voici le tuto utilisé pour kubespray :

Tuto : https://blog.zwindler.fr/2017/12/05/installer-kubernetes-kubespray-ansible/

B ) Cloud

  • Cloud : GKE, AKS, EKS

Autre info :

Docker a gagné cette guerre contre CoreOS

L’OCI a également standardisé autre chose, à savoir le format des images. Qui vient aussi originellement de Docker.

OCI -> Standard pour les images

Les runtime

https://blog.alterway.fr/le-point-sur-les-container-runtimes.html

  • cri-o :
  • pushcontainer :
  • containerd : forte chance que celui-ci reste

Container utile pour Kubernetes + Docker

  • Runtime : Containerd
  • Monitoring : Prometheus
  • Registry : Harbor
  • Storage : Rook
  • CodeDNS ( Service discovery )
  • Network :
  • NetworkPolicies avec Calico (faculatitf ) : réseau avancé ( IPV6 etc
  • Log : Loki, kuibeail
    • n script shell nommé kubetail permet de suivre les logs d’un namespace, d’un deployement (plusieurs pods) ou d’autres ressources.
  • Open Policy agent ( Securité )
  • Déploiement : Helm
  • Rook,, jaegger

Truc & astuces

Source : https://blog.ouvrard.it/2019/12/18/kubernetes-trucs-astuces/

1 – Helm

Plus d’info ici

  • Charts.yaml pour le nom, le tag et la version de votre application
  • templates/ est le dossier dans lequel vous placez tous vos fichiers yaml (deployments, services, ingresses…)
  • values.yaml est un fichier de clé-valeur en yaml où l’on place les variables qu’on veut remplacer dans nos fichiers yaml de templates.

2 – Ingress

La meilleure façon, pour moi, dans un cluster custom de production est d’utiliser un Ingress Controller comme Nginx-ingress et de l’exposer publiquement avec un service avec une ExternalIP ou avec un controller comme MetalLB qui vous fournira un service type LoadBalancer avec une IP dédiée

3 – Interface graphique

  • Kubernetic : pplication graphique (Windows, Mac et Linux) permettant d’administrer votre cluster Kubernetes.
  • k9s : https://github.com/derailed/k9s

Lien pratique :

  • https://blog.myagilepartner.fr/index.php/2017/02/11/utiliser-kubernetes-avec-google-cloud/

2 ) Minikube

Site officiel : https://minikube.sigs.k8s.io/docs/start/linux/

Cheatseet : Minikube -> https://medium.com/@wisegain/minikube-cheat-sheet-a273385e66c9

Tuto installation

Source :

  • Étape 1 : Installation de docker
  • Étape 2 : Installation de kubectl
  • Étape 3 : Installation de Minikube (avec binaire statique)
  • Ici : https://kubernetes.io/fr/docs/tasks/tools/install-minikube/#pr%C3%A9-requis

Vous pouvez installer Minikube sur Linux en téléchargeant un binaire statique:

curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
&& chmod +x minikube

Voici une façon simple d’ajouter l’exécutable de Minikube à votre path:

sudo cp minikube /usr/local/bin && rm minikube

Problème 1 :

https://minikube.sigs.k8s.io/docs/start/linux/

If you are already running minikube from inside a VM, it is possible to skip the creation of an additional VM layer by using the none driver.

Utilisation

The none driver requires minikube to be run as root, until #3760 can be addressed.

Shell

To make none the default driver:

Shell

Pour les petits CPU

Shell

webui

Source : https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/#deploying-the-dashboard-ui