Toto je starší verze dokumentu!
Vytvoríme si install.sh v /root.
#/bin/bash -x
apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
apt-get update
apt-get install -y docker-ce iptables arptables ebtables
wget -q https://storage.googleapis.com/golang/getgo/installer_linux
chmod +x installer_linux
./installer_linux
source /root/.bash_profile
update-alternatives --set iptables /usr/sbin/iptables-legacy
update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
update-alternatives --set arptables /usr/sbin/arptables-legacy
update-alternatives --set ebtables /usr/sbin/ebtables-legacy
apt-get update && apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF | tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl
mkdir -p /opt/k8s/fake
cat > /opt/k8s/fake.sh <<EOF
#!/bin/bash
cd /opt/k8s/fake
echo 0 > panic
mount --bind panic /proc/sys/kernel/panic
echo 0 > panic_on_oops
mount --bind panic_on_oops /proc/sys/kernel/panic_on_oops
echo 0 > overcommit_memory
mount --bind overcommit_memory /proc/sys/vm/overcommit_memory
echo "Filename Type Size Used Priority" > swaps
mount --bind swaps /proc/swaps
mkdir block
mount -o bind block/ /sys/block/
mount --make-rshared /
mkdir -p netfilter/nf_log
mount --bind netfilter /proc/sys/net/netfilter/
echo 327680 > netfilter/hashsize
echo 1310720 > netfilter/nf_conntrack_max
mkdir nf_conntrack_parameters
echo N > nf_conntrack_parameters/acct
echo 512 > nf_conntrack_parameters/expect_hashsize
echo 16384 > nf_conntrack_parameters/hashsize
echo N > nf_conntrack_parameters/nf_conntrack_helper
echo N > nf_conntrack_parameters/tstamp
chmod 666 -R nf_conntrack_parameters
chown nobody:nogroup -R nf_conntrack_parameters
mount -o bind nf_conntrack_parameters /sys/module/nf_conntrack/parameters/
EOF
chmod +x /opt/k8s/fake.sh
cat > /etc/systemd/system/fake.service <<EOF
[Unit]
Before=kubelet.service
[Service]
ExecStart=/opt/k8s/fake.sh
[Install]
WantedBy=default.target
EOF
chmod 644 /etc/systemd/system/fake.service
systemctl daemon-reload
systemctl enable fake.service
systemctl start fake.service
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
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 /root/install.sh /root/install.sh
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 ma niekoľko špeciálnych krokov. Najprv inicializujeme kubernetes, následne pridáme network.
kubeadm init --pod-network-cidr=10.244.0.0/16 mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml sed -i 's/vxlan/host-gw/g' kube-flannel.yml 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/master-
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:6443 --token 53r0e7.21pznuukg755rpz3 --discovery-token-ca-cert-hash sha256:6be4cb960d16fae2dd7ce96c7a16fc585ce174973c04ded0f91df6cf86681e3a
Na master node môžeme sledovať stav nodov:
kubectl get nodes