Yazılım Geliştiriciler için Azure: Azure VM Üzerine Kubernetes (MicroK8s) Kurulumu
  1. Anasayfa
  2. Container

Yazılım Geliştiriciler için Azure: Azure VM Üzerine Kubernetes (MicroK8s) Kurulumu

0

MicroK8s’i, Canonical (Ubuntu dersem tanıdık gelecektir) mühendisleri tarafından geliştirilmiş ve “Kubernetes for workstations and appliances” olarak tanımladıkları; development, test ve küçük boyuttaki CI/CD süreçleriniz için kullanabileceğiniz bir Kubernetes deployment olarak tanımlayabiliriz. Eğer Kubernetes ile ilgili bir bilgim yok ya da sadece duydum diyorsanız; okumaya başlamadan önce Onur Yüksektepeli’nin Kubernetes Nedir? yazısını okumanızı tavsiye ediyorum.

NOT: Azure üzerinden yönetilen bir Kubernetes servisi (Azure Kubernetes Service, AKS) mevcut. Bu konuya da ilerleyen zamanlarda değineceğiz.

Kurulumu local bir VM ya da eğer Ubuntu kullanıyorsanız direkt bilgisayarınız üzerine kurabilirsiniz. Bu yazıda işin içine biraz daha network (internet) tarafını dahil etmek için Azure üzerinde kuracağımız bir Ubuntu VM üzerine yapacağız.

Öncelikle Azure üzerinde bir sanal makine tanımı yaparak başlayalım. Resim-1‘de göreceğiniz gibi standart olarak bir VM tanımlıyoruz. Basic A2 boyutunda yani 2 vcpu ve 3,5 GB RAM’e sahip bir VM’e Ubuntu Server 18.04 LTS kuracağız. Authentication type olarak kullanıcı adı ve şifre seçiyorum. Sunucuya SSH üzerinden bağlanacağımız için de HTTP (80) ve HTTPS (443) portları dışında bir de SSH (22) portunu açıyorum.

Resim-1

Gerekli tanımlamaları yaptıktan sonra Resim-2‘de göreceğiniz gibi özet sayfasını göreceksiniz. Çok fazla özelliğe ihtiyacımız olmadığı için birçok “Off” ve “Disabled” görüyorsunuz.

Resim-2

Sanal makinemiz aktif hale geldikten sonra DNS tanımı yapmamız gerekiyor. Bunun için de Resim-3‘te göreceğiniz gibi Overview altında, DNS name yanındaki Configure’a tıklıyoruz.

Resim-3

Settings/Configuration altında DNS name label’a sanal makineye verdiğimiz ismi veriyoruz (Resim-4). Diğer ayarları olduğu gibi bırakabiliriz.

Resim-4

Ayarları kaydettikten sonra Resim-5‘teki gibi DNS name yanında <dns_label>.<location>.cloudapp.azure.com formatındaki DNS adresimizi görebilirsiniz.

Resim-5

Sanal makine ile ilgili ayarları tamamladıktan sonra sıra geldi bağlanmaya. Linux makine olduğu için biz de standartlara uyarak SSH ile bağlanalım. Bunun için Resim-6‘da göreceğiniz gibi ssh <kullanıcı_adi>@<dns_adı> şeklinde bağlantıyı sağlayabiliriz.

Resim-6

Bağlantıyı sağladıktan sonra artık terminal üzerinde çalışmaya başlayabiliriz. Ubuntu kurduktan sonra ilk yapılacak işlerden biri de tabi ki güncellemek :) Bunun için apt-get update ve apt-get upgrade komutlarını çalıştırıyoruz (Resim-7).

Resim-7

Güncel bir Ubuntu’ya sahip olduğumuzdan emin olduktan sonra sırada MicroK8s kurmaya geldi. Kubernetes kurulumu deyince karışık adımları olacağı akla gelebilir ama MicroK8s tek bir komutla kuruluyor. Ubuntu ile gelen ve “Linux’un App Store’u” olarak tanımlanan snap aracılığı ile kurulumu hızlıca yapabiliyoruz.

Terminale sudo snap install microk8s –classic yazmamız yeterli (Resim-8).

Resim-8

MicroK8s birçok eklenti ile birlikte geliyor. Kurulumda bunlar aktif olmadığı için ihtiyaca göre aktif hale getirebilirsiniz.

  • DNS: Kube dns’i kuruyor, diğer eklentiler tarafından ihtiyaç duyulabileceğinden her zaman aktifleştirilmesi öneriliyor.
  • Dashboard: Kubernetes dashboard ile birlikte Grafana ve Influxdb’yi de kuruyor.
  • Storage: Varsayılan storage class’ı kurmak için gerekli.
  • Ingress: Bir ingress controller kurmak için aktifleştirebilirsiniz.
  • GPU: GPU’ları MicroK8s’e expose etmek için gerekli nvidia-docker runtime ve nvidia-device-plugin-daemonset ‘i aktifleştirmek için, host üzerinden nvidia sürücülerinin kurulu olması gerekiyor.
  • Istio: Core Istio servislerini kuruyor.
  • Registry: localhost:32000 üzerinden çalışan local bir docker registry kuruyor.

