Nadat ik de cursus Kubernetes via de Linux Academy heb afgerond, ga ik natuurlijk ook weer mijn playground daar voor mijn nieuwe cursus gebruiken. Vandaar dat het wel handig is om een eigen Kube cluster te hebben op mijn laptop.
Het makkelijkst kunnen we dit doen op basis van VirtualBox. Dit werk om alle gangbare systemen. Wat we het beste kunnen doen is eerst 1 CentOS systeem maken deze zo ver mogelijk installeren en deze dan clonen. Dit werkt namelijk het snelst.
Download de CentOS iso, waarmee we de installatie kunnen doen.
Het stappen plan ziet er als volgt uit:
Maak een nieuwe VM aan in VitrualBox. Deze moet de volgende resources hebben:
- 1 CPU
- 1 GB geheugen
- 1 Harddisk van 25 GB
- 2 netwerkkaarten
– 1e stellen we in als Bridge Adapter (Paravirtualized)
– 2e stellen we in als Host Only Netwerk - 1 CD-rom drive welke we koppelen aan de CentOS iso
We voeren een standaard installatie uit van CentOS. En updaten de repository. Als de installatie gedaan is rebooten we het systeem en voeren de volgende stappen uit:
yum install vim swapoff -a vim /etc/fstab
In /etc/fstab commenten we de regel van de swap space.
We gaan verder met het installeren van Docker
yum -y install docker systemctl enable docker systemctl start docker
Als docker geïnstalleerd is maken we de kubernetes repository aan
cat << EOF | sudo tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF
Om alles goed te laten werken moeten we SELinux uitschakelen
setenforce 0 vi /etc/selinux/config
In dit bestand veranderen we SELINUX=enforcing in SELINUX=permissive
Hierna kunnen we kubernetes installeren
yum install -y kubelet kubeadm kubectl systemctl enable kubelet systemctl start kubelet
en configureren sysctl
cat << EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sudo sysctl --system
Nu is de basis installatie compleet. Deze installatie gaan we clonen. Zodat we 1 master en een aantal nodes hebben. Nadat we deze nodes gemaakt hebben starten we ze een voor een op en noteren het ip adres van de 2e kaarten.
We veranderen de hostnames de 1e server noemen we bijv. kubemaster.testnet.nl, de 1e worker kubeworker1.testnet.nl en de 2e worker kubeworker2.testnet.nl.
Op al deze nodes vullen we de ipadressen in in de /etc/hosts file. Zodat deze apparaten elkaar op naam kunnen bereiken.
Als we dit allemaal gedaan hebben loggen we in op de master node en voeren het volgende commando uit
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
Op het einde van de installatie krijgen we te zien hoe we de workernodes kunnen joinen. Kopieer deze regel. Mocht er een ip adres instaan van de masternode raad ik aan deze te veranderen in de hostname.
Voordat we de workernodes kunnen joinen voeren we op de masternode eerst nog het volgende commando uit, waarmee we de flanel networking installeren
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/bc79dd1505b0c8681ece4de4c0d86c5cd2643275/Documentation/kube-flannel.yml
Hierna kunnen we de workernodes joinen en kunnen we controleren of de nodes het doen door middel van het volgende commando:
kubectl get nodes