# Kubenetes Kurulumu - Linux'ta modül eklemek veya kaldırmak için modprobe komutunu kullanılır. overlay ve br_netfilter modülleri yüklenmiştir. ``` modeprobe overlay modprobe br_netfilter ``` - tee (stantart veri okuyucu ve dosyaya veri yazıcı) komutu ile kubernetes.conf dosyasının altına network bağlantıları yapılabilmesi için birgde kayıtları yapılmıştır. ``` tee /etc/sysctl.d/kubernetes.conf<<EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF ``` - master ve workerlarda işlemlerin hızlı bir şekilde çalışabilmesi için swapin kapatılması gerekir. aksi taktirde işlemlerin süresi uzar. ``` sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab ``` **sed** : (Akış Düzenleyici), bir dizi komuta veya bir komut dosyasına dayalı olarak bir dosyanın farklı satırlarının içeriğini değiştirmemize olanak tanır. - swap ortamının kapatılması için sistemi yeniden başlaması gerekir fakar bunu engellemek için aşağıdaki komut kullanılır. ``` swapoff -a ``` - [ ] NOT : yukarıda bahsedilen işlemler bütün nodelarda yapılacaktır. - kubespray kurulum aşamasında pythona ait birden fazla paket kullanması gerekmektedir. 1. - `git clone https://github.com/kubernetes-sigs/kubespray.git ` github reposundan kubespray dosyaları çekilir. 2. - `cd kubespray` 3. `sudo apt install python3-pip` 4. - `cp -rfp inventory/sample inventory/mycluster` inventory/sample içinde bulunan verilerin hepsini inventor/mycluster'ın içine taşı ver sample klasörünü siler. 5. - `chown -R user:user /home/userpath/kubespray` komut dosyanın ownerını değiştirir bu sayede soot olmadan işlem yapabilmemizi sağlar. 6. - `declare -a IPS=(10.1.1.1 10.1.1.2)` kubernetes clustırında kullanılacak bütün server IPleri buraya yazılır ve bir sonraki adımda declare edilen IPler hosts.yaml filenin içine yazılır. 7. - `CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}` declare edilen IPleri host.yaml file içine yazaqr. bu sayede ansible hangi serverlar üzerinde işlem yapacağı söylenilir. Hosts.yaml da bazı değişiklikle yapılması gerekmektedir. `vi inventory/mycluster/hosts.yaml` - `kube_node` altına yazılan her node üzerinde release podları oluştrulur ve yük alırlar. master normal bir şekilde olursa yük almasını istemeyiz. o yüzden ayrı tutulur. - `kube_control_plane ve etcd` altına yazılan her node master olarak görev yapar. üzerine kubernetes uygulamalrı kurulur. kubectl kurulumu başlatılmadan önce aşağıdaki dosya yolarında değişiklikler yapılması gerekmektedir. - `inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml` 1. - `kube_version: v1.23.4` # kubernetes verisonu githubdan kontrol edilmeli 2. - `kube_network_plugin: calico` # kubenetes içerisinde bulunan ağ sisteminin algoritması olarak tanımlanabilir birden bazla network algoritası bulunmaktadır. bunların her birinin farklı özelliği bulunmaktadır. 3. - `cluster_name: customer.local` # kubernetes kümelemesine verilen ad burada tanımlanır. - `inventory/mycluster/group_vars/k8s_cluster/addons.yml` addons içerisinde kubernetes içerisinde kullanılması birden fazla plugin bulunmaktadır. bulnarın aktif edilmesi için addons.yaml dosyası içerisinde `true` konumuna getirilimesi gerekir. 1. - `helm_enabled: true`# helm kubernetes içerisinde kullanılması için yazılmış birden fazla uygulama havuzu olarak tanımlanabilir. 3. - `metrics_server_enabled: true`# metrik server logların takip edilmesi için gerken bilgiyi sağlar. ? 4. - `dashboard_enabled: true` # kubernetes servise olarak kontrol edilmesini sağlar -. bu işlemler tamamlandıktan sonra kubernetes kurulumu başlatılmalıdır. - `ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root cluster.yml -K`