Ubuntu İşletim Sisteminde Kubernetes Kurulumu
Bu doküman, Ubuntu işletim sistemine sahip bir sunucuya Kubernetes versiyon 1.29 kurulumunu anlatmaktadır. Ubuntu 2022.04 LTS İşletim sisteminin olması tavsiye edilir.
Kuruluma Başlamadan Önce Yapılması Gereken Kontroller
Çok Önemli
Kurulumlara başlamadan önce mutlaka sunucuların aynı ağda ve aynı Virtual Machine üzerinde olduğunu sistem yöneticilerinden teyit edin.
Çok Önemli
Kurulumlara başlamadan önce mutlaka sunucunun hostname'in localhost.localdomain olmadığından ve her birinin eşsiz olduğundan (hostname komutu ile) emin olun. Eğer bu şekilde ise mutlaka işlemlere başlamadan önce değiştirin.
#(Gerekirse) Hostname değiştirme
hostnamectl set-hostname your-new-hostname
/etc/hosts dosyasında 127.0.1.1 şeklinde bir hostname tanımlı olmamalıdır.
/etc/resolv.conf dosyasında "nameserver 127.0.1.1" şeklinde bir girdi olmamalıdır.
Çok Önemli
Eğer internete erişim için Proxy gerekiyorsa aşağıdaki kodlar çalıştırılmalıdır.
#Linux Shell üzerinde aşağıdakileri çalıştırın:
export http_proxy=http://proxyIp:port/
export https_proxy=http://proxyIp:port/
export no_proxy=localhost,127.0.0.1,SERVERIP,*.hostname
#Aşağıdaki dosyalara altındaki kodları ekleyiniz:
sudo vi /etc/apt/apt.conf
Acquire::http::Proxy "http://username:password@proxyIp:port";
Acquire::https::Proxy "https://username:password@proxyIp:port";
sudo vi /etc/systemd/system/docker.service.d/proxy.conf
[Service]
Environment="HTTP_PROXY=http://proxyIp:port"
Environment="HTTPS_PROXY=https://proxyIp:port"
Environment="NO_PROXY="localhost,127.0.0.1,::1,SERVERIP,*.hostname"
Kurulum için Önemli
Kurulumun sağlıklı olması için Apinizer Kubernetes sunucularının aşağıdaki adreslere erişmesi gerekmektedir.
Docker Imajlarına erişim için:
Kubernetes:
https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
https://packages.cloud.google.com/yum/doc/yum-key.gpg
https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
Kubernetes Dashboard:
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recommended.yaml
Aşağıdaki adresler için de firewall üzerinde SSL Inspection kapatılmalıdır.
k8s.gcr.io
registry-1.docker.io
hub.docker.com
Eğer sunucular arasında tüm trafiğe izin verilmeyecekse aşağıdaki portlar için izinler tek tek tanımlanmalıdır:
6443/tcp # Kubernetes API server
2379-2380/tcp # etcd server client API
10250/tcp # Kubelet API
10251/tcp # kube-scheduler
10252/tcp # kube-controller-manager
8285/udp # Flannel
8472/udp # Flannel
30000-32767 #Applications on Kubernetes
Önemli
Ubuntu paketleri güncellerken Türkiye lokasyonundaki sunucudan çekmeye çalışır. Ancak zaman zaman tr.archive.ubuntu.com adresinde sorun olabilmektedir. Bu durumda aşağıdaki değişikliği yapmak gerekir.
sudo vi /etc/apt/sources.list
#İçinde tr. olan adreslerin hepsini "Replace All" ile değiştirin.
#Örnek:
#1) İşletim Sistemi Konfigürasyonları (Tüm Sunucularda Yapılacaktır)
POWERSHELL
|
#2) Kubernetes Kurulumu
#2.1) Konteyner Kurulumu (Tüm Kubernetes Sunucularında Yapılacaktır)
POWERSHELL
YML
POWERSHELL
|
#2.2) Kubernetes Kurulumu (Master ve Worker sunucularda)
Kubernetes anahtarlarının ve depo adreslerinin sisteme yüklenmesi:
POWERSHELL
|
#2.2.1) Bash Auto-Completion (İsteğe Bağlı, Herhangi Bir Kubernetes Master Sunucusunda)
Bu işlem ile kubernetes komutlarının yazımında hız kazanılabilir:
POWERSHELL
|
#2.2.2) Kubernetes Master Sunucu Oluşturma (Kubernetes Master Sunucularında)
Multi-Master Kubernetes yapmak için aşağıdaki komut çalıştırılır:
POWERSHELL
Önemli Eğer kubernetes podlarının alacağı ip bloğu (podCIDR değeri) olarak 10.244.0.0/16 kullanmayacaksanız yukarıdaki komutu buna uygun olarak düzenlemeniz gerekmektedir. Multi-Master yapısını kullanmak için diğer Master olacak node'lar aşağıdaki kod ile bağlanmalıdır
BASH
Çok Önemli # Eğer bağlantı komutu yeniden oluşturulmak istenirse aşağıdaki kodlardan ikincisinin çıktısı ilkine eklenmelidir:
# Sonuç olarak aşağıdaki gibi bir görünümde olmalıdır:
#Eğer kod manuel olarak oluşturulmak istenirse, aşağıdakiler kullanılır: XXX için → YYY için → ZZZ için → |
#2.2.3) Kubernetes Master Sunucusunda kubectl Komutunun Kullanıcı Konfigürasyonunu Ayarlama (Kubernetes Master Sunucularında)
kubectl komutlarını çalıştıracak kullanıcı için tanımlar yapılır:
POWERSHELL
|
#2.2.4) Kubernetes Ağ Eklentisini Kurun (Kubernetes Master Sunucularında)
Bu kılavuzda Flannel ağ eklentisini kullanacağız. Desteklenen diğer ağ eklentilerini seçebilirsiniz. Flannel, Kubernetes için tasarlanmış bir katman 3 ağ yapısını yapılandırmanın basit ve kolay bir yoludur.
POWERSHELL
Önemli Eğer Master'ı initialize ederken podCIDR olarak 10.244.0.0/16 değerini kullanmadıysanız yukarıdaki yaml dosyasını indirip network ayarlarını burada da düzenlemelisiniz. |
#2.2.5) Master Sunucu Aynı Zamanda Worker Olarak da Kullanılmak İstenirse (Opsiyonel)
Canlı ortamlar için tavsiye edilen bir yöntem değildir. Master'a Worker görevini eklemek için:
POWERSHELL
Master'dan Worker görevini kaldırmak için:
POWERSHELL
|
#2.2.6) Kubernetes Worker Sunucularını Master'a Kaydetmek (Kubernetes Worker Sunucularında)
Worker sunucusunu Master'a bağlamak için bir token bilgisine ihtiyaç vardır. Bu kurulum aşamasında master node'da yazılı olarak görülecektir. Ama atlanırsa ya da tekrar görüntülemek isterseniz aşağıdaki komut kullanılabilir.
Master Node üzerinde
POWERSHELL
Worker olacak Node(lar) üzerinde
BASH
|
#2.2.7) Kurulum Kontrol (Herhangi Bir Kubernetes Master Sunucusunda)
Master'dan aşağıdaki kod çalıştırıldığında Master'a ek olarak oluşturulan Node da görünüyorsa kurulum başarıyla tamamlanmış demektir.
İki dakika sonunda NotReady durumundan Ready durumuna geçmezse "kubectl describe node <NODE_NAME>" komutu ile sorun incelenmelidir.
BASH
|
#2.3) DNS Test (İsteğe Bağlı, Herhangi Bir Kubernetes Master Sunucusunda)
POWERSHELL
|