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 ~]#