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:49] – 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 | ||
- | * **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 | ||
- | </ |