container:kubernetes:k3s_install_etcd
This is an old revision of the document!
Table of Contents
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'.
container/kubernetes/k3s_install_etcd.1610448631.txt.gz · Last modified: by stone
