Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verze | ||
| navody:vps:vpsadminos:kubernetes [2020/11/22 08:50] – toms | navody:vps:vpsadminos:kubernetes [2023/07/31 19:32] (aktuální) – odstraněno Aither | ||
|---|---|---|---|
| Řádek 1: | Řádek 1: | ||
| - | ====== Kubernetes na vpsAdminOS ====== | ||
| - | ===== Prerekvizity ===== | ||
| - | * VPS musí bežať na vpsAdminOS na kerneli min. 5.10-rc4. V čase písania návodu je dostupný tento kernel iba na staging node | ||
| - | * Postup je odskúšaný na fresh minimal Ubuntu 20.04 | ||
| - | * Používame latest vanilla kubernetes | ||
| - | * Ako networking používame flannel s host-gw s internou sietou 10.244.0.0/ | ||
| - | * **Inštalačný skript je rovnaký pre master aj worker nody** | ||
| - | ===== Spoločný postup pre master aj worker nodes ===== | ||
| - | Vytvoríme si install.sh v / | ||
| - | < | ||
| - | #/bin/bash -x | ||
| - | apt-get install -y apt-transport-https ca-certificates curl software-properties-common | ||
| - | curl -fsSL https:// | ||
| - | add-apt-repository "deb [arch=amd64] https:// | ||
| - | apt-get update | ||
| - | apt-get install -y docker-ce iptables arptables ebtables | ||
| - | |||
| - | wget -q https:// | ||
| - | chmod +x installer_linux | ||
| - | ./ | ||
| - | source / | ||
| - | |||
| - | update-alternatives --set iptables / | ||
| - | update-alternatives --set ip6tables / | ||
| - | update-alternatives --set arptables / | ||
| - | update-alternatives --set ebtables / | ||
| - | apt-get update && | ||
| - | curl -s https:// | ||
| - | cat <<EOF | tee / | ||
| - | deb https:// | ||
| - | EOF | ||
| - | |||
| - | apt-get update | ||
| - | apt-get install -y kubelet kubeadm kubectl | ||
| - | |||
| - | mkdir -p / | ||
| - | |||
| - | cat > / | ||
| - | # | ||
| - | cd / | ||
| - | echo 0 > panic | ||
| - | mount --bind panic / | ||
| - | echo 0 > panic_on_oops | ||
| - | mount --bind panic_on_oops / | ||
| - | echo 0 > overcommit_memory | ||
| - | mount --bind overcommit_memory / | ||
| - | |||
| - | echo " | ||
| - | mount --bind swaps /proc/swaps | ||
| - | mkdir block | ||
| - | mount -o bind block/ /sys/block/ | ||
| - | mount --make-rshared / | ||
| - | |||
| - | mkdir -p netfilter/ | ||
| - | mount --bind netfilter / | ||
| - | echo 327680 > netfilter/ | ||
| - | |||
| - | echo 1310720 > netfilter/ | ||
| - | |||
| - | mkdir nf_conntrack_parameters | ||
| - | echo N > nf_conntrack_parameters/ | ||
| - | echo 512 > nf_conntrack_parameters/ | ||
| - | echo 16384 > nf_conntrack_parameters/ | ||
| - | echo N > nf_conntrack_parameters/ | ||
| - | echo N > nf_conntrack_parameters/ | ||
| - | chmod 666 -R nf_conntrack_parameters | ||
| - | chown nobody: | ||
| - | mount -o bind nf_conntrack_parameters / | ||
| - | EOF | ||
| - | |||
| - | chmod +x / | ||
| - | |||
| - | cat > / | ||
| - | [Unit] | ||
| - | Before=kubelet.service | ||
| - | |||
| - | [Service] | ||
| - | ExecStart=/ | ||
| - | |||
| - | [Install] | ||
| - | WantedBy=default.target | ||
| - | EOF | ||
| - | |||
| - | chmod 644 / | ||
| - | |||
| - | systemctl daemon-reload | ||
| - | systemctl enable fake.service | ||
| - | systemctl start fake.service | ||
| - | |||
| - | cat > / | ||
| - | { | ||
| - | " | ||
| - | " | ||
| - | " | ||
| - | " | ||
| - | }, | ||
| - | " | ||
| - | } | ||
| - | EOF | ||
| - | |||
| - | systemctl daemon-reload | ||
| - | systemctl restart docker | ||
| - | |||
| - | kubeadm config images pull | ||
| - | </ | ||
| - | |||
| - | Spustíme inštaláciu a počkáme na úspešné dokončenie základnej inštalácie k8s: | ||
| - | < | ||
| - | chmod +x / | ||
| - | / | ||
| - | </ | ||
| - | |||
| - | Inštalácia je spravená tak, že systém funguje aj po reštarte, avšak trvá 3-5 minút kým znovu nabehnú všetky služby. | ||
| - | |||
| - | ==== Master ==== | ||
| - | Master ma niekoľko špeciálnych krokov. Najprv inicializujeme kubernetes, následne pridáme network. | ||
| - | < | ||
| - | kubeadm init --pod-network-cidr=10.244.0.0/ | ||
| - | |||
| - | mkdir -p $HOME/.kube | ||
| - | cp -i / | ||
| - | chown $(id -u):$(id -g) $HOME/ | ||
| - | |||
| - | wget https:// | ||
| - | sed -i ' | ||
| - | kubectl apply -f kube-flannel.yml | ||
| - | </ | ||
| - | |||
| - | Odporúčam sledovať priebeh deploymentu a počkať, kým budú všetko v stave running s plným počtom: | ||
| - | < | ||
| - | kubectl get pods --all-namespaces | ||
| - | </ | ||
| - | |||
| - | Ak chceme aby aj master node slúžil ako worker, môžeme ho pridať: | ||
| - | < | ||
| - | kubectl taint nodes --all node-role.kubernetes.io/ | ||
| - | </ | ||
| - | |||
| - | ==== Worker ==== | ||
| - | Získame si najprv na master node token pre pridanie ďalšieho nodu do clustru. Získame tým príkaz ktorý iba copy-paste na worker node: | ||
| - | < | ||
| - | kubeadm token create --print-join-command | ||
| - | |||
| - | # Ukazka vystupu prikazu kubeadm token create --print-join-command | ||
| - | kubeadm join 37.205.14.241: | ||
| - | </ | ||
| - | |||
| - | |||
| - | |||
| - | Na master node môžeme sledovať stav nodov: | ||
| - | < | ||
| - | kubectl get nodes | ||
| - | </ | ||