> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Yüksek Erişilebilirlik Kümesi

> Kubernetes yüksek erişilebilirlik cluster kurulumunu gerçekleştirebilir. HAProxy ve Keepalived kullanarak çoklu master node yapılandırması yapabilir ve virtual IP adresi ile sürekli erişilebilirlik sağlayabilir.

## 1) HAProxy Kurulumu

HAProxy, yük dengeleme ve yüksek erişilebilirlik sağlamak için kullanılan açık kaynaklı proxy ve yük dengeleme çözümüdür. Aşağıda Ubuntu işletim sistemleri üzerine kurulumu anlatılmaktadır.

```bash theme={null}
sudo apt update
```

HAProxy kurulumu gerçekleştirilir.

```bash theme={null}
sudo apt install haproxy
```

Konfigürasyon dosyası düzenlenir.

```bash theme={null}
sudo vi /etc/haproxy/haproxy.cfg
```

Aşağıdaki komutlar dosyanın en altına ekleyebilirsiniz. Hostname ve IP alanlarını kendinize göre düzenleyiniz.

```bash theme={null}
frontend kubernetes-frontend
  bind *:6443
  mode tcp
  option tcplog
  default_backend kubernetes-backend

backend kubernetes-backend
  option httpchk GET /healthz
  http-check expect status 200
  mode tcp
  option ssl-hello-chk
  balance roundrobin
  server <master1hostname> <MASTER_1_IP>:6443 check fall 3 rise 2
  server <master2hostname> <MASTER_2_IP>:6443 check fall 3 rise 2
  server <master3hostname> <MASTER_3_IP>:6443 check fall 3 rise 2
```

```bash theme={null}
systemctl enable haproxy && systemctl restart haproxy
systemctl status haproxy
```

## 2) Keepalived Kurulumu

Keepalived, çoklu kontrol düğümü (master ve yedek master'lar) arasında virtual (sanal) bir IP adresi sağlar ve diğer hizmetlerin sürekli çalışmasını sağlamak için kullanılır.

```bash theme={null}
sudo apt install keepalived
```

```bash theme={null}
sudo vim /etc/keepalived/check_apiserver.sh
```

Aşağıdaki script, Kubernetes API sunucusuna ulaşılabilirlik kontrolü yapar. \<VIRTUAL\_IP> kısmını bir sonraki adımda ekleyeceğiniz virtual ip ile değiştiriniz.

```bash theme={null}
#!/bin/sh

errorExit() {
  echo "*** $@" 1>&2
  exit 1
}

curl --silent --max-time 2 --insecure https://localhost:6443/ -o /dev/null || errorExit "Error GET https://localhost:6443/"
if ip addr | grep -q <VIRTUAL_IP>; then
  curl --silent --max-time 2 --insecure https://<VIRTUAL_IP>:6443/ -o /dev/null || errorExit "Error GET https://<VIRTUAL_IP>:6443/"
fi

```

```bash theme={null}
chmod +x /etc/keepalived/check_apiserver.sh
```

```bash theme={null}
sudo vim /etc/keepalived/keepalived.conf
```

Eğer keepalived.conf dosyası boş değilse içeriğini temizleyebiliriniz ve aşağıdaki komut satırlarını ekleyiniz.

**Önemli:** Interface karşısına uygun ağ birimini ekleyiniz. \<VIRTUAL\_IP> kısmını eklemek istediğiniz IP adresi ile değiştiriniz.

```bash theme={null}
vrrp_script check_apiserver {
  script "/etc/keepalived/check_apiserver.sh"
  interval 3
  timeout 10
  fall 5
  rise 2
  weight -2
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth1
    virtual_router_id 1
    priority 100
    advert_int 5
    authentication {
        auth_type PASS
        auth_pass mysecret
    }
    virtual_ipaddress {   
     <VIRTUAL_IP>    
 }
    track_script {
        check_apiserver
    }
}
```

```bash theme={null}
systemctl enable --now keepalived
```

## Kubernetes Kümesini Başlatma

Kubernetes kurulumunu [Ubuntu İşletim Sisteminde Kubernetes Kurulumu](/tr/setup/kubernetes/ubuntu-kubernetes) dokümanından yapabilirsiniz.

<Warning>
  **Önemli:** Init işlemi yapılırken aşağıdaki gibi endpoint'e kendi virtual IP adresinizi girmelisiniz.
</Warning>

```bash theme={null}
kubeadm init --control-plane-endpoint="<VIRTUAL_IP>:6443" --upload-certs --pod-network-cidr=10.244.0.0/16
```
