Étape 1 : Créer les fichiers YAML

Crée ces deux fichiers localement sur ta machine (là où kubectl est configuré).

apache-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: apache-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: apache
  template:
    metadata:
      labels:
        app: apache
    spec:
      containers:
      - name: apache
        image: httpd:2.4
        ports:
        - containerPort: 80

apache-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: apache-service
spec:
  type: NodePort
  selector:
    app: apache
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30080

Étape 2 : Appliquer les fichiers YAML

Ouvre un terminal dans le répertoire où tu as enregistré les fichiers, puis exécute :

kubectl apply -f apache-deployment.yaml

kubectl apply -f apache-service.yaml

Étape 3 : Vérifier que tout fonctionne

Vérifier les Pods

kubectl get pods

Tu devrais voir 2 pods apache-deployment-xxxxx avec le statut Running.

ℹ️ Info : Si les pods se bloquent en état 0/1 ContainerCreating, lance cette commande pour diagnostiquer le problème :

kubectl describe pod <nom-du-pod>

Si tu retrouves une erreur de ce type :

Failed to create pod sandbox: plugin type="flannel" failed (add): failed to find plugin "flannel" in path [/usr/lib/cni]

Il faut créer le lien symbolique manquant sur tous les nœuds Workers :

sudo mkdir -p /usr/lib/cni

sudo ln -s /opt/cni/bin/* /usr/lib/cni/

Après avoir exécuté ces commandes sur tous les Workers, les pods devraient passer à l''état Running.

Vérifier le Service

kubectl get service apache-service

Tu devrais obtenir un résultat similaire à :

NAME             TYPE       CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
apache-service   NodePort   10.96.0.1     <none>        80:30080/TCP   2m

Étape 4 : Accéder au serveur Apache

Utilise un navigateur ou curl pour accéder à Apache à l''adresse suivante, en remplaçant <IP-VM-WORKER> par l''adresse IP d''une machine worker :

http://<IP-VM-WORKER>:30080

Pour connaître l''adresse IP d''un nœud worker :

kubectl get nodes -o wide