---
# System prepended metadata

title: Kubenetes Kurulumu

---

# 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`
