0% ont trouvé ce document utile (0 vote)
75 vues32 pages

Formation K8s

Transféré par

ayoubchahboun69
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
75 vues32 pages

Formation K8s

Transféré par

ayoubchahboun69
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd

Formation Kubernetes

Presented by : [Link]

13/11/2023
Plan

1. Introduction:
• C’est quoi kubernetes?
• Fonctionnalités de kubernetes

2. Architecture de kubernetes
• Cluster Architecture
• Master node
• Worker node

3. Les Concepts de Kubernetes


• Namespaces
• Resources, Limit Range & resource Quota
• Labels & Selectors
• Pods, deployments
• Services & Storage
• Ingress & Ingress Controller
Définition officielle de Kubernetes

 Un outil d'orchestration de conteneurs open-source

 Développé à l'origine par Google

 Conçu pour aider à gérer des applications conteneurisées,


dans différents environnements de
déploiement
Fonctionnalités de
Kubernetes ?
Kubernetes résout plusieurs défis clés dans la gestion des
conteneurs :
 Orchestration des Conteneurs : Il gère le
déploiement et la mise à jour des conteneurs à
grande échelle.
 Équilibrage de Charge : Distribue
automatiquement le trafic réseau pour maintenir
la stabilité et la performance.
 Automatisation : Automatise divers processus,
y compris le déploiement, la mise à l'échelle, et
la réparation des applications.

 Gestion de la Configuration et des Secrets :


Gère de manière sécurisée les données
sensibles et la configuration des applications.
Architecture de Kubernetes
Master Components Worker Components

API Server Kubelet

Controller Manager Kube Proxy

Scheduler Container Runtime

Etcd
Fonctionnemen
t Kubelet

UI
ETCD Kube Proxy

Container Runtime
Controller
Manager
API
API Server Node 1

CLI Scheduler
Kubelet

Kube Proxy

Container Runtime

Authentication
Node 2
Authorization
Schema Validation
etc
Fonctionnemen
apiVersion: apps/v1
tKubectl create –f [Link] kind: Deployment
Kubelet
metadata:
UI
ETCD name: Kube Proxy
nginx-deployment
spec:
Container
replicas: 3 Runtime
Controller
Manager selector:
API matchLabels:
API Server app: nginx Node 1
template:
CLI 1 Scheduler metadata:
Kubelet
labels:
app: nginx
Kube Proxy
spec:
containers:
Container Runtime
- name: nginx
image: nginx:latest
ports:
Authentication
Node80
- containerPort: 2
Authorization
Schema Validation
etc
Fonctionnemen
tKubectl create –f [Link] Kubelet

UI
ETCD Kube Proxy 10

9 Container Runtime
4 3 8 Controller
6 Manager POD1 POD2
API
API Server Node 1
7
CLI 1 Scheduler
Kubelet
5
2 9 Kube Proxy 10

Container Runtime
[Link]/nginx creates POD3

Authentication
Node 2
Authorization
Schema Validation
etc
Namespace

Available Space
CPU: 140 Node-01 Node-02 Node-03 Node-04 Node-05 Node-06 Node-07
Memory: 280 GB

Node-08 Node-09 Node-10 Node-11 Node-12 Node-13 Node-14


Namespace

By Team

Frontend Backend Database


Namespace

By Env

Production Development Test


Namespace

By apps

Backend Monitoring
Front apps DB
apps Alerting / Logging
Resources

API Server

Controller Manager

Scheduler Cpu: milicores 1, 100m, 1000m


Memory: bytes 50M, 2Gib

100 CPU
128G Memory
2

Node-1 Node-2 Node-100


Resources

API Server

Controller Manager Resources:


Limits:
Scheduler cpu: 2000m
POD memory: 200Mi
Requests:
cpu: 1000m
memory: 100Mi

100 CPU
128G Memory
2

Node-1 Node-2 Node-100


Resources

API Server

Controller Manager Resources:


Limits:
Scheduler cpu: 250
POD memory: 200Gi
Requests:
cpu: 200
Pending memory: 100Gi

100 CPU
128G Memory
2

Node-1 Node-2 Node-100


Resources

API Server

Controller Manager Resources:


Limits:
Scheduler cpu: 100
POD memory: 20Gi
Requests:
cpu: 50
Pending memory: 10Gi

100 CPU
20 cpu
128G Memory
2

Node-1 Node-2 Node-100


Limit Ranges

 Pour les Pods : La somme totale des ressources CPU et mémoire pour
tous les conteneurs dans un Pod ne peut pas dépasser 2 CPU et 1 Gi de
mémoire.

 Pour les Conteneurs : Chaque conteneur individuel ne peut pas dépasser


