Kubernetes — 2
K8s kurulumu, Pod, Deployment ve Servis oluşturma ve bunlarla ilgili ufak uygulamaları burada bulabilirsiniz.
kubectl
kubectl, K8s Cluster’a erişim ve yönetim için kullandığımız bir komut.
Kurulum
macOS’a Homebrew ile kurulum
1- Komutu çalıştırın.
brew install kubectl
2- Kurulum tamamlandıktan sonra
kubectl version --short
komutunu girdiğinize kurulduğunu göreceksiniz. Eğer hata ile karşılaşırsanız endişelenmeyin daha K8s Cluster ile eşleştirme yapmadığımız için bu hata ile karşılaşıyoruz.
Windows’a Choco, Scoop ve Powershell kurulumları
1- Herhangi yöntemi seçerek çalıştırın
Powershell
Install-Script -Name 'install-kubectl' -Scope CurrentUser -Forceinstall-kubectl.ps1 c:\kubectl
Choco
choco install Kubernetes-cli
Scoop
scoop install kubectl
2- Kurulum tamamlandıktan sonra
kubectl version --short
komutunu girdiğinize kurulduğunu göreceksiniz. Eğer hata ile karşılaşırsanız endişelenmeyin daha bir cluster ile eşleştirme gerçekleştirmediğimiz için bu hata ile karşılaşıyoruz.
Ubuntu’ya Snap ve Homebrew kurulumları
Snap
sudo snap install kubectl --classic
Homebrew
brew install kubectl
macOS’a Homebrew ve Macports kurulumları
Homebrew
brew install kubectl
yada
brew install kubernetes-cli
Macports
sudo port selfupdate
sudo port install kubectl
Diğer kurulum yöntemleri: https://kubernetes.io/docs/tasks/tools/install-kubectl/
kubectl config view
ile kubectl konfigürasyonuna erişim sağlanır.

“cluster” K8s Cluster’ların, “users” Cluster kullanıcı hesapların ve “context” ise kullanıcı hesabını ve Cluster’ın tanımlandığı bölümlerdir.
K8s kurulumu
Tamamiyle test amaçlı, günlük olarak geliştirme yapabileceğimiz kendimize ait bir ortam oluşturmak için Docker Desktop yada Minikube kullanabiliriz. Windows kullanıcısı olduğum için burada Docker Desktop’dan bahsedicem.
Eğer isterseniz Minikube’de tercih edebilirsiniz.
Docker Desktop kurmadan önce bilgisayarınızın BIOS’undan sanallaştırmaya aktif etmeyi unutmayın. “Görev Yöneticisi”’inden işaretli alanı kontrol ederek aktif olup olmadığını görebilirsiniz.

1- Kurulum için hazırız, Docker Desktop’ı aşağıdaki linkten sisteminize uygun olanı indirin.
2- Kurulum sırasında yapmanız gereken farklı bir ayar olmadığı için “Next” butonlarına basıp kurulumu başlatınn.
3- Docker Desktop Dashboard’a ekran görüntüsündeki gibi erişin

4- Docker Dektop arayüzünden Kubernetes sekmesinden “Enable Kubernetes” aktif ettiğimizde artık tek bir node cluster’ımızı oluşturmuş olduk.

kubectl version --short
komutunu çalıştırdığınızda artık K8s’in hazır olduğunu göreceksiniz. Daha önce aldığımız hatada yok oldu.

Ayrıca, Kubernetes Linode Kubernetes Engine (LKE) ve Google Kubernetes Engine (GKE) gibi bulut servis sağlayıcılarından belli bir ücret karşılığında bu hizmetten faydalanabilirsiniz.
kubectl get nodes
ile Node’umuzun hazır olduğunu göreceksiniz.

Pods
Bir önceki yazıda Pod’u açıkladık şimdi sıra nasıl kullanılır.
- Tüm Kubernetes API’sindeki en küçük nesnedir.
- Birden fazla konteynere sahip olabilir.
- Bir Pod, bir Node içerisinde çalışır.
Şimdi bir Pod yaml dosyası oluşturup, kubectl appyl komutu ile API Server’a POST(HTTPS) edilmesini sağlayacağız.
Tek Konteyner Pod
1- Aşağıdaki gibi “singlePod.yml” dosyasını oluşturun. İçeriğine gelecek olursak
- kind ve apiVersion ile oluşturacağımız K8s nesnesinin ne olduğunu ve hagi sürümünü kullandığımızı söylüyoruz.
- metadata altında bu pod için isim ve etiketlemeler gerçekleştiriyoruz.
- spec ise konteyner’i tanımladığımız kısım. konteyner ismini, kullanacağımız yansı adını, yansı için ufak bi ilke tanımladık ve son olarakta konteyner port’unu söyledik.
2- Önce kubectl apply -f singlePod.yml
kodunu çağırdığımızda Pod’umuz oluşturulması için apiserver’a <yaml> dosyamızı gönderiyoruz. kubectl get pod nginx-server
komutu ile Pod’un oluştuğunu görebiliriz.

3- localhost
ile erişmek için bir servis oluşturmamız gerekiyor. Servis oluşturma sırasında bir port belirtmeden oluşturduğumuz için bize 30000 — 32767 (NodePort için default olarak belirlenmiş port aralığıdır) aralığında bir port atayacak.
kubectl expose pod nginx-server --name=nginx-server-svc --target-port=80 --type=NodePortkubectl get svc nginx-server-svc

Son, çalıştığını görmek için “localhost:32651” (port numarası sizin için değişecektir) giriş yaptığımızda nginx bizi hoşgeldin sayfası ile karşılayacak :).

İşimiz bittiğine göre Pod’u ve Service’i silmek için kubectl delete pod nginx-server
ve kubectl delete svc nginx-server-svc
komutlarıyla kaldırabiliriz.
Çoklu Konteyner Pod:
Yukarıdaki işlemleri aynısını burada aynı sıra ile tekrardan yapacağız ama service dosyası oluşturmayacağız.
1- Öncelikle aşağıdaki <yaml> dosyasını oluşturun. Ben “multiPod.yml” olarak isimlendirdim. Bu sefer iki konteyner arasında bir ortak dosya paylaşımı gerçekleşiyor.
spec
altındavolumes
kısmında boş bir klasör oluşturuyoruz. Bu işleme Persistent Volume (PV) olarak adlandırılır. Sonra, oluşturduğumuz bu alanın sahiplendirilmesi için iki container içerisinde Persistent Volume Claim (PVC) işlemi gerçekleştiriyoruz. Böylece, nginx
ve debian
isimli konteynerlerin ortak bir klasöre erişebilir hale geldiler.
2- kubectl apply -f multiPod.yml
uygulayın. Pod’un durumunu kontrol edin.
3- Bu sefer nginx Pod’u içerisinden curl işlemi gerçekleştireceğiz. kubectl exec -it multiPod -c nginx -- /bin/bash
ile konteynere erişim sağlayın. İçeride curl localhost
dediğinizde “I came from somewhere else!” mesajını göreceksiniz

Services:
Devam edecek…
Diğer Notlarım: