Creation cluster K3s avec multipass

Si vous voulez tester kubernetes sur votre machine je vais vous montrer comment faire.

Si vous n avez pas forcément 3 serveurs ou machines pour faire votre cluster multipass va permettre de jouer ce rôle 😊😉👍.

Il faut installer multipass:

sudo snap install multipass --classic
multipass 1.2.0 par Canonical✓ installé
    • Multipass va nous permettre de créer 3VM de 1Go ( en ubuntu 18.04LTS) sur notre ubuntu desktop:
    • Création des 3vm nécessaires à notre cluster
    ~$ multipass launch -n node1
    Launched: node1
    ~$ multipass exec node1 --- lsb_release -a
    No LSB modules are available.
    Distributor ID: Ubuntu
    Description: Ubuntu 18.04.4 LTS
    Release: 18.04
    Codename: bionic
    ~$ multipass list
    Name State IPv4 Image
    node1 Running 10.183.97.24 Ubuntu 18.04 LTS
    multipass launch -n node2
    Launched: node2
    multipass launch -n node3
    Launched: node3
    multipass list
    Name State IPv4 Image
    node1 Running 10.183.97.24 Ubuntu 18.04 LTS
    node2 Running 10.183.97.244 Ubuntu 18.04 LTS
    node3 Running 10.183.97.33 Ubuntu 18.04 LTS
    • Installation de k3s kubernetes Light sur le 1er noeud:

    multipass exec node1 --- bash -c “curl -sfL https://get.k3s.io | sh -”
    [INFO] Finding release for channel stable
    [INFO] Using v1.17.4+k3s1 as release
    [INFO] Downloading hash https://github.com/rancher/k3s/releases/download/v1.17.4+k3s1/sha256sum-amd64.txt
    [INFO] Downloading binary https://github.com/rancher/k3s/releases/download/v1.17.4+k3s1/k3s
    [INFO] Verifying binary download
    [INFO] Installing k3s to /usr/local/bin/k3s
    [INFO] Creating /usr/local/bin/kubectl symlink to k3s
    [INFO] Creating /usr/local/bin/crictl symlink to k3s
    [INFO] Creating /usr/local/bin/ctr symlink to k3s
    [INFO] Creating killall script /usr/local/bin/k3s-killall.sh
    [INFO] Creating uninstall script /usr/local/bin/k3s-uninstall.sh
    [INFO] env: Creating environment file /etc/systemd/system/k3s.service.env
    [INFO] systemd: Creating service file /etc/systemd/system/k3s.service
    [INFO] systemd: Enabling k3s unit
    Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.
    [INFO] systemd: Starting k3s
    • Récupération du token et de l ip sur le noeud master :

    TOKEN=$(multipass exec node1 sudo cat /var/lib/rancher/k3s/server/node-token)
    IP=$(multipass info node1 | grep IPv4 | awk ‘{print $2}’)
    • Installation sur le 2ème noeud:

    multipass exec node2 --- bash -c “curl -sfL https://get.k3s.io | K3S_URL=\”https://$IP:6443\” K3S_TOKEN=\”$TOKEN\” sh -”
    [INFO] Finding release for channel stable
    [INFO] Using v1.17.4+k3s1 as release
    [INFO] Downloading hash https://github.com/rancher/k3s/releases/download/v1.17.4+k3s1/sha256sum-amd64.txt
    [INFO] Downloading binary https://github.com/rancher/k3s/releases/download/v1.17.4+k3s1/k3s
    [INFO] Verifying binary download
    [INFO] Installing k3s to /usr/local/bin/k3s
    [INFO] Creating /usr/local/bin/kubectl symlink to k3s
    [INFO] Creating /usr/local/bin/crictl symlink to k3s
    [INFO] Creating /usr/local/bin/ctr symlink to k3s
    [INFO] Creating killall script /usr/local/bin/k3s-killall.sh
    [INFO] Creating uninstall script /usr/local/bin/k3s-agent-uninstall.sh
    [INFO] env: Creating environment file /etc/systemd/system/k3s-agent.service.env
    [INFO] systemd: Creating service file /etc/systemd/system/k3s-agent.service
    [INFO] systemd: Enabling k3s-agent unit
    Created symlink /etc/systemd/system/multi-user.target.wants/k3s-agent.service → /etc/systemd/system/k3s-agent.service.
    [INFO] systemd: Starting k3s-agent
    • Installation sur le 3eme noeud:

    multipass exec node3 --- bash -c “curl -sfL https://get.k3s.io | K3S_URL=\”https://$IP:6443\” K3S_TOKEN=\”$TOKEN\” sh -”
    [INFO] Finding release for channel stable
    [INFO] Using v1.17.4+k3s1 as release
    [INFO] Downloading hash https://github.com/rancher/k3s/releases/download/v1.17.4+k3s1/sha256sum-amd64.txt
    [INFO] Downloading binary https://github.com/rancher/k3s/releases/download/v1.17.4+k3s1/k3s
    [INFO] Verifying binary download
    [INFO] Installing k3s to /usr/local/bin/k3s
    [INFO] Creating /usr/local/bin/kubectl symlink to k3s
    [INFO] Creating /usr/local/bin/crictl symlink to k3s
    [INFO] Creating /usr/local/bin/ctr symlink to k3s
    [INFO] Creating killall script /usr/local/bin/k3s-killall.sh
    [INFO] Creating uninstall script /usr/local/bin/k3s-agent-uninstall.sh
    [INFO] env: Creating environment file /etc/systemd/system/k3s-agent.service.env
    [INFO] systemd: Creating service file /etc/systemd/system/k3s-agent.service
    [INFO] systemd: Enabling k3s-agent unit
    Created symlink /etc/systemd/system/multi-user.target.wants/k3s-agent.service → /etc/systemd/system/k3s-agent.service.
    [INFO] systemd: Starting k3s-agent
    • Statut de notre cluster:

    multipass exec node1 --- sudo kubectl get nodes
    NAME STATUS ROLES AGE VERSION
    node1 Ready master 2m2s v1.17.4+k3s1
    node2 Ready <none> 39s v1.17.4+k3s1
    node3 Ready <none> 0s v1.17.4+k3s1
    • Récupération d un fichier yaml avec le certificat afin de pouvoir se connecter à partir d’un autre host

    multipass exec node1 sudo cat /etc/rancher/k3s/k3s.yaml > k3s.yaml
    cat k3s.yaml
    apiVersion: v1
    clusters:
    -- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJWekNCL3FBREFnRUNBZ0VBTUFvR0NDcUdTTTQ5QkFNQ01DTXhJVEFmQmdOVkJBTU1HR3N6Y3kxelpYSjIKWlhJdFkyRkFNVFU0T1RFeU56Y3dPVEFlRncweU1EQTFNVEF4TmpJeE5EbGFGdzB6TURBMU1EZ3hOakl4TkRsYQpNQ014SVRBZkJnTlZCQU1NR0dzemN5MXpaWEoyWlhJdFkyRkFNVFU0T1RFeU56Y3dPVEJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkdKUy9HSFZaZTZLQ3RqMlVSVTA3SkJMMXZaSlB5SnovVGE5MzNBYUk2ZHQKVUNIeWY2WkNFOTluMm5HaWFwbmdNL1Vwb2I1c3phVVR0T2VIMmNZY0FSdWpJekFoTUE0R0ExVWREd0VCL3dRRQpBd0lDcERBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSUNrOHRqNG15Ui9VCjIrdEJSa3N1OFNEZm9wSS9yazBiY0gxU3BBUG1zZVVVQWlFQXVqZnNQWnlhNTY1WC9RclpsUTJzUG56c0MrZzYKbTJIUnBxZDh2cmVmeXhNPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
    server: https://127.0.0.1:6443
    name: default
    contexts:
    -- context:
    cluster: default
    user: default
    name: default
    current-context: default
    kind: Config
    preferences: {}
    users:
    -- name: default
    user:
    password: bf775c7257f3ac985ed3c2bc9749b51a
    username: admin
    • Changement de l ip localhost par l ip du master:

    ruben@thinserv1:~$ cat k3s.yaml
    apiVersion: v1
    clusters:
    -- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJWekNCL3FBREFnRUNBZ0VBTUFvR0NDcUdTTTQ5QkFNQ01DTXhJVEFmQmdOVkJBTU1HR3N6Y3kxelpYSjIKWlhJdFkyRkFNVFU0T1RFeU56Y3dPVEFlRncweU1EQTFNVEF4TmpJeE5EbGFGdzB6TURBMU1EZ3hOakl4TkRsYQpNQ014SVRBZkJnTlZCQU1NR0dzemN5MXpaWEoyWlhJdFkyRkFNVFU0T1RFeU56Y3dPVEJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkdKUy9HSFZaZTZLQ3RqMlVSVTA3SkJMMXZaSlB5SnovVGE5MzNBYUk2ZHQKVUNIeWY2WkNFOTluMm5HaWFwbmdNL1Vwb2I1c3phVVR0T2VIMmNZY0FSdWpJekFoTUE0R0ExVWREd0VCL3dRRQpBd0lDcERBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSUNrOHRqNG15Ui9VCjIrdEJSa3N1OFNEZm9wSS9yazBiY0gxU3BBUG1zZVVVQWlFQXVqZnNQWnlhNTY1WC9RclpsUTJzUG56c0MrZzYKbTJIUnBxZDh2cmVmeXhNPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
    server: https://10.183.97.24:6443
    name: default
    contexts:
    -- context:
    cluster: default
    user: default
    name: default
    current-context: default
    kind: Config
    preferences: {}
    users:
    -- name: default
    user:
    password: bf775c7257f3ac985ed3c2bc9749b51a
    username: admin
    • Nous pouvons maintenant exécuter les commandes kube à partir de notre host grâce à l export ci-dessous:

    snap install kubectl --classic
    kubectl 1.18.2 par Canonical✓ installé
    export KUBECONFIG=$PWD/k3s.yaml
    kubectl get nodes
    NAME STATUS ROLES AGE VERSION
    node1 Ready master 5m37s v1.17.4+k3s1
    node2 Ready <none> 4m14s v1.17.4+k3s1
    node3 Ready <none> 3m35s v1.17.4+k3s1
    • Si jamais vous voulez aller plus vite je vous ai mis le script à disposition sur mon gitlab:

    https://gitlab.mondeunix.com/scripts/public/-/blob/master/k3s-script-with-multipass-local.sh

    Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.