3.4 KiB
Montée en charge
Commençons facilement, en augmentant le nombre de workers
:
kubectl scale deploy/worker --replicas=10
Tout comme cela fonctionnait en partie avec docker-compose
, on obtient ici le
même résultat. Ouf ... c'était pas trop tôt !
Nous pouvons profiter de regarder l'augmentation en direct, via la commande :
kubectl get pods -w
Par contre, ce ne sera pas aussi simple d'augmenter le nombre de rng
. En
effet, il nous faut répartir les services entre plusieurs machines.
Daemon sets
Une ressource daemon sets va s'assurer que tous les nœuds (ou une partie) vont exécuter une instance d'un pod. Ainsi, si un nouveau nœud rejoint le cluster, le pod sera automatiquement lancé dessus. Inversement, lorsqu'un nœud quitte le cluster, le pod est nettoyé.
On s'en sert principalement pour exécuter une instance de daemon de stockage
(tel que Ceph, glusterd
, ...) ou pour la collecte de logs (fluentd
,
logstash
, ...), voire du monitoring (Prometheus, collectd
, ...)
Pour créer un daemon sets, il est nécessaire d'écrire un fichier YAML :
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentd-elasticsearch
namespace: kube-system
labels:
k8s-app: fluentd-logging
spec:
selector:
matchLabels:
name: fluentd-elasticsearch
template:
metadata:
labels:
name: fluentd-elasticsearch
spec:
tolerations:
- key: node-role.kubernetes.io/master
effect: NoSchedule
containers:
- name: fluentd-elasticsearch
image: quay.io/fluentd_elasticsearch/fluentd:v2.5.2
resources:
limits:
memory: 200Mi
requests:
cpu: 100m
memory: 200Mi
volumeMounts:
- name: varlog
mountPath: /var/log
- name: varlibdockercontainers
mountPath: /var/lib/docker/containers
readOnly: true
terminationGracePeriodSeconds: 30
volumes:
- name: varlog
hostPath:
path: /var/log
- name: varlibdockercontainers
hostPath:
path: /var/lib/docker/containers
Ensuite, on crée le DaemonSet en appliquant la nouvelle spécification :
kubectl apply -f https://k8s.io/examples/controllers/daemonset.yaml
Pour plus d'informations, consultez la documentation.
DaemonSet rng
Pour réaliser le DaemonSet de notre pod rng
, le plus simple est de partir
d'un export de la ressource existante :
kubectl get deploy/rng -o yaml > rng.yml
La première chose que l'on peut faire, c'est changer le type décrit dans le
champ kind
:
kind: DaemonSet
Vous pouvez essayer d'appliquer cette spec, pour voir et essayer de tâtonner grâce aux erreurs renvoyées par l'API.
Il vous faudra également retirer le champ replicas
(qui n'a pas de sens ici,
vu que la réplication est basée sur les nœuds), les champs strategy
,
progressDeadlineSeconds
, ainsi que la ligne status: {}
.
Force ! {-}
En fait, plutôt que de corriger ces erreurs, on aurait aussi très bien pu désactiver la validation comme ceci :
kubectl apply -f rng.yml --validate=false
Trop de pods rng
{-}
Après avoir appliqué la nouvelle spec, on constate qu'il y a beaucoup de pods
rng
. En effet, l'ancien pod déployé avec la ressource deployment est
toujours là.
Botleneck résolu ? {-}
Admirez maintenant dans Chronograf si vous avez réussi à augmenter votre nombre de pépites !