kubespray
Kubespray kubernetes kurulum ve bakımlarını otomatikleştiren, ansible üzerine geliştirilmiş, resmi bir araçtır.
Sağladıkları:
- Otomasyon
- HA: https://github.com/kubernetes-sigs/kubespray/blob/master/docs/ha-mode.md
- node ekleme ve çıkarma, güncelleme
- Eklenti ekleme, çıkarma
- farklı kurulumları destekler
- masterlar ve etcdler birlikte
- etcd serverlar ayrı sunucularda ( >=3, tek haneli)
- master ve etcd sayıları ayarlanabilir.
Kurulum
Desktop Ortama Kurmak (Bonus)
Kendi ortamımızda test etmek istiyorsak vagrant dosyasındaki vagrant ve virtualbox araçlarıyla hızlıca deneyebiliriz.
- Ansible kontrol makinası WSL ya da bir linux makinası olmak zorundadır.
- Sunucular arasındaki erişimler için buraya uyulmak zorundadır.
Kontrol makinasında pip3’ün kurulu olması gerekir.
# redhat grubu
sudo dnf install python311
sudo alternatives --config python
sudo alternatives --config python3
# python virtual env
VENVDIR=kubespray-venv
KUBESPRAYDIR=${kubespray dizini}/
python3 -m venv $VENVDIR
source $VENVDIR/bin/activate
cd $KUBESPRAYDIR
# ``requirements.txt``ye göre gerekenleri kurun.
pip install -U -r requirements.txt
inventory/sample
hazır şablonunuinventory/mycluster
olarak kopyala
cp -rfp inventory/sample inventory/mycluster
- Kubernetes kuracağınız sunucuların listesini Ansible’a veriyoruz.
- Bu komut ip adreslerini ilk 2.si master ve etcd olacak şekilde nodelar olarak
inventory/mycluster/hosts.yaml
içerisine yazar.
declare -a IPS=(<server1_ip> <server2_ip> <server3_ip>)
CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
inventory/mycluster/group_vars
klasörü altındaki bu dosyaları gözden geçirin, değiştirmek istediklerinizi değiştirin.
cat inventory/mycluster/group_vars/all/all.yml
cat inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml
ek ayarlar
- hostnameleri değiştirmek istemiyorsak
# inventory/mycluster/group_vars/all/all.yml dosyasının içine aşağıdakini ekliyoruz.
override_system_hostname: false
- calico subnetlerini değiştirmek istiyorsak
# inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml
# bu değerleri uygun şekilde değiştiriyoruz.
76 kube_service_addresses: 10.233.0.0/18
81 kube_pods_subnet: 10.233.64.0/18
# bunları ayarlayabilirsiniz.
inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml
auto_renew_certificates: true
auto_renew_certificates_systemd_calendar: "Sat *-*-1,2,3,4,5,6,7 03:0:00"
- Ansible ile Kubespray’i çalıştırın ve Kubernetes kümenizi kurun. Burada sudo yetkisine sahip bir kullanıcı gerekmektedir. Eğer sunuculara parola ile erişiyorsanız
-kK
size erişim parolası ve sudo parolasını soracaktır.
# root kullanıcısı ile erişmek için
ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root cluster.yml
# sudo yetkisi olan bir kullanıcı ile erişmek için
ansible-playbook -i inventory/mycluster/hosts.yaml -b cluster.yml -u <kullanıcı> -kK
# ek değişkenler ve hardening eklenmiş kurulum
ansible-playbook -v cluster.yml \
-i inventory/mycluster/hosts.yaml \
-become -u <kullanıcı> -kK \
-e "@vars.yaml" \
-e "@hardening.yaml"
- Eksik bir şey yoksa yukarıdaki IPS tanımında verilen sunuculara kubernetes kümesi kurulacaktır.
Yeni nod ekleme
- worker node eklemek için. diğer tür nodlar için farklı süreçler vardır.
declare -a IPS=(<server1_ip> <server2_ip> <server3_ip> <yeni_nod_ip>)
CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
ansible-playbook -i inventory/mycluster/hosts.yaml -b scale.yml -u <kullanıcı> -kK --limit=<host_yml_içindeki_node_name>
autorenew seçilmemişse sertifika yenileme
# tüm master nodelarda aşağıdaki komut çalıştırılır
# tüm controller nodelarda bu çalıştırılır.
sudo /usr/local/bin/k8s-certs-renew.sh
# tüm workerlarda kubelet restart edilir
sudo systemctl restart kubelet
Dashboard ve yeni eklenti kurma
- Kaynaklar Node Ekleme, Değiştirme