Ubuntu 20.04 Kubernetes Kurulumu

Kubernetes kullanmak için kendi sunucularınızı (dedicated, vps vs.) kullanabileceğiniz gibi Amazon AWS, Azure veya Google Cloud ortamında bulunan Kubernetes servislerini de kullanabilirsiniz.

Bu makalede kendi sunucumuzda Kubernetes kurulumu yapılacaktır. İhtiyacımız olan 1 master ve 2 node olmak üzere toplamda 3 adet Ubuntu 20.04 sunucu.

Adım 1: Güncelleme

Sunucu paketlerini güncellemek ile işe başlıyoruz.

sudo apt-get update
sudo apt-get upgrade

Adım 2: Swap İptali

Kubernetes yapısının düzgün ve sorunsuz çalışabilmesi için swap diskinin iptal edilmesi gerekli.

sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo swapoff -a

Adım 3: Docker Kurulumu

Docker yüklemesini yaparken, /etc/docker/daemon.json dosyasında systemd düzenlemesi yapılması gerekli.

sudo apt-get install docker.io
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo nano /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}

sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker

Adım 4: Kubernetes Yüklenmesi

Aşağıdaki komutları kullanarak Kubernetes uygulamaları yüklenir. Kubernetes versiyon geçişlerinde sorun yaşamamak için güncellemeleri kapatıyoruz.

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
sudo apt-get install kubeadm kubelet kubectl
sudo apt-mark hold kubeadm kubelet kubectl

Systemd düzenlemesi için 10-kubeadm.conf dosyasında Environment satırlarının sonuna aşağıdaki satırın eklenmesi gerekli.

sudo nano /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
Environment="cgroup-driver=systemd/cgroup-driver=cgroupfs"

Adım 5: Master Node

Bu adım sadece master node için gereklidir, diğer nodelar için bu adımı atlayınız. Kubeadmin ile gerekli olan düzenlemeler yapılacaktır.

pod-network parametresi ile Kubernetes podları arasındaki network bilgisi tanımlanır. IP bilgisini kendi yapınıza göre değiştirmelisiniz.

apiserver-advertise-address parametresi ile API server ip adresi belirtilir. Birden fazla ip adresi mevcut ise bu ip adreslerini de belirtilmesi gereklidir. Bu ip adresilerine göre sertifikalar oluşturulacaktır.

sudo kubeadm init --control-plane-endpoint=api.domain.com --pod-network-cidr=10.0.1.0/16

Kurulum işlemi biraz zaman alacaktır. İşlem sonunda belirtilen komut ile worker nodeların bağlantısı için token bilgisi verilecektir. Bu bilginin not edilmesi gereklidir.

kubeadm join 10.0.1.4:6443 --token TOKENBILGISI --discovery-token-ca-cert-hash sha256:TOKENBILGISI 

config düzenlemesini yapılır.

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Kubernetes ağ yönetimi için weave kurulumu yaparak master node kurulumunu tamamlıyoruz.

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

Çalışan nodeları görmek için  kubectl get nodes komutunu kullanabilirsiniz.

 kubectl get nodes

kubectl get pods --all-namespaces komutunu kullanarak Kubernetes kurulumumuz hakkında bilgi alabiliriz. Tüm adımları doğru yaptıysanız tüm durumlarda Running yazısını görmelisiniz.

kubectl get pods --all-namespaces

İşlemler sırasında bir hata yaparsanız reset komutu ile işlemleri geri alabilirsiniz.

sudo kubeadm reset

Adım 6: Node Bağlantısı

Master node harici diğer nodeların kurulumu için ilk 4 adım aynen yapılmalıdır.

Bağlantı için daha önce bize bildirilen komutu kullanıyoruz.

kubeadm join 10.0.1.4:6443 --token TOKENBILGISI --discovery-token-ca-cert-hash sha256:TOKENBILGISI 

Ubuntu PostgreSql Kurulumu

PostgreSql veritabanını Ubuntu işletim sisteminde kurulumu çok kolaydır. Aşağıdaki komutları çalıştırınca kurulum yapılmış olacaktır.

sudo apt install postgresql postgresql-contrib

Postgres Şifre Tanımlama

PostgreSql kurulumu tamamlanmıştır. Varsayılan olarak kurulan postgres kullanıcısı için şifre tanımlı değildir. Şifre tanımlama şu şekilde yapılabilir:

sudo -u postgres psql

postgres=# ALTER USER postgres PASSWORD 'myPassword';
postgres=# \q

Postgres Uzaktan Erişim

PostgreSql veritabanı bağlantısını uzaktan yapmak için aşağıdaki adımlar izlenmelidir. İlk olarak postgresql.conf dosyasını text editör ile açıyoruz.

sudo nano /etc/postgresql/10/main/postgresql.conf

Bu dosya içindeki

#listen_addresses = 'localhost'

bilgisi aşağıdaki gibi değiştirilmelidir.

listen_addresses = '*'

Şimdi de pg_hba.conf dosyasında değişiklik yapacağız.

sudo nano /etc/postgresql/10/main/pg_hba.conf

Bu dosya içindeki

host    all             all             127.0.0.1/32            md5

satırını aşağıdaki gibi değiştirmek gerekli.

host    all             all             0.0.0.0/0            md5

Docker ile PostgreSQL ve pgAdmin Kurulumu

Docker üzerinde PostgreSQL kurulumu için aşağıdaki komutları çalıştırmamız gereklidir.

sudo docker pull postgres
sudo docker run -p 5432:5432 --name postgres -h postgres -e POSTGRES_PASSWORD=sifre0134 -d postgres

Artık 5432 nolu port üzerinden PostgreSQL sunucusuna bağlantı yapabilirsiniz.

pgAdmin kurulumu şu şekilde olacaktır.

sudo docker pull dpage/pgadmin4
sudo docker run -p 5050:80 --name pgadmin -h pgadmin -e 'PGADMIN_DEFAULT_PASSWORD=sifre0134' -e 'PGADMIN_DEFAULT_EMAIL=kullaniciadi@alanadi.com'  -d dpage/pgadmin4

Bu işlemlerden sonra hem PostgreSQL hem de pg Admin kurulumu tamamlanmış olacaktır. http://localhost:5050/ adresi üzerinden pgAdmin uygulamasına erişebilirsiniz. Kullanıcı adı ve şifre bilgilerini kullanarak pgAdmin’de oturum açabilirsiniz.

Yeni postgres bağlantısı için docker postgres containerın ip adresine ihtiyacımız vardır. Bunun için aşağıdaki komut ile ip adresine ulaşabilirsiniz.

docker inspect postgres