Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
veilletechno:atomic [2017/07/23 09:07] – madko | veilletechno:atomic [2017/07/23 09:33] (Version actuelle) – [Services kubernetes master] madko | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Atomic CentOS 7 ====== | ====== Atomic CentOS 7 ====== | ||
+ | |||
+ | ===== Configuration du master ===== | ||
+ | |||
+ | ==== Création du registry docker local ==== | ||
+ | |||
+ | Création d'un containeur docker registry : | ||
+ | |||
+ | < | ||
+ | sudo docker create -p 5000:5000 | ||
+ | -v / | ||
+ | -e REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/ | ||
+ | -e REGISTRY_PROXY_REMOTEURL=https:// | ||
+ | --name=local-registry registry:2 | ||
+ | </ | ||
+ | |||
+ | Gérer les contextes SELinux sur le stockage des images du registry : | ||
+ | |||
+ | < | ||
+ | sudo mkdir -p / | ||
+ | sudo chcon -Rvt svirt_sandbox_file_t / | ||
+ | </ | ||
+ | |||
+ | Création d'un service pour démarrer automatiquement le registry. Contenu du fichier / | ||
+ | |||
+ | < | ||
+ | [Unit] | ||
+ | Description=Local Docker Mirror registry cache | ||
+ | Requires=docker.service | ||
+ | After=docker.service | ||
+ | |||
+ | [Service] | ||
+ | Restart=on-failure | ||
+ | RestartSec=10 | ||
+ | ExecStart=/ | ||
+ | ExecStop=-/ | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=multi-user.target | ||
+ | </ | ||
+ | |||
+ | Pour l' | ||
+ | |||
+ | < | ||
+ | sudo systemctl daemon-reload | ||
+ | sudo systemctl enable local-registry | ||
+ | sudo systemctl start local-registry | ||
+ | </ | ||
+ | |||
+ | ==== Configuration ETCD ==== | ||
+ | |||
+ | Fichier / | ||
+ | |||
+ | < | ||
+ | # [member] | ||
+ | ETCD_NAME=default | ||
+ | ETCD_DATA_DIR="/ | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | ETCD_LISTEN_CLIENT_URLS=" | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | #[cluster] | ||
+ | # | ||
+ | # if you use different ETCD_NAME (e.g. test), set ETCD_INITIAL_CLUSTER value for this name, i.e. " | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | ETCD_ADVERTISE_CLIENT_URLS=" | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | #[proxy] | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | #[security] | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | #[logging] | ||
+ | # | ||
+ | # examples for -log-package-levels etcdserver=WARNING, | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | </ | ||
+ | |||
+ | ==== Services kubernetes master ==== | ||
+ | |||
+ | Pour générer les certificats : | ||
+ | |||
+ | < | ||
+ | curl -L -O https:// | ||
+ | tar xzf easy-rsa.tar.gz | ||
+ | cd easy-rsa-master/ | ||
+ | ./easyrsa init-pki | ||
+ | MASTER_IP=192.168.2.112 | ||
+ | ./easyrsa --batch " | ||
+ | ./easyrsa --subject-alt-name=" | ||
+ | sudo mkdir / | ||
+ | for i in {pki/ | ||
+ | sudo chown -R kube:kube / | ||
+ | </ | ||
+ | |||
+ | Les services passent par l' | ||
+ | |||
+ | Fichier / | ||
+ | |||
+ | < | ||
+ | [Unit] | ||
+ | Description=Kubernetes API Server | ||
+ | Documentation=https:// | ||
+ | After=docker.service | ||
+ | Requires=docker.service | ||
+ | |||
+ | [Service] | ||
+ | TimeoutStartSec=0 | ||
+ | Restart=always | ||
+ | ExecStartPre=-/ | ||
+ | ExecStartPre=-/ | ||
+ | ExecStartPre=/ | ||
+ | ExecStart=/ | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=multi-user.target | ||
+ | </ | ||
+ | |||
+ | Fichier / | ||
+ | |||
+ | < | ||
+ | [Unit] | ||
+ | Description=Kubernetes Controller Manager | ||
+ | Documentation=https:// | ||
+ | After=docker.service | ||
+ | Requires=docker.service | ||
+ | |||
+ | [Service] | ||
+ | TimeoutStartSec=0 | ||
+ | Restart=always | ||
+ | ExecStartPre=-/ | ||
+ | ExecStartPre=-/ | ||
+ | ExecStartPre=/ | ||
+ | ExecStart=/ | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=multi-user.target | ||
+ | </ | ||
+ | |||
+ | Fichier / | ||
+ | |||
+ | < | ||
+ | [Unit] | ||
+ | Description=Kubernetes Scheduler Plugin | ||
+ | Documentation=https:// | ||
+ | After=docker.service | ||
+ | Requires=docker.service | ||
+ | |||
+ | [Service] | ||
+ | TimeoutStartSec=0 | ||
+ | Restart=always | ||
+ | ExecStartPre=-/ | ||
+ | ExecStartPre=-/ | ||
+ | ExecStartPre=/ | ||
+ | ExecStart=/ | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=multi-user.target | ||
+ | </ | ||
+ | |||
+ | Configuration du serveur API, fichier / | ||
+ | |||
+ | < | ||
+ | KUBE_API_ADDRESS=" | ||
+ | |||
+ | KUBE_API_ARGS=" | ||
+ | </ | ||
+ | |||
+ | Partie controller-manager, | ||
+ | |||
+ | < | ||
+ | KUBE_CONTROLLER_MANAGER_ARGS=" | ||
+ | </ | ||
+ | |||
+ | Activation des services : | ||
+ | |||
+ | < | ||
+ | sudo systemctl enable etcd kube-apiserver kube-controller-manager kube-scheduler | ||
+ | sudo systemctl start etcd kube-apiserver kube-controller-manager kube-scheduler | ||
+ | </ | ||
+ | |||
===== Configuration d'un noeud ===== | ===== Configuration d'un noeud ===== | ||
+ | |||
+ | ==== Configuration docker registry ==== | ||
Ajout du docker registry normalement hébergé sur le master. Dans / | Ajout du docker registry normalement hébergé sur le master. Dans / | ||
Ligne 15: | Ligne 230: | ||
< | < | ||
# etcd url location. Point this to the server where etcd runs | # etcd url location. Point this to the server where etcd runs | ||
- | FLANNEL_ETCD_ENDPOINTS=" | + | FLANNEL_ETCD_ENDPOINTS=" |
# etcd config key. This is the configuration key that flannel queries | # etcd config key. This is the configuration key that flannel queries | ||
Ligne 21: | Ligne 236: | ||
FLANNEL_ETCD_PREFIX="/ | FLANNEL_ETCD_PREFIX="/ | ||
</ | </ | ||
+ | |||
+ | ==== Configuration de Kubernetes ==== | ||
+ | |||
+ | Il s'agit de configurer la partie cliente : kubelet. Principalement d' | ||
+ | |||
+ | < | ||
+ | ### | ||
+ | # kubernetes kubelet (minion) config | ||
+ | |||
+ | # The address for the info server to serve on (set to 0.0.0.0 or "" | ||
+ | KUBELET_ADDRESS=" | ||
+ | |||
+ | # The port for the info server to serve on | ||
+ | # KUBELET_PORT=" | ||
+ | |||
+ | # You may leave this blank to use the actual hostname | ||
+ | KUBELET_HOSTNAME=" | ||
+ | |||
+ | # location of the api-server | ||
+ | KUBELET_API_SERVER=" | ||
+ | |||
+ | # pod infrastructure container | ||
+ | KUBELET_POD_INFRA_CONTAINER=" | ||
+ | |||
+ | # Add your own! | ||
+ | KUBELET_ARGS="" | ||
+ | </ | ||
+ | |||
+ | Il faut aussi préciser comment joindre le cluster ETCD, via le fichier / | ||
+ | |||
+ | < | ||
+ | ### | ||
+ | # kubernetes system config | ||
+ | # | ||
+ | # The following values are used to configure various aspects of all | ||
+ | # kubernetes services, including | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # logging to stderr means we get it in the systemd journal | ||
+ | KUBE_LOGTOSTDERR=" | ||
+ | |||
+ | # journal message level, 0 is debug | ||
+ | KUBE_LOG_LEVEL=" | ||
+ | |||
+ | # Should this cluster be allowed to run privileged docker containers | ||
+ | KUBE_ALLOW_PRIV=" | ||
+ | |||
+ | # How the controller-manager, | ||
+ | KUBE_MASTER=" | ||
+ | </ | ||
+ | |||
+ | Il ne reste plus qu'à activer les services, et à redemarrer pour être sûr de rien avoir oublié : | ||
+ | |||
+ | < | ||
+ | sudo systemctl enable flanneld kubelet kube-proxy | ||
+ | sudo systemctl reboot | ||
+ | </ | ||