Kubernetes — 2

Emin Aktaş
5 min readSep 17, 2020

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 nodesile 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.

specaltı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:

Kubernetes — 1

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Emin Aktaş
Emin Aktaş

No responses yet

Write a response