Sabtu, 14 Desember 2024

Setup Kubernetes Cluster RKE2 dan Nginx Load Balancer di Rocky Linux 9

https://docs.rke2.io/install/requirements

https://docs.rke2.io/install/requirements

Prerequisites

Kita menggunakan Rocky Linux 9.5, dengan  2 Server (Control plane nodes) dan 1 Agent(Worker) nodes. Secara keseluruhan VM yang digunakan seperti berikut :

  1. Control-Plane-1 => IP: 192.168.10.121 , OS: Rocky linux 9.5 , Hostname: rke-master1
  2. Control-Plane-2 => IP: 192.168.10.122 , OS: Rocky linux 9.5 , Hostname: rke-master2
  3. Worker-1 => IP: 192.168.10.123 , OS: Rocky linux 9.5 , Hostname: rke-node
  4. L4 Load Balancer => ip: 192.168.10.120


Setup VM NGINX (Load Balancer)

Sebelum kita  setup rke2 pada VM master dan node (worker) kita terlebih dahulu setup nginx sebagai load balancer.
  1. Disable selinux, dan lakukan reboot vm untuk memastikan selinux sudah disable.

    sudo vi /etc/selinux/config

    Ubah SELINUX=enforcing menjadi SELINUX=disable

    SELINUX=disable

    Simpan dan reboot VM

    sudo reboot


  2. Install nginx dan nginx-mod-stream kita perlu install sebagai stream load balancer kubernetes cluster nantinya.

    sudo yum instal nginxl nginx-mod-stream -y


  3. Start dan Enable service Nginx

    sudo systemctl enable nginx.service
    sudo systemctl start nginx.service


  4. Reconfig nginx

    sudo vi /etc/nginx/nginx.conf

    Pada baris bawah sendiri tambahkan berikut :

    stream {

            include /etc/nginx/stream-conf.d/*.conf;

    }

    Lakukan pengecekan config pastikan tidak ada error, dengan command berikut : 

    [root@rke-ha ~]# nginx -t

    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

    nginx: configuration file /etc/nginx/nginx.conf test is successful

    [root@rke-ha ~]#


  5. Create directory stream untuk nanti menaruh config stream kubernetes cluster.

    sudo mkdir /etc/nginx/stream-conf.d/

  6. Create config nginx stream kubernetes cluster.

    sudo vi /etc/nginx/stream-conf.d/rke2-master.conf

    Isikan config berikut : 

    upstream rke2_master_kubernetes_api {

     server 192.168.10.121:6443;  # merupakan ip master-1

     server 192.168.10.122:6443;  # merupakan ip master-2

    }

     

    server {

     listen 6443;

     proxy_pass rke2_master_kubernetes_api;

     proxy_timeout 10s;

    # proxy_connection_timeout 5s;

    }

     

    upstream rke2_master_supervisor_api {

     server 192.168.10.121:9345;  # merupakan ip master-1

     server 192.168.10.122:9345;  # merupakan ip master-2

    }

     

    server {

     listen 9345;

     proxy_pass rke2_master_supervisor_api;

     proxy_timeout 10s;

    # proxy_connection_timeout 5s;

    }


  7. Cek dan load config

    [root@rke-ha ~]# nginx -t

    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

    nginx: configuration file /etc/nginx/nginx.conf test is successful

    [root@rke-ha ~]# nginx -s reload


  8. -------Finish Setup VM Nginx-------

Setup VM Master-1

  1. Kita buka port yang nantinya dibutuhkan oleh RKE2.

    sudo firewall-cmd --add-port=6443/tcp --permanent

    sudo firewall-cmd --add-port=9345/tcp --permanent

    sudo firewall-cmd --add-port=10250/tcp --permanent

    sudo firewall-cmd --add-port=2379/tcp --permanent

    sudo firewall-cmd --add-port=2380/tcp --permanent

    sudo firewall-cmd --add-port=2381/tcp --permanent

    sudo firewall-cmd --add-port=30000-32767/tcp --permanent

    sudo firewall-cmd --add-port=8472/udp --permanent

    sudo firewall-cmd --add-port=9099/tcp --permanent

    sudo firewall-cmd --add-port=51820/udp --permanent

    sudo firewall-cmd --add-port=51821/tcp --permanent

    sudo firewall-cmd --reload


  2. Kita setup NetworkManager dikarenakan kita mengaktifkan firewalld, dimana firewalld conflic dengan cni canal (default dari rke2) jadi diperlukan penambahan config. 
    Important: If your node has NetworkManager installed and enabled, ensure that it is configured to ignore CNI-managed interfaces.

    sudo vi /etc/NetworkManager/conf.d/rke2-canal.conf


    Isikan value berikut :

    [keyfile]

    unmanaged-devices=interface-name:cali*;interface-name:flannel*


    Simpan config dan restart NetworkManager

    sudo systemctl restart NetworkManager


  3. Download script install dan ubah permission agar bisa di eksekusi.

    sudo curl -sfL https://get.rke2.io --output install.sh

    sudo chmod +x install


  4. Install rke2 sebagai master. Service rke2 jangan distart dulu karena akan ada tambahan config setelah dilakukan install rke2.

    INSTALL_RKE2_CHANNEL=v1.30.6+rke2r1 INSTALL_RKE2_TYPE=server ./install.sh

    *Keterangan :
    INSTALL_RKE2_CHANNEL=v1.30.6+rke2r1 : kita mengistall rke2 menggunakan kubernetes versi 
    v1.30.6+rke2r1.
    Jika kita tidak menambahkan perintah INSTALL_RKE2_CHANNEL maka akan diinstall dengan versi latest.
    INSTALL_RKE2_TYPE=server : kita menginstall rke2 sebagai master/server.

  5. Siapkan config untuk rke2-server.

    sudo vi /etc/rancher/rke2/config.yaml

    Tambahkan value berikut :

    write-kubeconfig-mode: "0644"

    tls-san:

     - k8s.test.com

     - 192.168.10.120

    *Keterangan :
    k8s.test.com : digunakan sebagai domain kube config jika kita ingin akses dari luar cluster kubernetes.
    192.168.10.120 merupakan ip server nginx sebagai load balancer.
  6. Start service rke2-server

    sudo systemctl enable rke2-server

    sudo systemctl start rke2-server

  7. Pengecekan kubernetes cluster memastikan rke-master1 sudah join sebagai master kubernetes cluster.

    [root@rke-master1 ~]# /var/lib/rancher/rke2/bin/kubectl get node --kubeconfig=/etc/rancher/rke2/rke2.yaml

    NAME          STATUS   ROLES                       AGE    VERSION

    rke-master1   Ready    control-plane,etcd,master   5d6h   v1.30.7+rke2r1


  8. -------Finish Setup VM Mater1-------

Setup VM Master-2

  1. Kita buka port yang nantinya dibutuhkan oleh RKE2.

    sudo firewall-cmd --add-port=6443/tcp --permanent

    sudo firewall-cmd --add-port=9345/tcp --permanent

    sudo firewall-cmd --add-port=10250/tcp --permanent

    sudo firewall-cmd --add-port=2379/tcp --permanent

    sudo firewall-cmd --add-port=2380/tcp --permanent

    sudo firewall-cmd --add-port=2381/tcp --permanent

    sudo firewall-cmd --add-port=30000-32767/tcp --permanent

    sudo firewall-cmd --add-port=8472/udp --permanent

    sudo firewall-cmd --add-port=9099/tcp --permanent

    sudo firewall-cmd --add-port=51820/udp --permanent

    sudo firewall-cmd --add-port=51821/tcp --permanent

    sudo firewall-cmd --reload


  2. Kita setup NetworkManager dikarenakan kita mengaktifkan firewalld, dimana firewalld conflic dengan cni canal (default dari rke2) jadi diperlukan penambahan config. 
    ImportantIf your node has NetworkManager installed and enabled, ensure that it is configured to ignore CNI-managed interfaces.

    sudo vi /etc/NetworkManager/conf.d/rke2-canal.conf


    Isikan value berikut :

    [keyfile]

    unmanaged-devices=interface-name:cali*;interface-name:flannel*


    Simpan config dan restart NetworkManager

    sudo systemctl restart NetworkManager


  3. Download script install dan ubah permission agar bisa di eksekusi.

    sudo curl -sfL https://get.rke2.io --output install.sh

    sudo chmod +x install


  4. Install rke2 sebagai master. Service rke2 jangan distart dulu karena akan ada tambahan config setelah dilakukan install rke2.

    INSTALL_RKE2_CHANNEL=v1.30.6+rke2r1 INSTALL_RKE2_TYPE=server ./install.sh


  5. Siapkan config untuk rke2-server.

    sudo vi /etc/rancher/rke2/config.yaml

    Tambahkan value berikut :

    server: https://192.168.10.120:9345

    token: K1022fae0095432bfdab8d0b4f0a52f4d6d99b8d1dc03b21e2c8c6cf26e9d93a7bb::server:57f65ad8b45b81f7389b8e55cd300d26

    write-kubeconfig-mode: "0644"

    tls-san:

     - k8s.test.com

     - 192.168.10.120

    *Keterangan :
    token : diambil dari master-1 pada file /var/lib/rancher/rke2/server/agent-token

  6. Start service rke2-server

    sudo systemctl enable rke2-server

    sudo systemctl start rke2-server


  7. Pengecekan kubernetes cluster memastikan rke-master1 sudah join sebagai master kubernetes cluster.

    [root@rke-master2 ~]# /var/lib/rancher/rke2/bin/kubectl get node --kubeconfig=/etc/rancher/rke2/rke2.yaml

    NAME          STATUS   ROLES                       AGE    VERSION

    rke-master1   Ready    control-plane,etcd,master   5d6h   v1.30.7+rke2r1

    rke-master2   Ready    control-plane,etcd,master   5d6h   v1.30.7+rke2r1


  8. -------Finish Setup VM Mater2-------

Setup VM Node

  1. Install rke2 sebagai agent dikarenakan pada vm Node akan kita gunakan sebagai node worker.

    sudo INSTALL_RKE2_CHANNEL=v1.30.6+rke2r1 INSTALL_RKE2_TYPE=agent ./install.sh


  2. Create config /etc/rancher/rke2/config.yaml, dikarenakan digunakan sebagai worker config hanya berisi value server dan token saja.

    sudo vi /etc/rancher/rke2/config.yaml

    Tambahkan value berikut :

    server: https://192.168.10.120:9345

    token: K1022fae0095432bfdab8d0b4f0a52f4d6d99b8d1dc03b21e2c8c6cf26e9d93a7bb::server:57f65ad8b45b81f7389b8e55cd300d26

    * Keterangan : Token yang digunakan sama dengan yang digunakan master-2.

  3. Running service rke2-agent agar joint sebagai worker pada kubernetes cluster.

    sudo systemctl enable rke2-agent

    sudo systemctl start rke2-agent


  4. Pengecekan node kubernetes cluster, pastikan node worker sudah joint. Bisa dilakukan pengecekan dari master-1 maupun master-2.

    [root@rke-master2 ~]# /var/lib/rancher/rke2/bin/kubectl get node --kubeconfig=/etc/rancher/rke2/rke2.yaml

    NAME          STATUS   ROLES                       AGE    VERSION

    rke-master1   Ready    control-plane,etcd,master   5d6h   v1.30.7+rke2r1

    rke-master2   Ready    control-plane,etcd,master   5d6h   v1.30.7+rke2r1

    rke-node        Ready    <none>                      5d6h   v1.30.7+rke2r1


  5. -------Finish Setup VM Node-------

---- Finish Setup Kubernetes Cluster RKE2 dan Nginx Load Balancer di Rocky Linux 9 ----


Catatan

Agar mempermudah melakukan pengecekan cluster kubernetes menggunakan kubectl, kita akan buat shortcut kubectl dan menambahkan kubeconfig.
Berikut step-stepnya bisa dilakukan di master-1 dan master-2 :
  1. Create Shortcut kubectl

    [root@rke-master2 ~]# sudo ln -s /var/lib/rancher/rke2/bin/* /usr/local/bin/


  2. Create config kubernetes

    [root@rke-master2 ~]# mkdir -p $HOME/.kube

    [root@rke-master2 ~]# sudo cp -i /etc/rancher/rke2/rke2.yaml $HOME/.kube/config

    [root@rke-master2 ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
    [root@rke-master2 ~]# 


  3. Pengecekan kubectl

    [root@rke-master2 ~]# kubectl get nodes          

    NAME          STATUS   ROLES                       AGE    VERSION

    rke-master1   Ready    control-plane,etcd,master   5d2h   v1.30.7+rke2r1

    rke-master2   Ready    control-plane,etcd,master   5d2h   v1.30.7+rke2r1

    rke-node      Ready      <none>                               5d1h   v1.30.7+rke2r1





Tidak ada komentar:

Posting Komentar