şükela:  tümü | bugün soru sor
  • kubernetes nedir?

    kubernetesi anlayabilmek icin once microservices, docker gibi kavramlari anlamamiz lazim. peki oyleyse baslayalim...

    1 - bir web uygulamasi yaptiniz, bu uygulamanizin bir e-ticaret sitesi oldugunu varsayalim. bu e-ticaret sitenizi yaparken sepet, odeme, musteri, urun, yorumlar vb. parcalara boldunuz ve bu parcalarin her biri kendi icinde, digerlerinden bagimsiz olarak calisacak sekilde tasarladiniz. tek basina calisabilen, butunun bir parcasi, her bir parcamiz, bir servistir ve kurdugumuz kucuk kucuk ve birbiri ile haberlesen, bir suru servisten olusan bu yapiya microservices denir.

    2 - web uygulamanizin, her bir servisini servera yuklemeniz ve calistirmaniz gerekiyor ki musteriler gelsin alisveris yapsin. burada bu servisleri yine birbirinden bagimsiz makinelere kuruyoruz ve birbirleri arasinda haberlestiriyoruz, fakat burada karsimiza bir zorluk cikiyor. her bir servisi calistirmak icin bizim, servisi yukledigimiz makinelerin icine, o serviste kullanilan seyleri kurmamiz gerekiyor, mesela kullanacagimiz framework, database gibi. bu noktada imdadimiza docker yetisiyor. servisini bir sanal makinenin icinde calistirdiniz ve bunu paketleyip image haline getirdiniz, bu docker imagelarini calistirdiginiz anda olusan seyin adi container. yani siz uygulamanizin her bir servisini bir container olarak sunucuda calistirabilirsiniz, bu sayede her seferinde her actiginiz makineye birseyler kurma zahmetinden kurtulursunuz ve izole calisan bir yapiya sahip olursunuz.

    3 - docker containerlarinizi birbirinden farkli makinelere kurdunuz, simdi bunlari merkezi bir yerden yonetmeniz gerekiyor, burada imdadimiza kubernetes yetisiyor. diyelim ki bizim tum servislerimiz toplam 5 adet makineye yuklu, bu 5 makinelik, microservicelerden olusan yapiya cluster deniyor, bir clusterdaki her bir makineye ise node deniyor. kubernates kurdugumuz yonetici node, master node oluyor ve diger kubernetes yuklu nodelari, master node yonetiyor.

    4 - kubectl adli bir command line interface ile nodelar yonetilebiliyor, nodelara yuklenen kubelet adli bir program ile haberlesiyorlar. yani her yeni makine actigimizda icinde kubelet ve docker yuklememiz gerekiyor, bunu da otomatize hale getiren sistemler var, bunlardan biri terraform. terraform kurup yazdiginiz .tf dosyasiyla provider, service gibi bilgilerinizi yaziyorsunuz, ssh-key ve api tokeninizi yaziyorsunuz, makine acildiginda yuklenmesini istediginiz docker gibi, kubelet gibi toollari yuklemek icin komutlarinizi yaziyorsunuz. terminalden terraform init dediginiz vakit .tf uzantili dosyanizi okuyor, terraform plan size set ettiginiz degerleri gosteriyor, terraform apply yazdiginizda ise calismaya basliyor, makinenizi aciyor, .tf dosyasina yazdiginiz islemleri satir satir yapmaya basliyor ve otomatik sekilde node olusturuyor... terraform destroy derseniz o node kendini imha edecektir...

    5 - kuberneteste replicaset denen bir replication controller bulunmaktadir, replicasetin olayi, yaml dosyalariyla dersiniz ki, bu nodedan 3 tane dursun her zaman, loadbalancer ile yuku bu 3 makineye dagitabilirsiniz. olaki makinelerden biri bozulur, kapanir, herhangi bir sorun olursa, hemen yeni bir makine acilir ve o node ile yola devam eder, bu sayede daima 3 node aciktir, bunu istediginiz zaman manuel olarak 3, 4, 5, 10 makine yapabilirsiniz.

    6 - replicaset ile esas olarak yapilabilecek daha guzel birsey vardir ki, sistem yuku arttikca yeni makineler acilir, yuk azaldikca makineler kapanir, bu sayede sisteminiz surekli ayakta kalir ve bunun optimize etmis oldugunuz icin gereksiz yere serverlara para odememis olursunuz... buna da terminolojide autoscaling deniyor...

    7 - yine replicaset ile canary testing yapabilir, sureci otomatize edebilirsiniz. bu da su demek oluyor, e-ticaret version 2 yi yazdiniz, nodelarinizdan birine bunu yukluyorsunuz, kullanicilarin kucuk bir kismi v2 kulllaniyor, eger sistem sikintisiz calisiyorsa yavas yavas v1 olan nodelari azaltip v2 leri arttiriyor ve birden degil, zamanla v2 ye geciyorsunuz, bu da size yayinda, az kullanici ile test imkani sagliyor, sisteminizde her zaman yayinda kaliyor...

    ben ogrendikce buraya yeni bilgiler eklemeye calisacagim, bir hatam varsa bilenler duzeltsin cunku aslina bakarsaniz bende pek kullandigimi soyleyemem ve yeni yeni ogreniyorum...
  • medium makalesinde arkadaş çok güzel anlatmış
  • yukarıdakiler yetmediyse birde bu şekilde detaylı bir anlatım var link
  • (bkz: rancher) ile orchestrating işini soa bazlı bir sistemle yapabilirsiniz. rancheri bir makinaya kuruyorsun bir host da orda olabiliyor. sonra machine driverlerine gore isterse digitalocean istersen aws istersen azure gibi sistemleri de al bak benim containerlerim buradan cıkıyor yük gelirse ordan artır yük azalırsa ordan azalt diyebiliyorsunuz
  • trend nereye gidiyor bi bakalım..

    https://kubedex.com/top-10/