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

# Kubernetes Kümesinde IP Değişikliği - Virtual IP Kullanımı

> Mevcut Kubernetes kümesini bozmadan virtual IP'ye yönlendirerek kesintisiz hizmet sağlayabilir, yüksek erişilebilirlik ile çalışmasını yapılandırabilir ve kubeadm init komutu ile endpoint adresini virtual IP olarak yapılandırabilir.

## Genel Bakış

Bu dökümanda, mevcut Kubernetes kümemizi bozmadan virtual IP'ye yönlendirerek, kesintisiz bir hizmet ile birlikte yüksek erişilebilirlik ile çalışmasını sağlayacağız.

**Mevcut Makineler:**

* Kubernetes Master1
* Kubernetes Master2
* Kubernetes Master3
* Kubernetes Worker1
* Kubernetes Worker2

## Mevcut Sistem ve Virtual IP Erişimi

Mevcut sistemde, **Master1** üzerinde **kubeadm init** komutuyla başlatılan bir Kubernetes kümesi oluşturuldu ve daha sonra diğer makineler (Master2, Master3, Worker1 ve Worker2) bu kümeye **worker** rolüyle dahil edildi.

Load Balancer üzerinde bir **Virtual IP** tanımlayarak, mevcut makineleri bu \*\*Virtual IP'\*\*ye **6443** portundan eriştirmemiz gerekiyor.

<Warning>
  Eğer load balancer kullanmıyorsanız ve ağ üzerinde sanal ip oluşturamıyorsanız bunun için kullanabileceğiniz **Keepalived** ve **HAProxy** araçları ile bu işlemi gerçekleştirmek için [tıklayınız.](/tr/setup/kubernetes/kubernetes-high-availability-yuksek-erisim-cluster.mdx)

  **Keepalived** sanal ip oluşturmak için, **HAProxy** ise yük dengeleme işlemi için kullanılmaktadır.
</Warning>

## IP Değiştirme

Kümede birden fazla master node olduğunda, bu master'ları tek bir master olarak bırakmak için kümeyi yeniden yapılandırmamız gerekmektedir.

Bu işlem genellikle diğer masterları kümeden tamamen çıkartarak başlar.

### Master Node'ları Kümeden Çıkarma

Aşağıdaki komut **master1 hariç** diğer masterlar (**master2 ve master3**) için çalıştırılır.

```bash theme={null}
sudo kubeadm reset
```

Master1 sunucusundan diğer masterlar (master2 ve master3) kümeden silinir.

```bash theme={null}
kubectl delete nodes master2
kubectl delete nodes master3
```

<Info>
  Mevcut sistemde master1 ve worker sunucularının kalması gerekmekte.
</Info>

### Master1 Sunucusunda Yapılacaklar

<Steps>
  <Step>
    **Servisleri Durdurma**

    Kubelet ve containerd (docker kullanılıyorsa ayrıca docker uygulaması) durdurulur.

    ```bash theme={null}
    sudo systemctl stop kubelet
    sudo systemctl stop containerd
    ```
  </Step>

  <Step>
    **Dosya Yedekleme ve Temizleme**

    Bazı dosyaların yedekleri alınır ve silinir.

    ```bash theme={null}
    sudo mv -f /etc/kubernetes /etc/kubernetes.backup
    sudo mv -f /var/lib/kubelet /var/lib/kubelet.backup
    sudo mkdir -p /etc/kubernetes/pki
    sudo cp -r /etc/kubernetes_backup/pki /etc/kubernetes
    sudo rm -rf /etc/kubernetes/pki/{apiserver.*,etcd/peer.*}
    sudo rm -f ~/.kube/config
    ```
  </Step>

  <Step>
    **Containerd Başlatma**

    Containerd (docker kullanılıyorsa ayrıca docker uygulaması) başlatılır.

    ```bash theme={null}
    sudo systemctl start containerd
    ```
  </Step>

  <Step>
    **Kubeadm Init ile Virtual IP Yapılandırması**

    Kubeadm init komutu endpoint adresi düzenlenerek tekrardan çalıştırılır ve **Virtual IP** olarak kullanılır.

    ```bash theme={null}
    sudo kubeadm init --pod-network-cidr "10.244.0.0/16" --control-plane-endpoint <VIRTUAL_IP> --upload-certs --ignore-preflight-errors=DirAvailable--var-lib-etcd
    ```

    <Warning>
      Kubeadm **join** komutları not edilir.
    </Warning>
  </Step>
</Steps>

### Worker1 ve Worker2 İçin Yapılacaklar

<Steps>
  <Step>
    **Servisleri Durdurma**

    Kubelet ve containerd (docker kullanılıyorsa ayrıca docker uygulaması) durdurulur.

    ```bash theme={null}
    sudo systemctl stop kubelet
    sudo systemctl stop containerd
    ```
  </Step>

  <Step>
    **Dosya Yedekleme**

    Bazı dosyaların yedekleri alınır.

    ```bash theme={null}
    sudo mv -f /etc/kubernetes /etc/kubernetes.backup
    sudo mv -f /var/lib/kubelet /var/lib/kubelet.backup
    ```
  </Step>

  <Step>
    **Servisleri Başlatma**

    Containerd (docker kullanılıyorsa ayrıca docker uygulaması) ve kubelet başlatılır.

    ```bash theme={null}
    sudo systemctl start kubelet
    sudo systemctl start containerd
    ```
  </Step>

  <Step>
    **Worker Join**

    Kubeadm **worker join** komutu **worker1** ve **worker2** makinelerinde çalıştırılır.
  </Step>
</Steps>

### Master2 ve Master3 İçin Yapılacaklar

Bu adımda sadece **master join** komutunu master2 ve master3'de çalıştırmanız yeterli olacaktır.

### Küme Durumu Kontrolü

Aşağıdaki komutlar ile yeni küme bilgilerinizi görebilirsiniz.

```bash theme={null}
kubectl cluster-info
kubectl get node -o wide
```
