meta données pour cette page
Apprendre à utiliser Kubernetes
C'est un logiciel gérant des conteneurs de plusieurs type dont par défaut Docker. Sa force réside sur la méthode de communication via le protocole HTTP. Il est écrit en GO facilitant ainsi son déploiement vu qu'il embarque déjà toutes les dépendances dont-il a besoin.
Mes tests sont effectué sur un hyperviseur KVM dont le dashboard, pourra se faire avec la commande suivante :
sudo ssh -L 127.0.0.1:80:192.168.42.37:30000 virt@192.168.2.25
192.168.42.37 étant l'adresse de l'instance. Ainsi, on pourra s'y rendre en local avec un navigateur http://127.0.0.1
Documentations :
Installation
Tout en quelques commandes :
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/ curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/v1.10.0/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/
Si on l'utilise comme supervisuer avec virtualbox, il n'y a rien d'autre à faire.
Sinon, si l'on souhaite utiliser KVM, alors c'est un peu plus compliqué :
apt install libvirt-clients libvirt-daemon-system usermod -a -G libvirt $(whoami) curl -LO https://storage.googleapis.com/minikube/releases/latest/docker-machine-driver-kvm2 && chmod +x docker-machine-driver-kvm2 && sudo mv docker-machine-driver-kvm2 /usr/local/bin/
Enfin on pourra lancer la machine virtuelle avec la commande ci-dessous :
minikube start --vm-driver kvm2
Terminologies
- Pod : ensemble de conteneurs disponible sur une machine ?
- Service : ensemble de conteneur délivrant le même service
Aspects
- Il est important dans un 1er temps de passer par l'étape du 'deploiement' puis de la mise en place du conteneur.
- Les logs se situe dans /var/log/libvirt/qemu/minikube.log
- Fichiers de configuration :
- .minikube/profiles/minikube/config.json
Liste de commandes
- Démarrer l'instance
minikube start --vm-driver=virtualbox minikube start --vm-driver=kvm2
- Infos
kubectl get nodes kubectl get deployments kubectl get service kubectl get pods kubectl get all kubectl describe pod mon-pod kubectl config view kubectl cluster-info dump kubectl get pods -all-namespaces
- Déployer
kubectl run hello-minikube --image=objectiflibre/nginx-demo:blue --port=80 kubectl run my-shell --rm -i --tty --image ubuntu -- bash kubectl apply -f nginx-deployment.yml
- Update
kubectl set image deployment/nginx-deployment nginx=objectiflibre/nginx-demo:blue kubectl get rs -w
- Undo
kubectl rollout undo deployment/nginx-deployment
- Intéractions
kubectl exec -it shell-demo -- /bin/bash kubectl expose deployment hello-minikube --type=NodePort kubectl port-forward my-pod 5000:6000 kubectl edit -f deploy.yaml kubectl scale deployment nginx-deployment --replicas=5 ./minikube ssh
- Suppressions
kubectl delete deployment hello-minikube kubectl delete pods --all kubectl delete pods --all --grace-period=0 --force kubectl delete pods <pod> --grace-period=0 --force minikube stop minikube delete
scripts
- Déployer un service
kind: Service apiVersion: v1 metadata: name: my-service spec: selector: app: MyApp ports: - name: http protocol: TCP port: 80 targetPort: 9376 externalIPs: - 80.11.12.10