sudo hostnamectl set-hostname “master.1w2.io” && exec bashsudo hostnamectl set-hostname “worker1.1w2.io” && exec bashsudo hostnamectl set-hostname “worker2.1w2.io” && exec bash
Bu adımda eğer ortamınızda Windows veya Linux DNS sever yok ise kullanın, eğer dns server var ise dns kayıtlarını açmalısınız. Her bi node içindeki /etc/hosts dosyasına aşağıdaki girdileri ekleyin.
192.168.1.65 master.1w2.io
192.168.1.66 worker1.1w2.io
192.168.1.67 worker2.1w2.io
2 - Her node üzerinde takas alanının disable edin. Kubelet' in sorunsuz çalışması için tüm node’ lar takas alanını devre dışı bırakmalıyız. Swap alanının server açılışına eklenmesini de aynı aÅŸamada yapıyoruz. Sırası ile, aÅŸağıdaki komutları çalıştırın,
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
3 - Kubernetes için SELinux ve Güvenlik Duvarı (Firewall) Kurallarını Ayarlama
Aşağıdaki komutları kullanarak tüm node'lardaki SELinux modunu izinli olarak ayarlayın,
(Bu ayarları her node üzerinde yapıyoruz)
sudo setenforce 0sudo sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/sysconfig/selinux
Master Node, firewall aşağıdaki bağlantı noktalarına izin verin.
sudo firewall-cmd --permanent --add-port={6443,2379,2380,10250,10251,10252,10257,10259,179}/tcp
sudo firewall-cmd --permanent --add-port=4789/udp
sudo firewall-cmd --reload
Worker Node, firewall alttaki bağlantı noktalarına izin verin,
sudo firewall-cmd --permanent --add-port={179,10250,30000-32767}/tcp
sudo firewall-cmd --permanent --add-port=4789/udp
sudo firewall-cmd --reload
4 - Gerekli Kernel Modüllerini ve Parametreleri ekliyoruz.
Kubernetes cluster için, tüm master ve worker üzerinde overlay ve br_netfilter kernel modüllerini eklemeliyiz.
sudo tee /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF
Modulleri yüklemek için komutlar aşağıda
sudo modprobe overlay
sudo modprobe br_netfilter
sudo vi /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward = 1net.bridge.bridge-nf-call-ip6tables = 1
Bu komut ile yaptığımız kernel modul ve parametreleri devreye alıyoruz load yapıyoruz.
sudo sysctl --system
5 - Containerd Runtime yüklüyoruz ( Docker Yerine )
Kubernetes bir konteyner runtime gerektirir ve en popüler seçeneklerden biri containerd dir. Ancak Rocky Linux varsayılan paket depolarında mevcut değildir, bu nedenle tüm master ve worker nodeler' e aşağıdaki docker deposunu ekleyin.
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Şimdi tüm master ve worker nodeler üzerinde containerd yüklemesi yapıyoruz.
sudo dnf install containerd.io -y
Sırada containerd' yi systemdcgroup kullanacak şekilde yapılandırma var, her master ve worker node üzerinde aşağıdaki komutları çalıştırın.
containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
Containerd servisini restart ediyoruz ve server açılışına ekliyoruz her master ve worker node üzerinde yapıyoruz.
sudo systemctl restart containerd
sudo systemctl enable containerd
Containerd çalışma durumunu bir kontrol edelim her master ve worker node üzerinde yapıyoruz.
sudo systemctl status containerd
6 - Kubernetes araçlarını (tools) yüklüyoruz.
Kubeadm, kubectl ve kubelet gibi Kubernetes araçları Rocky Linux 9'un varsayılan paket depolarında mevcut değildir. Bu nedenle, bu araçları yüklemek için aşağıdaki depoyu her master ve worker node üzerinde ekleyin.
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
Kubernetes araçlarını yükledikten sonra, kubelet servisini her master ve her node üzerinde server açılışına ekliyoruz.
sudo systemctl enable --now kubelet
7- Kubernetes yüklemsine başlıyoruz şimdi :)
Şimdi, Kubernetes kurmaya kurmaya hazırız. Kubernetes cluster' in master node' dan başlatmak için Kubeadm komutunu aşağıdaki gibi çalıştırın. Komut satırının sonundaki server ismine dikkat ederek ve değiştirerek komutu uygulayınız.
sudo kubeadm init --control-plane-endpoint=master
Yukarıdaki komut sonrasında aşağıdaki gibi bir çıktı vermesi gerekiyor master node. Burada alt satırda bulunan resimde sarı ve sarı okla işaretlediğim alanda isin worker node' larınızı cluster ortamına eklemek için gerekli olan komut satırlarını göreceksiniz bu alanı bir notapad e kayıt etmeniz sizin için iyi olacaktır. Hatta prod ortamınıza sonradan cluster' e ekleme yaparkende kullanabileceksiniz.
örnek :
kubeadm join master:6443 --token 5hihin.pd0x69fm9c84lj0l \
--discovery-token-ca-cert-hash sha256:358499b111f8b3e6da00add3eba8b58bce57c36d9768e30bd1f3caa7ef532e1d
Sürece master node üzerinde işlem yaparak devam ediyoruz aşağıdaki komutları girerek.
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Arkasından yukarıda örneği ve resimde işaretli alandaki komut ile worker node' ları cluster içine ekliyoruz.
kubeadm join master:6443 --token 5hihin.pd0x69fm9c84lj0l \
--discovery-token-ca-cert-hash sha256:358499b111f8b3e6da00add3eba8b58bce57c36d9768e30bd1f3caa7ef532e1d
Her worker node üzerinde komut çalıştırıldıktan sonra aşağıdaki resimlerdeki gibi çıktıları almanız gerekiyor.
Worker1
Sonrasında Master node arayüzüne geçip aşağıdaki komutu çalıştırıyoruz.
kubectl get nodes
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.3/manifests/calico.yaml
Calico yüklemesi sonrasında bir süre bekleyip aşağıdaki komut girelim bu komut calico pod durumlarını kontrol ediyor ve status durumları running modda olmalıdır.
kubectl get pods -n kube-system
kubectl get nodes
kubectl label node worker1.1w2.io node-role.kubernetes.io/worker=workerkubectl label node worker2.1w2.io node-role.kubernetes.io/worker=worker
kubectl label node worker1.1w2.io node-role.kubernetes.io/worker- (sondaki isim ve - işareti çok önemli )