DNS, Kubernetes dashboard ve local docker registry’yi aktif hale getirmek için Resim-9‘daki microk8s.enable komutunu çalıştırıyoruz.

Resim-9

MicroK8s ile birlikte geldiği için ayrıca Kubectl ve docker daemon kurmadık. microk8s.docker ve microk8s.kubectl şeklinde uzun uzun yazmamak için alias tanımı yapabiliriz (Resim-10).

Resim-10

Her şey hazır gibi görünüyor, kubectl get all –all-namespaces komutu ile ne var ne yok her şeyi görebilirsiniz (Resim-11).

Resim-11

Her şey çalışıyor görünüyor ancak bir eksiğimiz var. Kubernetes dashboard’a sanal makine dışından yani kendi bilgisayarımızdan dns adını yazarak erişemiyoruz. Bunun için küçük bir güncelleme yapmamız gerekiyor.

kubectl -n kube-system edit service kubernetes-dashboard komutu ile kube-system namespace’i altında yer alan kubernetes-dashboard servisinin config dosyasında bir güncelleme yapacağız. Resim-12‘de göreceğiniz gibi servis tipi Cluster-IP. Bu varsayılan tip ve sadece cluster içerisinden erişebiliriz anlamına geliyor.

Resim-12

Cluster dışından erişmek istiyoruz ancak servis tipi olarak LoadBalancer tanımı da yapamıyoruz çünkü bir yük dengeleyici konumlandırmadık. Bu durumda servis tipini NodePort olarak yapabiliriz (Resim-13), bu da açılan port üzerine gelen isteklerin bu servise yönlendirileceği anlamına geliyor.

NOT: Bu işlemi vi editör ile yaptığımız için i ile insert mode’a alıyoruz. Değişiklikleri yaptıktan sonra ESC ile insert mode’den çıkıp, : bastıktan sonra wq! Yazarak değişiklikleri kaydedip çıkış yapabilirsiniz.

Resim-13

Node port’un, servis başına sadece bir port ve 30000–32767 arasında olması gerekiyor. kubectl -n kube-system get services komutu ile atanan node port değerine bakalım (Resim-14).

Resim-14

31559 portu üzerinden sunucuya geldiğimizde dashboard’a erişebiliriz. Ancak bu port standart bir port olmadığı için Azure üzerinden erişime açmamız gerekiyor. VM ile birlikte oluşturulan network security group’a Add inbound security rule seçeneği ile port tanımını yapabiliriz. Sadece Destination port range‘e node port değerini ekliyoruz ve k8sDashboard adını veriyoruz (Resim-15).

Resim-15

Ekledikten sonra Resim-16‘da göreceğiniz gibi VM oluştururken açtığımız diğer portlarla birlikte node port değerini de görebilirsiniz.

Resim-16

Portu açtıktan sonra dashboard’a erişimi test etmek kalıyor. Tarayıcıya <dns_adı>:<node_port> şeklinde yazarak Resim-17‘de göreceğiniz şekilde dashboard’a erişebiliyoruz. Erişim için herhangi bir ayar yapmadığımız için devam etmek için skip diyebilirsiniz.

Resim-17

Son olarak Kubernetes dashboard kullanıma hazır (Resim-18).

Resim-18

Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

https://microk8s.io/docs/

https://github.com/kubernetes/dashboard/wiki/Accessing-Dashboard—1.7.X-and-above

https://tutorials.ubuntu.com/tutorial/install-a-local-kubernetes-with-microk8s#2

TAGs: Azure, Azure Portal, Azure VM, Yazılım Geliştiriciler için Azure, Kubernetes, k8s, MicroK8s, Docker, Containers, Linux, Ubuntu, LoadBalancer, NodePort, ClusterIP, Kubernetes Dashboard, vi editor, vi, ssh, terminal, shell, snap

Bu İçeriğe Tepkin Ne Oldu?
  • 2
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Mert Yeter, lisans eğitimini Yıldız Teknik Üniversitesi'nde, yüksek lisans eğitimini ise Bahçeşehir Üniversitesi'nde tamamlamıştır. Yazılım dünyasına üniversitenin ilk yıllarında aldığı QBasic ile başlayan Mert, .NET ve SQL Server gibi Microsoft teknolojileri ile devam etmiş; yüksek lisans tezini ise Linux konusunda yapmıştır. Netaş ve Ziraat Teknoloji gibi sektörün önde gelen firmalarında C#, .NET, SQL Server, Cisco Contact Center ürünleri ve Linux üzerine çalışmış, bir çok firmaya da bu konularda danışmanlık vermiştir.

Yazarın Profili
İlginizi Çekebilir

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir