User Tools

Site Tools


container:kubernetes:k3s_install_etcd

This is an old revision of the document!


Kubernetes via K3s mit etcd installieren

Gestest wurde das ganze auf vier virtuellen Ubuntu 20.04 Nodes mit K3s v1.19.0

  • Node0 → Loadbalancer für die Master (NGINX)
  • Node1 → Master & Worker
  • Node2 → Master & Worker
  • Node3 → Master & Worker
  • Node4 → Worker


Update OS

Das OS sollte aktuell sein

Auf alle Nodes:

apt update
apt dist-upgrade -y
reboot


Installation NGINX Loadbalancer

Dieser NGINX wird verwendet damit der Traffic nicht auf einen Master kommt sondern auf alle Master aufgeteilt wird.
Nur so sind die Master Nodes auch wirklich HA.

apt-get install nginx
rm -f /etc/nginx/sites-enabled/default

vim /etc/nginx/nginx.conf
stream {
  upstream k3s_master {
    server 192.168.88.121:6443;
    server 192.168.88.122:6443;
    server 192.168.88.123:6443;
  }

  server {
    listen 6443;
    proxy_pass k3s_master;
  }
}

systemctl restart nginx


Installation Master 1

Master 1 - Node 1
export INSTALL_K3S_EXEC="--disable servicelb --disable traefik --cluster-init"
curl -sfL https://get.k3s.io | sh -
kubectl get nodes


Token für die anderen Master und den Worker

root@kube01:~# cat /var/lib/rancher/k3s/server/node-token
K10dbb79453251d4adcf6048bda1b08ae8abf1d9d54ea5b342d91bd7a6ac7a55778::server:SuperGeilerTest


Installation Master 2

Master 2 - Node 2
export INSTALL_K3S_EXEC="--disable servicelb --disable traefik --cluster-init --server https://192.168.88.120:6443"
curl -sfL https://get.k3s.io | K3S_TOKEN=K10dbb79453251d4adcf6048bda1b08ae8abf1d9d54ea5b342d91bd7a6ac7a55778::server:SuperGeilerTest sh -s -


Installation Master 3

Master 3 - Node 3
export INSTALL_K3S_EXEC="--disable servicelb --disable traefik --cluster-init --server https://192.168.88.120:6443"
curl -sfL https://get.k3s.io | K3S_TOKEN=K10dbb79453251d4adcf6048bda1b08ae8abf1d9d54ea5b342d91bd7a6ac7a55778::server:SuperGeilerTest sh -s -


Worker hinzufügen 1

Worker 1 - Node 4
curl -sfL https://get.k3s.io | K3S_URL=https://192.168.88.120:6443 K3S_TOKEN=K10dbb79453251d4adcf6048bda1b08ae8abf1d9d54ea5b342d91bd7a6ac7a55778::server:SuperGeilerTest sh -s -


Bash Autocomplete kubectl

Auf der Master Node:

echo 'source <(kubectl completion bash)' >> ~/.bashrc
source .bashrc


Kontrolle des Clusters

kubectl get nodes
NAME     STATUS   ROLES         AGE     VERSION
kube01   Ready    etcd,master   4h40m   v1.19.5+k3s2
kube02   Ready    etcd,master   4h24m   v1.19.5+k3s2
kube03   Ready    etcd,master   4h21m   v1.19.5+k3s2
kube04   Ready    <none>        3h6m    v1.19.5+k3s2

root@kube01:~# kubectl cluster-info
Kubernetes master is running at https://127.0.0.1:6443
CoreDNS is running at https://127.0.0.1:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://127.0.0.1:6443/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.


Danach kann mit weiteren Punten fortgesetzt werden.


Kubectl auf dem NGINX (Optional)

Natürlich ist es möglich via kubectl über den Loadbalancer den Cluster zu steuern. Zum Beispiel über den NGINX Server.

Installation Kubectl

snap install kubectl --classic


K3s Config holen

Auf einer Master Node:

cat /etc/rancher/k3s/k3s.yaml


Auf dem NGINX Server
mkdir -p ~/.kube
vim ~/.kube/config

Einfügen der Config vom Master und ändern der "server" IP auf die IP vom NGINX Loadbalancer.
\\

<code>
root@kubenginx:~# kubectl cluster-info
Kubernetes control plane is running at https://192.168.88.120:6443
CoreDNS is running at https://192.168.88.120:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://192.168.88.120:6443/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.


Bachrc Setup

vim ~/.bashrc

export KUBECONFIG=~/.kube/config
container/kubernetes/k3s_install_etcd.1610454064.txt.gz · Last modified: by stone