Installation d'un Cluster Kubernetes et Résolution des Problèmes

Objectif :

Installer un cluster Kubernetes pour se préparer aux simulatinos et à l'utilisation en production.

Matériel nécessaire :

serveur_maître(k8s1):10.10.11.12
noeud1(k8s2):10.10.10.217

Étapes d'installation :

1. Installation sur le serveur maître :

Installation de la source epel-release

yum install -y epel-release

Arrêt des services du pare-feu et de SELinux

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

yum install -y etcd kubernetes-master

Après installation, configurer /etc/etcd/etcd.conf comme suit :

#[Membre]
NOM_ETCD=par_défaut #Vérifiez ici
#ETCD_CORS=""
REP_DONNEES_ETCD="/var/lib/etcd/default.etcd"
#ETCD_DIR_WAL=""
#ETCD_URLS_PEER_ECOUCHE="http://localhost:2380"
URLS_CLIENTS_ECOUCHE_ETCD="http://0.0.0.0:2379" #Définir à 0.0.0.0
#ETCD_MAX_SNAPSHOTS="5"
#ETCD_MAX_WALS="5"
NOM_ETCD="par_défaut"
#ETCD_SNAPSHOT_COUNT="100000"
#ETCD_INTERVAL_BATTEMENT="100"
#ETCD_TIMEOUT_ELECTION="1000"
#ETCD_QUOTA_BACKEND_BYTES="0"
#ETCD_MAX_REQUEST_BYTES="1572864"
#ETCD_KEEPALIVE_GRPC_MIN_TIME="5s"
#ETCD_KEEPALIVE_GRPC_INT="2h0m0s"
#ETCD_KEEPALIVE_GRPC_TIMEOUT="20s"
#
#[Clustering]
#ETCD_URLS_PEER_ANNONCE_INIT="http://localhost:2380"
URLS_CLIENTS_ANNONCE_ETCD="http://localhost:2379" #Vérifiez ici
#ETCD_DECOUVERTE=""
#ETCD_RECHUTE_DECOUVERTE="proxy"
#ETCD_PROXY_DECOUVERTE=""
#ETCD_SRV_DECOUVERTE=""
#ETCD_CLUSTER_INIT="par_défaut=http://localhost:2380"
#TOKEN_CLUSTER_ETCD="cluster-etcd"
#ETAT_CLUSTER_INIT="nouveau"
#ETCD_VERIF_CONF_STRICT="true"
#ETCD_V2_ACTIF="true"

Configurer le fichier principal : /etc/kubernetes/apiserver

###
# Config système Kubernetes
#
# Les valeurs suivantes configurent kube-apiserver
#

# Adresse locale à écouter.
ADRESSE_API_KUBE="--bind-adresse-insecurisee=0.0.0.0" #Changer par défaut à 0.0.0.0

# Port local à écouter.
PORT_API_KUBE="--port=8080"

# Port écoute minions
PORT_KUBELET="--port-kubelet=10250"

# Liste séparée par virgules des nœuds dans le cluster etcd
SERVEURS_ETCD_KUBE="--serveurs-etcd=http://127.0.0.1:2379"

# Plage d'adresses pour les services
PLAGE_ADRESSES_SERVICES_KUBE="--plage-adresse-cluster-service=10.254.0.0/16"

# Politiques de contrôle d'accès par défaut
CONTROLE_ACCES_ADMISSION_KUBE="--controle-admission=VieNamespace,CycleNamespace,Limitateur,DenyContextSecurite,CompteService,RessourceQuota"

# Ajoutez vos propres!
ARGS_API_KUBE=""

Lancer les services et configurer leur démarrage automatiqeu :

for SERVICE in etcd kube-apiserver kube-controller-manager kube-scheduler; do systemctl restart $SERVICE;systemctl enable $SERVICE; done

Configurer le réseau flannel dans etcd :

etcdctl mk /io.atomique/reseau/config '{"Reseau":"172.17.0.0/16"}'

2. Installation sur noeud1 :

Installer flannel et kubernetes-node :

yum install -y flannel kubernetes-node

Configurer ETCD de flannel dans /etc/sysconfig/flanneld

ETCD_FLANNEL="http://10.10.11.12:2379"
CLEF_ETCD_FLANNEL="/io.atomique/reseau"

Configurer le fichier Kubernetes : /etc/kubernetes/config

###
# Configuration système Kubernetes
#
# Les valeurs suivantes configurant divers aspects des services Kubernetes :
#
#   kube-apiserver.service
#   kube-controller-manager.service
#   kube-scheduler.service
#   kubelet.service
#   kube-proxy.service
# journalisation vers stderr permet d'obtenir des messages dans le journal systemd
LOG_STDERR_KUBE="--journaliser-vers-stderr=true"

# niveau de message du journal, 0 est debug
NIV_LOG_KUBE="--v=0"

# Ce cluster peut-il exécuter des conteneurs Docker privilégiés?
PRIVILEGE_KUBE="--autoriser-privilège=false"

# Comment le controller-manager, scheduler, et proxy trouvent l'apiserver
MASTER_KUBE="--maître=http://10.10.11.12:8080" #Modifier seulement cette IP.

Et le fichier : /etc/kubernetes/kubelet

###
# Configuration kubelet (minion) Kubernetes

# L'adresse pour le serveur info
ADRESSE_KUBELET="--adresse=127.0.0.1" #Peut être 0.0.0.0 si besoin

# Le port pour le serveur info
PORT_KUBELET="--port=10250" #Port ouvert

# Vous pouvez laisser ceci vide pour utiliser le nom d'hôte réel
HOTE_KUBELET="--renommer-hote=10.10.10.217" #IP locale k8s2

# Emplacement de l'api-server
API_SERVER_KUBELET="--serveurs-api=http://10.10.11.12:8080" #IP machine master

# Conteneur infrastructure pod
IMAGE_INFRA_POD_KUBELET="--image-conteneur-infrastructure-pod=registry.access.redhat.com/rhel7/pod-infrastructure:latest"

# Ajoutez vos propres!
ARGS_KUBELET=""

Lancer kube-proxy, kubelet, docker, flanneld avec démarrage automatique :

for SERVICE in kube-proxy kubelet docker flanneld;do systemctl restart $SERVICE;systemctl enable $SERVICE; done

Vérification du cluster :

Pour vérifier que Kubernetes fonctionne correctement, exécutez sur le serveur maître :

[root@k8s1 ~]# kubectl get node
NOM           STATUT    AGE
10.10.10.217   Prêt     22m
[root@k8s1 ~]# 

Étiquettes: kubernetes Flannel etcd systemd

Publié le 9 août à 20h47