Kubernetes Cluster Kurulumu — K8S cluster Hard Way installation on Ubuntu
Arkadaşlar basitinden bir kubernetes kurulumu anlatacağım. ilk yazım olduğundan hata ya da önerileriniz varsa beni yönlendirmenizi rica edeceğim.

öncelikle min req. olarak 2CPU 2RAM bir master sunucu gerekmekte. node sunucular 1CPU 1RAM kullanılabilir.
Kurulum Aşamaları:
- swap kapatılması. / tüm sunucular
- docker kurulum. / tüm sunucular
- kubeadm, kubectl, kubelet kurulum. / tüm sunucular
- masterda k8s cluster aktif edilerek, network ayarlanması. / sadece master
- kubeconfig kopyalanması. / sadece master
- nodeların dahil edilmesi. / sadece node
ilk olarak bütün sunucularda swapoff yapacağız, kubernetes çalışırken bazı performans problemleri yarattığı için bu kapatılıyor.
sudo apt install curl vim net-tools openssh-serversudo swapoff -a//reboot sonrası tekrar aktif olmaması için de aşağıdaki komut girilir.sed -i.bak 's/\/swap\.img/#\/swap\.img/g' /etc/fstab
Master ve Node sunuculara Docker kurulumu için aşağıdaki komutlar sırasıyla girilir;
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"sudo apt-get update
sudo apt-get install -y docker-ce
Master ve Node sunuculara kubeadm, kubelet, kubectl kurulumu için aşağıdaki komutlar sırası ile girilir;
sudo curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -cat << EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
// kubernetes-xenial eklendi mi kontrol için komutu çalıştırabilirsiniz. cat /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
Master üzerinde bir CIDR ile clusterı aktif hale getiriyoruz.
sudo kubeadm init --pod-network-cidr=10.111.0.0/16
istediğinizi seçebilirsiniz, bu komutu çalıştırdığınız anda bir token alacaksınız bunu kaydetmeniz gerekiyor nodeları bu tokenla master a join edeceksiniz.

eğer kubeadmi init çalıştırdınızda kubelet ile ilgili hata alıyorsanız aşağıdaki komutları çalıştırarak sorundan kurtulabilirsiniz. daha sonra tekrar kubeadm reset ve kubeadm init diyerek tekrar çalışabilirsiniz.
sudo mkdir /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json
{
“exec-opts”: [“native.cgroupdriver=systemd”],
“log-driver”: “json-file”,
“log-opts”: {
“max-size”: “100m”
},
“storage-driver”: “overlay2”
}
EOFsudo systemctl enable docker
sudo systemctl daemon-reload
sudo systemctl restart docker
cluster init ederken size kubeconfig file ile ne yapılması gerektiğini belirtmekte bunu da hızlıca yapıyoruz.
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl version diyerek clusterın cevap verdiğini görebilirsiniz.
Node join etmek için cluster üzerinde kopyaladığınız komutu Node üzerinde çalıştırırsanız cluster a dahil olacaktır.
kubeadm join 10.128.0.10:6443 --token qtqkei.u5ocfh93dfczv93k \
--discovery-token-ca-cert-hash sha256:53a9c7c8ec2a7aa40f8f26c459892439e028c8bab3fc1e3cfc70620f788776ba

Master sunucu üzerinde networking ayarlarını yapmak için flannel dosyasını install ediyoruz.
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Flannel yükledikten sonra system podların durumunu kontrol ederiz. Hepsi running olarak görünmesi gerekiyor.

Master ve cluster a dahil ettiğimiz nodeların durumunu görmek için
kubectl get nodes çalıştırabiliriz.

bir control plane yani master bir de worker hazır yapmış bulunmaktayız.
PS: ben single node olacak şekilde config yaptım, node sayısını aynı komutlarla artırabilirsiniz.

ilk deployment olarak nginx yapıp kontrol edelim:

expose edip çalışırlığını kontrol edebiliriz. NodePort olarak expose edeceğim bu yüzden cluster üstünden NodeIp sine, expose ederken vereceği port ile istek yapacağım default nginx web page göreceğiz.


umarım öğrenmeye başlayan arkadaşlara yardımcı olur, hepinize sağlıklı günler diliyorum.
h.a.s.