Skip to content

K3S Configuration d'un cluster

Création base de donné

sudo docker run -p 3306:3306 \
  --name mysql-k3s \
  --restart unless-stopped \
  -v /docker/appdata/mysql-k3s/conf:/etc/mysql/conf.d \
  -v /docker/appdata/mysql-k3s/logs:/logs \
  -v /docker/appdata/mysql-k3s/data:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=root_password \
  -d biarms/mysql:5.7

Confiuguration de la db :

mysql -h 127.0.0.1 -P 3306 -u root -p

load balancer k3s

docker run --name k3s-load --restart unless-stopped -v /docker/appdata/k3s-load/nginx.conf:/etc/nginx/nginx.conf:ro -p 6443:6443 -d nginx

Fichier de coinfiguration nginx.conf :

events {}

stream {
  upstream k3s_servers {
    server 100.100.35.114:6443;
    server 100.89.156.117:6443;
  }

  server {
    listen 6443;
    proxy_pass k3s_servers;
  }
}

Initialisation de k3s

curl -sfL https://get.k3s.io | sh -s - server \
  --token=root_token \
  --flannel-iface=tailscale0 \
  --datastore-endpoint="mysql://root:root_password@tcp(100.86.89.16:3306)/k3s" \
  --tls-san 100.86.89.16

Configuration de Rancher

docker run --name k3s-web -v /docker/appdata/k3s-web/nginx.conf:/etc/nginx/nginx.conf:ro -p 443:443 -d nginx

Dans le fichier nginx.conf :

worker_processes 4;
worker_rlimit_nofile 40000;

events {
    worker_connections 8192;
}

stream {
    upstream rancher_servers_http {
        least_conn;
        server 100.100.35.114:80 max_fails=3 fail_timeout=5s;
        server 100.89.156.117:80 max_fails=3 fail_timeout=5s;
    }
    server {
        listen 80;
        proxy_pass rancher_servers_http;
    }

    upstream rancher_servers_https {
        least_conn;
        server 100.100.35.114:443 max_fails=3 fail_timeout=5s;
        server 100.89.156.117:443 max_fails=3 fail_timeout=5s;
    }
    server {
        listen     443;
        proxy_pass rancher_servers_https;
    }

}

kubectl init config

demande d'avoir helm

helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
kubectl create namespace cattle-system
kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v1.2.0/cert-manager.crds.yaml
kubectl create namespace cert-manager
 helm repo add jetstack https://charts.jetstack.io
 helm repo update
 helm install \
cert-manager jetstack/cert-manager \
--namespace cert-manager \
kubectl get pods --namespace cert-manager

cert manager ok ?

helm install rancher rancher-stable/rancher \
  --namespace cattle-system \
  --set hostname=rancher.albt.org
  kubectl -n cattle-system rollout status deploy/rancher