1 CPU et 500 Mi de mémoire et doit demander au moins 100m CPU et
100 Mi de mémoire.
Resource
Quotas

 pods: Limite le nombre total de Pods à 10 dans le namespace.

 [Link] et [Link]: Limite la quantité totale de CPU et de mémoire que les


conteneurs peuvent réclamer à 4 CPU et 2 Gi de mémoire, respectivement.

 [Link] et [Link]: Limite la quantité totale de CPU et de mémoire


demandée par tous les conteneurs à 2 CPU et 1 Gi de mémoire.
Labels and
Selectors
apiVersion: v1
Kind: Pod
metadata:
name: nginx
labels:
app: nginx
env: dev

Labels: Labels:
app: nginx app: nginx
env: prod env: dev

POD POD POD POD POD POD


Labels and
Selectors
apiVersion: v1
Kind: Service
metadata:
name: nginx
spec:
selector:
app: nginx

Labels: Labels:
app: nginx app: nginx
env: prod env: dev

POD POD POD POD POD POD


Labels and
Selectors
apiVersion: v1
Kind: Pod
metadata:
name: nginx
spec:
selector:
app: nginx
env: prod

Labels: Labels:
app: nginx app: nginx
env: prod env: dev

POD POD POD POD POD POD


Pods

 Un Pod peut contenir un ou plusieurs conteneurs.


 Les conteneurs dans un Pod partagent le même espace de noms réseau (ils ont
la même adresse IP et le même port).
 Ils peuvent également partager des volumes de stockage, ce qui leur permet
d'échanger des données plus facilement.
Pods

apiVersion: v1 # Version de l'API Kubernetes utilisée


kind: Pod # Type d'objet à créer
metadata:
name: nginx-pod # Nom du Pod
labels: # Labels attribués au Pod
app: nginx
spec: # Spécification du Pod
containers: # Conteneurs à exécuter dans le Pod
- name: nginx # Nom du conteneur
image: nginx:1.17.1 # Image du conteneur à utiliser
ports:
- containerPort: 80 # Port que le conteneur doit exposer
Deployments

Un déploiement dans Kubernetes est un objet de niveau


supérieur qui gère les Pods et leurs réplicas (instances).

 Mise à Jour
Automatique
 Rollbacks
 Mise à l'echelle
 Auto-réparation
Deployments

v1 v2

Replica- Replica-
set set

POD POD POD POD


Deployments

apiVersion: apps/v1 # Version de l'API pour les déploiements


kind: Deployment # Type de l'objet
metadata:
name: nginx-deployment # Nom du déploiement
spec:
replicas: 3 # Nombre de réplicas (instances de Pod)
selector:
matchLabels:
app: nginx # Sélectionne les Pods avec ce label
template: # Template pour les Pods
metadata:
labels:
app: nginx # Label appliqué aux Pods
spec:
containers:
- name: nginx
image: nginx:1.17.1 # Image du conteneur
ports:
- containerPort: 80
Services

1 2
Service Discovery Service Discovery
Moyen pour connecter Moyen pour connecter
différentes services avec une différentes services avec une
seule Endpoint stable. seule Endpoint stable.

SVC

POD SVC POD POD POD POD

[Link]
Service
Types
apiVersion: v1
kind: Service
metadata:
Private 1 ClusterIP name: nginx-service
spec:
Public 2 NodePort type: NodePort
selector:
3 LoadBalancer app: nginx
ports:
- port: 80
targetPort: 80
nodePort: 30007
Storage

PV PVC
apiVersion: v1 apiVersion: v1
1 Volumes kind: PersistentVolume kind: PersistentVolumeClaim
metadata: metadata:
2 PersistantVolumes(PVs) name: pv-example name: pvc-example
spec: spec:
storageClassName: manual storageClassName: manual
3 PersistantVolumeClaims(PVCs)
capacity: accessModes:
storage: 5Gi - ReadWriteOnce
4 StorageClasses accessModes: resources:
- ReadWriteOnce requests:
hostPath: storage: 5Gi
path: "/mnt/data"
Ingress & Ingress
Conroller

LoadBalancer LoadBalancer LoadBalancer

Cluster Cluster

Ingress

Service Service Service Service

POD POD POD POD POD POD POD POD POD POD POD POD
Ingress & Ingress Controller

LoadBalancer

Cluster

Ingress Controller

Ingress Object

Service Service

POD POD POD POD POD POD


Ingress & Ingress Controller
apiVersion: [Link]/v1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:
- host: [Link]
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: web-service
port:
number: 80
- host: [Link]
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: api-service
port:
number: 80

Vous aimerez peut-être aussi