La nouvelle version de Kubernetes est sortie, nous voici donc avec un autre article sur Kubernetes. Avec Kubernetes 1.5, le kubeadm est toujours en alpha, et il n'est pas recommandé de l'utiliser en production car il ne supporte toujours pas l'équilibreur de charge. Nous allons installer un magasin de chaussettes en ligne bien connu en tant que démo, et nous utiliserons nodeport pour exposer le service.
Installer Kubernetes 1.5 sur tous les nœuds
Ajoutons un référentiel Kubernetes pour CentOS :
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetesbaseurl=http://yum.kubernetes.io/repos/kubernetes-el7-x86_64enabled=1gpgcheck=0repo_gpgcheck=0EOF
Après avoir ajouté le référentiel, nous devons désactiver SElinux car il ne fonctionne pas très bien avec kubernetes. Pour le désactiver momentanément, tapez
setenforce 0
Pour le faire persister après le redémarrage, utilisez nano pour modifier le fichier de configuration SElinux comme ceci :
nano /etc/selinux/config
et assurez-vous que la ligne SELINUX est définie sur permissive ou désactivée :
SELINUX=disabled
Enregistrez le fichier et nous pourrons continuer à installer les packages requis.
yum install docker kubelet kubeadm kubectl kubernetes-cni
Pour activer le démarrage automatique de docker au démarrage, exécutez cette commande :
systemctl enable docker
Et pour le démarrer maintenant, exécutez ce qui suit.
systemctl start docker
Faisons ensuite la même chose pour kubelet
systemctl enable kubelet
systemctl start kubelet
Configuration du cluster
La première chose que nous devons faire est de décider du maître de notre nouveau cluster. Si tous les nœuds sont configurés comme ci-dessus, nous exécutons ensuite notre nœud maître désigné avec la commande suivante.
kubeadm init
Notez que vous ne pouvez pas exécuter cette commande deux fois, vous devrez démonter le cluster avant de l'exécuter une deuxième fois. Le résultat ressemblera à ceci :
[root@centos-01 kubernetes]# kubeadm init
[kubeadm] WARNING: kubeadm is in alpha, please do not use it for production clusters.
[preflight] Running pre-flight checks
[preflight] WARNING: firewalld is active, please ensure ports [6443 9898 10250] are open or your cluster may not function correctly
[init] Using Kubernetes version: v1.5.1
[tokens] Generated token: "9a6b48.b4011ffeeb237381"
[certificates] Generated Certificate Authority key and certificate.
[certificates] Generated API Server key and certificate
[certificates] Generated Service Account signing keys
[certificates] Created keys and certificates in "/etc/kubernetes/pki"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf"
[apiclient] Created API client, waiting for the control plane to become ready
[apiclient] All control plane components are healthy after 105.821991 seconds
[apiclient] Waiting for at least one node to register and become ready
[apiclient] First node is ready after 4.505809 seconds
[apiclient] Creating a test deployment
[apiclient] Test deployment succeeded
[token-discovery] Created the kube-discovery deployment, waiting for it to become ready
[token-discovery] kube-discovery is ready after 68.003359 seconds
[addons] Created essential addon: kube-proxy
[addons] Created essential addon: kube-dns
Your Kubernetes master has initialized successfully!
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
http://kubernetes.io/docs/admin/addons/
You can now join any number of machines by running the following on each node:
kubeadm join --token=9a6b48.b4011ffeeb237381 45.55.128.42
Installation du réseau de pods et ajout de nœuds à un cluster
Dans la partie ci-dessus, nous avons initialisé le cluster master, et nous sommes entrés dans la dernière commande de ligne avec un jeton que nous utiliserons pour ajouter des nœuds. Mais avant cela, nous devons installer le réseau de pods.
kubectl apply -f https://git.io/weave-kube
Il existe de nombreuses façons d'avoir un réseau de pods, mais celle ci-dessus est peut-être la plus simple. Il utilise Container Network Interface ou CNI, qui est la norme proposée pour les conteneurs de mise en réseau sous Linux.
Ensuite, nous pouvons ajouter des nœuds au cluster en exécutant cette commande sur tous les nœuds
kubeadm join --token=bb6fc2.be0345f5b02a32a0 45.55.128.42
Le jeton est nettoyé, de sorte que vous ne pouvez pas ajouter de nœuds à mon cluster. Ensuite, permettons aux pods de s'exécuter sur le maître et pas seulement sur les nœuds.
kubectl taint nodes --all dedicated-
Après cela, nous pouvons vérifier les nœuds pour voir si tous sont en ligne.
kubectl get nodes
Exemple d'installation de microservices
Il existe un exemple simple de microservices que nous utiliserons pour tester notre cluster. C'est une boutique en ligne de chaussettes.
Nous allons d'abord ajouter un espace de noms magasin de chaussettes
kubectl create namespace sock-shop
Et puis nous créons le service
kubectl apply -n sock-shop -f "https://github.com/microservices-demo/microservices-demo/blob/master/deploy/kubernetes/complete-demo.yaml?raw=true"
Après cela, nous devons attendre un certain temps pour que les conteneurs soient créés, puis nous pouvons essayer de visiter le nouveau site. Pour le visiter, il faut connaître son adresse. Examinons le service
kubectl describe svc front-end -n sock-shop
Cela vous donnera une sortie similaire à celle-ci
Name: front-end
Namespace: sock-shop
Labels: name=front-end
Selector: name=front-end
Type: NodePort
IP: 10.104.11.202
Port: <unset> 80/TCP
NodePort: <unset> 31500/TCP
Endpoints: 10.32.0.4:8079
Session Affinity: None
No events.
La ligne en gras est mise en surbrillance par moi car nous avons besoin du numéro de port utilisé par le service. Nous devons combiner le numéro de port avec l'adresse de l'un de nos nœuds, et nous arriverons sur le site.
Conclusion
Nous avons donc réussi à configurer le cluster Kubernetes 1.5 avec kubeadm sur CentOS 7. Dans notre cas, il s'agit d'un cluster à trois nœuds, mais kubeadm vous permet de faire évoluer facilement le cluster en ajoutant de nouveaux nœuds. Assurez-vous de garder votre jeton privé car avec un jeton et une adresse IP publique, n'importe qui peut ajouter des nœuds à votre cluster. Sur ce, nous terminons cet article, merci d'avoir lu et bonne journée.