k8s – 2 – ceph helm on minikube

Pour installer ceph sur minikube il faut faire quelques modification sur la vm. D’abord l’éteindre :

minikube stop

Avec virt-manager ajouter autant de disk que d’osd voulu. Moi je suis parti sur 6 disk de 5G en qcow2. Obligé de les mettre en SATA pour que ca fonctionne. Dommage.

Pour fabriquer les disques :

for i in 1 2 3 4 5 6; do qemu-img create -f qcow2 osd$i.qcow2 5G; done

Ensuite on relance minikube, et le dashboard

minikube start --memory 4096 --disk-size 40g --cpus 4 --vm-driver kvm2
minikube dashboard

Pour ceph.

#install helm
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get | bash
helm init

Installation de ceph et astuce pour faire fonctionner avec minikube

#install ceph
helm serve &
helm repo add local http://localhost:8879/charts
git clone https://github.com/ceph/ceph-helm
cd ceph-helm/ceph

Editer le fichier ceph-helm/ceph/ceph/values.yaml et remplacer:

diff --git a/ceph/ceph/values.yaml b/ceph/ceph/values.yaml
index 5831c53..72a74b7 100644
--- a/ceph/ceph/values.yaml
+++ b/ceph/ceph/values.yaml
@@ -254,8 +254,8 @@ ceph:
     mgr: true
   storage:
     # will have $NAMESPACE/{osd,mon} appended
-    osd_directory: /var/lib/ceph-helm
-    mon_directory: /var/lib/ceph-helm
+    osd_directory: /data/ceph-helm
+    mon_directory: /data/lib/ceph-helm
     # use /var/log for fluentd to collect ceph log
     # mon_log: /var/log/ceph/mon
     # osd_log: /var/log/ceph/osd

make
cd -

Créer un fichier ./ceph/ceph-overrides.yaml avec :

network:
  public:  192.168.122.0/24
  cluster: 192.168.122.0/24

osd_devices:
  - name: sda
    device: /dev/sda
    zap: "1"
  - name: sdb
    device: /dev/sdb
    zap: "1"
  - name: sdc
    device: /dev/sdc
    zap: "1"
  - name: sdd
    device: /dev/sdd
    zap: "1"
  - name: sde
    device: /dev/sde
    zap: "1"
  - name: sdf
    device: /dev/sdf
    zap: "1"

storageclass:
  name: ceph-rbd
  pool: rbd
  user_id: k8s

Et lancer l’installation :

kubectl create namespace ceph
kubectl create -f ceph-helm/ceph/rbac.yaml
kubectl label --overwrite node minikube ceph-mon=enabled ceph-mgr=enabled ceph-rgw=enabled ceph-mds=enabled
kubectl label --overwrite node minikube ceph-osd=enabled ceph-osd-device-sda=enabled ceph-osd-device-sdb=enabled ceph-osd-device-sdc=enabled ceph-osd-device-sdd=enabled ceph-osd-device-sde=enabled ceph-osd-device-sdf=enabled
helm install --name=ceph local/ceph --namespace=ceph -f ceph/ceph-overrides.yaml

On attend que tout les pods soient running :

watch -n1 "kubectl -n ceph get pods"

On vérifie que tout est ok coté ceph :

kubectl -n ceph exec -ti ceph-mon-cppdk -c ceph-mon -- ceph -s

k8s – 1 – Installation de minikube

Minikube permet de tester en local un cluster k8s dans une vm. L’installation se fera sur une debian buster avec un user dans le group sudo.

sudo apt-get update && sudo apt-get install -y apt-transport-https curl vim qemu-kvm libvirt-clients libvirt-daemon-system
sudo adduser $USER libvirt
sudo adduser $USER libvirt-qemu
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo cp minikube /usr/local/bin/ && rm minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/docker-machine-driver-kvm2 && chmod +x docker-machine-driver-kvm2 && sudo mv docker-machine-driver-kvm2 /usr/bin/
minikube start --memory 4096 --cpus 4 --vm-driver kvm2

 

Passage à kubernetes

J’ai un peu lâché l’affaire avec les vm. Kubernetes à l’air sec. Je vais tester ça en local. Le but est d’avoir un cluster k8s fonctionnel avec ceph, un ingress et le monitoring de tout ça.