Bloğa geri dön

Ubuntu 18.04 Üzerinde Kubeadm Kullanarak Kubernetes Kümesi Nasıl Oluşturulur

Ubuntu 18.04 Üzerinde Kubeadm Kullanarak Kubernetes Kümesi Nasıl Oluşturulur

Bu öğretici, sıfırdan bir Kubernetes kümesi kurmanızda size rehberlik edecek ve Ansible ve Kubeadm kullanarak, ardından bununla konteynerleştirilmiş bir Nginx uygulaması dağıtmanızı sağlayacaktır.

Giriş

Kubernetes (k8s veya “kube” olarak da bilinir), konteynerleştirilmiş uygulamaların dağıtılması, yönetilmesi ve ölçeklendirilmesiyle ilgili birçok manuel süreci otomatikleştiren açık kaynaklı bir konteyner orkestrasyon platformudur. Kubernetes, projeye aktif olarak katkıda bulunan ve hızla büyüyen açık kaynaklı bir topluluğa sahiptir. Sizi şunun hakkında bilmeniz gereken her şeyle tanıştıracak olan blog yazımıza göz atın: Kubernetes platformunun temelleri.

Kubeadm API sunucusu, Denetleyici Yöneticisi (Controller Manager) ve Kube DNS gibi birkaç entegre öğeyi, parçayı ve bileşeni yapılandıran bir araçtır. Ayrıca kurulumun otomatikleştirilmesine de yardımcı olur. Ancak kullanıcı oluşturmaz veya işletim sistemi düzeyindeki bağımlılıkların kurulumunu ve bunların yapılandırmasını üstlenmez ve altyapınızı hazırlayamaz.

Ansible, yazılım hazırlama ve uygulama dağıtımı için açık kaynaklı bir araçtır. Saltstack olay odaklı bilgi teknolojisi otomasyonu için açık kaynaklı bir yazılımdır. Bunlar, ek kümeler oluşturmayı veya mevcut kümeleri yeniden oluşturmayı hatalara karşı daha az savunmasız hale getiren ve bu ön görevler için kullanılabilecek iki araçtır.

Hedefler:

Kümeniz aşağıdaki fiziksel kaynakları içerecektir:

1. Bir master (ana) düğüm:

Master düğüm, bir dizi worker (işçi) düğümü (iş yükleri çalışma zamanı) kontrol eden ve yöneten ve Kubernetes'te bir kümeyi andıran bir düğümdür. Ayrıca, tetiklenen olay için uygun eylemi belirlemek üzere düğümün kaynak planını tutar. Şunu çalıştırır: etcd, iş yüklerini worker düğümlerine planlayan bileşenler arasında küme verilerini tutmak ve yönetmek için kullanılan açık kaynaklı, dağıtık bir anahtar-değer deposudur.

Örneğin, zamanlayıcı (scheduler), yeni planlanan bir POD'a hangi worker düğümünün ev sahipliği yapacağını belirler.

2. İki worker (işçi) düğümü:

Worker düğümleri, planlama tamamlandıktan sonra master düğüm devre dışı kalsa bile kendilerine atanan işe devam eden düğümlerdir. Worker düğümleri, iş yüklerinizin (yani konteynerleştirilmiş uygulamaların ve hizmetlerin) çalışacağı sunuculardır. Worker'lar ekleyerek kümenin kapasitesini de artırabilirsiniz.

Bu öğreticiyi tamamladığınızda, kümedeki sunucuların uygulamalarınızın çalışması için yeterli CPU ve RAM kaynaklarına sahip olduğunu varsayarak, iş yüklerini (yani konteynerleştirilmiş uygulamaları ve hizmetleri) çalıştırmaya hazır, tamamen işlevsel bir kümeniz olacaktır. Kümeyi başarıyla kurduktan sonra, neredeyse tüm geleneksel UNIX uygulamalarını çalıştırabilirsiniz. Web uygulamaları, veritabanları, arka plan programları (daemons) ve komut satırı araçları dahil olmak üzere kümenizde konteynerleştirilebilir.

Kümenin kendisi her düğümde yaklaşık 300-500 MB bellek ve %10 CPU tüketecektir.

Gereksinimler:

  1. Yerel Linux makinenizde bir SSH anahtar çiftine sahip olmalı ve SSH anahtarlarını nasıl kullanacağınızı bilmelisiniz. Ancak daha önce SSH anahtarları kullanmadıysanız, yerel makinenizde SSH anahtarları kurmanıza yardımcı olacak bu öğreticiye bakabilirsiniz.
  2. Her biri en az 4 GB RAM ve 4 vCPU'ya sahip, Ubuntu 18.04 çalıştıran üç sunucu. SSH anahtar çiftinizle her sunucuya root kullanıcısı olarak SSH yapabilmelisiniz. Ubuntu sunucunuzu kurmak için bu öğreticiyi takip edin.
  3. Yerel makinenizde Ansible kurulu olmalıdır.
  4. Ayrıca Ansible playbook'larına aşina olmalısınız.
  5. Ayrıca bir Docker görüntüsünden nasıl konteyner başlatılacağını da bilmeniz gerekir. Eğer bilgilerinizi tazelemeniz gerekiyorsa, Ubuntu 18.04'te Docker Nasıl Kurulur ve Kullanılır başlıklı makaledeki “Adım 5 — Ubuntu'da Docker Görüntüleri ile Çalışma” bölümüne bakın.

Adım 1 — Çalışma Alanı Dizini ve Ansible Envanter Dosyasının Kurulması

Öncelikle yerel makinenizde Ansible'ı kurmanız gerekir. Bu, uzak sunucunuzda komutları yürütmenize yardımcı olacaktır. Ayrıca otomasyon sağlayarak manuel dağıtım zahmetini de azaltır. Bunun için yerel makinenizde geçici dijital depolama alanınız (Çalışma Alanı) olarak hizmet edecek bir dizin oluşturmanız gerekecektir.

Bir dizin oluşturduktan sonra, bir hosts her sunucunun IP adresleri ve grubu hakkındaki tüm bilgileri depolayacak dosya. Envanter bilgilerini içinde depolamanıza yardımcı olacaktır. Daha önce belirtildiği gibi, biri master ve ikisi worker olmak üzere üç sunucu olacaktır. Master sunucu, IP'si şu şekilde görüntülenen master olacaktır: master_ip. Diğer iki sunucu worker olacak ve şu IP'lere sahip olacaktır: worker_1_ip ve worker_2_ip.

Yerel makinenizin ana dizininde ~/kube-cluster adında bir dizin oluşturmanız ve cd komutunu kullanarak bu dizine girmeniz gerekir:

The ~/kube-cluster dizini artık kubeadm kullanarak bir Kubernetes kümesi oluşturmak için tüm yerel komutları çalıştıracağınız geçici dijital depolama alanı (çalışma alanı) olarak işlev görecektir. Dizin, tüm Ansible playbook'larınızı içerecek ve öğreticinin geri kalanında kullanılacaktır.

Hosts Dosyasını Oluşturma

Şu adla bir dosya oluşturun: ~/kube-cluster/hosts, şunu kullanarak: nano veya favori metin düzenleyiciniz:

Şimdi, kümenizin mantıksal yapısı hakkındaki bilgileri belirtecek olan aşağıdaki metni eklemeniz gerekecektir:

Belirtildiği gibi, bu envanter dosyası sunucularınızın IP adresleri ve her sunucunun ait olduğu gruplar hakkındaki tüm bilgileri depolamanıza yardımcı olacaktır. ~/kube-cluster/hosts envanter dosyanız olacak ve (masters ve workers) kümenizin mantıksal yapısını belirterek içine eklediğiniz iki Ansible grubu olacaktır.

The Master grubu, Ansible'ın uzak komutları root kullanıcısı olarak çalıştırması gerektiğini belirten gruptur. Ayrıca, master düğümün IP'sini (master_ip) listeler ve bu IP “master” adlı sunucu girişi tarafından listelenebilir. Benzer şekilde, Workers grubunda worker sunucuları için iki giriş bulunur (worker_1_ip ve worker_2_ip) ve bunlar da ansible_user değerini root olarak belirtir.

Dosyanın son satırı, Ansible'a yönetim işlemleri için uzak sunucuların Python 3 yorumlayıcılarını kullanmasını söyler. Son olarak, metni ekledikten sonra dosyayı kaydedip kapatmanız gerekir. Çalışma alanı dizinini ve Ansible envanter dosyasını kurduktan sonra, işletim sistemi düzeyindeki bağımlılıkları yükleme ve yapılandırma ayarlarını oluşturma adımlarına geçelim.

Adım 2 — Tüm Uzak Sunucularda Root Olmayan Bir Kullanıcı Oluşturma

Bu adımda, yetkisiz bir kullanıcı olarak sunuculara manuel olarak SSH ile bağlanabilmeniz için tüm sunucularda sudo ayrıcalıklarına sahip root olmayan bir kullanıcının nasıl oluşturulacağını öğreneceksiniz.

Bu, bir kümenin korunması için sıkça gerçekleştirilen işlemler için yararlı olabilir. Dahası, bu adım görevi daha doğru ve daha az hataya açık bir şekilde gerçekleştirmenize yardımcı olarak önemli dosyaları yanlışlıkla değiştirme veya silme olasılığını azaltacaktır. Root'a ait dosyaların kurulumunu değiştirmek veya top/htop gibi komutlarla sistem bilgilerini görmek ve çalışan konteynerlerin listesini görüntülemek istiyorsanız, aşağıdaki adım tüm görevleri gerçekleştirmenize yardımcı olacaktır.

Playbook'u Oluşturma

Çalışma alanında ~/kube-cluster/initial.yml adında bir dosya oluşturun:

Ardından, aşağıdaki play'i eklemeniz gerekir. Ansible'da bir play, belirli sunucuları ve grupları hedefleyen gerçekleştirilecek adımlar topluluğudur. Bir playbook'ta bir veya birden fazla play olabilir.

Aşağıdaki play, root olmayan bir sudo kullanıcısı oluşturacaktır:

Oyun kitabımızın (playbook) ne yaptığına dair bir döküm aşağıdadır:

  1. Bu oyun kitabı, root olmayan şu kullanıcıyı oluşturacaktır: ubuntu.
  2. Şifre istemi olmadan sudo komutlarını çalıştırmanız gerektiğinden, bu oyun sudoers dosyasını, ubuntu kullanıcısının bunu yapmasına izin verecek şekilde yapılandıracaktır.
  3. Yukarıdaki görevin temel amacı, her sunucuya bir ubuntu kullanıcısı olarak SSH ile bağlanmanızı sağlamaktı. Bu oyun kitabı, yerel makinenizin genel anahtarını (genellikle ~/.ssh/id_rsa.pub) uzak ubuntu kullanıcısının yetkilendirilmiş anahtar listesine ekler.

Şimdi, metni ekledikten sonra dosyayı kaydedip kapatmanız gerekiyor.

Oyun kitabını çalıştırma

Bundan sonra, yerel makinelerde sadece şunu çalıştırarak root olmayan ubuntu kullanıcısını oluşturacak oyun kitabımızı yürütmemiz gerekir:

Bu komutun yürütülmesi biraz zaman alacaktır ve ardından aşağıdaki çıktıyı göreceksiniz:

creating non root user create a kubernetes cluster

Bu adım tamamlandıktan sonra, bir sonraki adımda Kubernetes'e özgü bağımlılıkları yüklemeye geçebilirsiniz.

Adım 3 — Kubernetes Bağımlılıklarını Yükleme

Bu adımda, Kubernetes için gerekli olan işletim sistemi düzeyindeki paketleri Ubuntu’nun paket yöneticisi ile nasıl yükleyeceğinizi öğreneceksiniz.

Bu paketler şunlardır:

  1. Docker: Docker, Docker konteynerleri oluşturmak, dağıtmak ve çalıştırmak için bir platform ve araçtır. Docker'ı kolayca kurmak için kamu bulutunda Ubuntu üzerinde Docker nasıl kurulur & çalıştırılır başlıklı kılavuzumuzu takip edebilirsiniz. Ancak, rkt gibi diğer çalışma zamanları için destek Kubernetes'te aktif olarak geliştirilmektedir.
  2. Kubeadm: kubeadm, minimum düzeyde çalışan bir küme elde etmek için gerekli eylemleri gerçekleştiren bir CLI aracıdır. Bu, kümenin çeşitli bileşenlerini standart bir şekilde kurmanıza ve oluşturmanıza yardımcı olacaktır.
  3. kubelet: kubelet, her düğümde çalışan ve düğüm düzeyindeki işlemleri gerçekleştiren birincil “düğüm aracısıdır” (node agent).
  4. kubectl: kubectl de kümenizle konuşan ve API Sunucusu aracılığıyla komutlar veren bir CLI aracıdır.
Oyun kitabını oluşturma

Çalışma alanında ~/kube-cluster/kube-dependencies.yml adında bir dosya oluşturun:

Şimdi, bu paketleri sunucularınıza yüklemek için dosyaya aşağıdaki oyunları (plays) eklemeniz gerekir:

Playbook'taki ilk play şunları yapar:

  1. Bu play, işletim sistemi düzeyindeki paketleri ve konteyner çalışma zamanı olan Docker'ı – kurmanıza yardımcı olacaktır.
  2. Şunu kurar: apt-transport-https, bu da APT kaynak listenize harici HTTPS kaynakları eklemenize olanak tanır.
  3. Anahtar doğrulaması için Kubernetes APT deposunun apt-key'ini ekler.
  4. Kubernetes APT deposunu uzak sunucularınızın APT kaynak listesine ekler.
  5. Şunları kurar: kubelet ve kubeadm.

İkinci play, master düğümünüze kubectl kurmayı içeren önemli ve tek başına bir görevi gerçekleştirir. Şimdi, metni ekledikten sonra dosyayı kaydedip kapatmanız gerekir.

Playbook'u çalıştırma

Bundan sonra, yerel makinelerde sadece şunu çalıştırarak playbook'umuzu yürütmemiz gerekir:

Bu komutun yürütülmesi biraz zaman alacaktır ve sonrasında aşağıdaki çıktıyı göreceksiniz:

installing k8s dependencies create a kubernetes cluster

Yürütmeden sonra Docker, kubeadm ve kubelet tüm uzak sunuculara kurulacaktır. Kubectl gerekli bir bileşen değildir ve yalnızca küme komutlarını yürütmek için gereklidir. Bunu yalnızca master düğümüne kurmak bu bağlamda mantıklıdır, çünkü kubectl komutlarını yalnızca master'dan çalıştıracaksınız. Ancak unutmayın ki, kubectl komutları, çalışan düğümlerinin herhangi birinden veya kurulup bir kümeyi gösterecek şekilde yapılandırılabileceği herhangi bir makineden çalıştırılabilir.

Tüm sistem bağımlılıkları artık yüklendi. Master düğümünü kuralım ve kümeyi başlatalım.

Step 4 — Master Düğümünü Kurma

Bu adımda, master düğümünüzü kurduktan sonra kümeniz her ikisini de içereceğinden, Pod'lar ve Pod Ağ Eklentileri gibi birkaç kavramı öğreneceksiniz.

Pod'lar, Kubernetes'teki en küçük, en temel dağıtılabilir nesnelerdir. Pod'lar, Docker konteynerleri gibi bir veya daha fazla konteyner içerir. Bir Pod birden fazla konteyner çalıştırdığında, bu konteynerler tek bir varlık olarak yönetilir ve Pod’un kaynaklarını paylaşır.

Her pod'un kendi IP adresi vardır ve bir düğümdeki pod, pod’un IP'sini kullanarak başka bir düğümdeki pod'a erişebilmelidir. Ancak, pod'lar arasındaki iletişim daha karmaşıktır. Trafiği bir düğümdeki pod'dan diğerindeki pod'a şeffaf bir şekilde yönlendirebilecek ayrı bir bileşene ihtiyaç duyar. Bu işlevsellik için pod ağ eklentileri kullanılır. Birçok pod ağ eklentisi mevcuttur, ancak biz kararlı ve verimli bir seçenek olduğu için Flannel kullanacağız.

Playbook'u Oluşturma

Yerel makinenizde master.yml adında bir Ansible playbook'u oluşturun:

Ayrıca, kümeyi başlatmak ve Flannel'ı kurmak için dosyaya aşağıdaki play'i eklemeniz gerekir:

İşte bu play’in bir dökümü:

  1. Bu play'deki ilk görev, şu komutu çalıştırarak kümeyi kuracaktır: kubeadm init. Pod IP'lerinin atanacağı özel alt ağı belirtmek için şu argümanı iletiyoruz: --pod-network-cidr=10.244.0.0/16. Flannel varsayılan olarak yukarıdaki alt ağı kullanır. Bunu, kubeadm aracına aynı alt ağı kullanmasını söylemek için kullanıyoruz.
  2. İkinci görev, şu konumda bir .kube dizini oluşturmak için kullanılır: /home/ubuntu. Kümeye bağlanmak için gereken yönetici anahtar dosyaları ve kümenin API adresi gibi yapılandırma bilgileri bu dizinde tutulacaktır.
  3. Üçüncü görev, /etc/kubernetes/admin.conf dosyasını (bu dosya kubeadm init komutundan oluşturulmuştur) root olmayan kullanıcınızın ev dizinine kopyalamak için kullanılır. Bu, yeni oluşturulan kümeye erişmek için kubectl kullanmanıza olanak tanır.
  4. Son görev, kubectl apply komutunu çalıştırarak Flannel. kubectl apply -f descriptor.[yml|json] komutu, kubectl aracına şu dosyada tanımlanan nesneleri oluşturmasını söyleyen söz dizimidir: descriptor.[yml|json] dosyası. kube-flannel.yml dosyası, kümede Flannel kurulumu için gereken nesnelerin tanımlarını içerir.

Şimdi, metni ekledikten sonra dosyayı kaydetmeniz ve kapatmanız gerekir.

Playbook'u Çalıştırma

Bundan sonra, yerel makinelerde sadece şu komutu çalıştırarak playbook'umuzu yürütmeniz gerekir:

Bu komutun yürütülmesi biraz zaman alacaktır ve ardından aşağıdaki çıktıyı göreceksiniz:

setting up master node create a kubernetes cluster

Şimdi, master düğümünün durumunu kontrol etmek için aşağıdaki komutla SSH bağlantısı kurun:

Master düğümünün içine girdikten sonra şunu çalıştırın:

Şimdi aşağıdaki çıktıyı göreceksiniz:

get nodes

Yukarıdaki çıktıyı aldığınızda, tüm kurulum görevlerinin master düğümü tarafından tamamlandığını ilan edebilir ve Ready (Hazır) durumuna geçtiği için worker düğümlerini kabul etmeye ve görevleri yürütmeye başlayabilirsiniz. Artık yerel makinenizden worker'ları ekleyebilirsiniz.

Adım 5 — Worker Düğümlerini Kurma

Master düğümünü kurduktan sonra, şimdi worker düğümlerini kurma adımımıza geçebiliriz. Kümeye worker düğümleri eklemek, her bir worker sunucusunda tek bir komut çalıştırılarak kolayca yapılabilir. Master’ın API sunucusunun IP adresi, portu ve güvenli bir belirteç (token) gibi önemli bilgiler bu komutta yer alır. Ancak tüm düğümlerin kümeye katılamayacağını, yalnızca güvenli belirteci ileten düğümlerin kümeye katılabileceğini unutmamalısınız.

Playbook'u oluşturma

Bu komut, çalışma alanınıza geri dönmenize ve şu adla bir playbook oluşturmanıza yardımcı olacaktır: workers.yml:

Worker'ları kümeye eklemek için dosyaya aşağıdaki metni ekleyin:

Playbook'un yaptığı işlem şudur. Yukarıdaki kodda iki play bulunmaktadır:

  1. İlk play, worker (işçi) düğümlerinde çalıştırılması gereken katılma komutunu almak için kullanılır. Komutun biçimi şu şekilde olacaktır: kubeadm join --token sha256:<hash><token><master-ip>:<master-port> --discovery-token-ca-cert-hash sha256:<hash>;. Görevin doğru belirteç (token) ve karma (hash) değerlerini alması gerekir. Doğru girdiyi aldığında görev, bunu bir fact olarak ayarlar, böylece ikinci play bu bilgiye erişebilir.
  2. İkinci play yalnızca tek bir görevi gerçekleştirmek için yazılmıştır – tüm worker düğümlerinde katılma komutunu çalıştırarak iki worker düğümünün kümenin bir parçası olmasını sağlamak.

Metni ekledikten sonra dosyayı kaydetmeniz ve kapatmanız gerekir.

Playbook'u çalıştırma

Bundan sonra, worker makinelerinde aşağıdaki komutu çalıştırarak playbook'umuzu yürütmemiz gerekir:

Bu komutun yürütülmesi biraz zaman alacaktır ve ardından aşağıdaki çıktıyı göreceksiniz:

setting up worker nodes

Artık Kubernetes kümeniz tamamen kuruldu ve worker'lar iş yüklerini çalıştırmaya hazır şekilde işlevsel hale geldi. Bir sonraki adıma geçmeden önce kümenin planlandığı gibi çalıştığını doğrulayalım.

Adım 6 — Kümeyi Doğrulama

Kurulum sırasında kümenin başarısız olduğu durumlar olabilir. Bu, master ile worker arasındaki bir ağ hatasından veya bir düğüm sorunundan kaynaklanabilir. Bu nedenle, uygulamaları zamanlamadan önce kümeyi doğrulamamız ve herhangi bir arıza oluşmadığından emin olmamız gerekir. Bunun için, düğümlerin hazır olduğundan emin olmak amacıyla master düğümünden kümenin mevcut durumunu kontrol etmeniz gerekecektir. Düğümler hazır değilse veya bağlantınız kesilirse aşağıdaki komutla bağlantıyı geri alabilirsiniz:

Kümenin durumunu almak için aşağıdaki komutları kullanın:

Bu komutun yürütülmesi biraz zaman alacaktır ve ardından aşağıdaki çıktıyı göreceksiniz:

get nodes

 

 

 

 

Kümenin bir parçası olan tüm düğümlerin hazır durumda olup olmadığını kontrol etmeniz gerekir. Birkaç düğümün Not Ready olarak STATUS değerine sahip olması, worker düğümlerinin kurulumlarını henüz tamamlamadığını gösterir. Ancak, kubectl get nodes komutunu yeniden çalıştırmadan ve güncellenmiş çıktıyı kontrol etmeden önce beş ila on dakika daha beklemelisiniz. Bazı düğümler hala durum olarak Not Ready gösteriyorsa, önceki adımları doğrulamalı ve komutları yeniden çalıştırmalısınız. Yalnızca düğümler STATUS için Ready değerine sahip olduğunda kümenin bir parçasıdırlar ve iş yüklerini çalıştırmaya hazırdırlar. 6. adımı başarıyla yürüttükten sonra kümeniz artık doğrulanmıştır. Şimdi küme üzerinde örnek bir Nginx uygulaması zamanlayalım.

Adım 7 — Küme Üzerinde Bir Uygulama Çalıştırma

Deployment Oluşturma

Kümeyi başarıyla oluşturduktan sonra, kümenize herhangi bir konteynerleştirilmiş uygulama dağıtabilirsiniz. Master düğümündeyseniz diğer konteynerleştirilmiş uygulamalar için aşağıdaki komutları kullanabilirsiniz. Ardından, adlandırılmış bir deployment oluşturmak için aşağıdaki komutu yürütün: nginx :

Docker imaj adını ve ilgili bayrakları (bağlantı noktaları ve birimler gibi) değiştirmeniz gerekir. İşleri tanıdık tutmak için, uygulamaların kümeye nasıl dağıtılabileceğini görmek amacıyla deployment'lar ve servisler kullanarak Nginx dağıtabilirsiniz.

Bir Kubernetes deployment'ı, Kubernetes'te uygulamalara bildirimsel güncellemeler sağlayan bir kaynak nesnesidir. Bir deployment; konteyner imajı, replikalar ve güncelleme stratejisi gibi bir uygulamanın yaşam döngüsünü tanımlamanıza olanak tanır. Bir deployment, istenen sayıda pod'un her zaman çalışır durumda ve kullanılabilir olmasını sağlar. Kümenin ömrü boyunca bir pod çökerse, onu yeniden başlatır. Güncelleme süreci de tamamen kaydedilir ve duraklatma, devam ettirme ve önceki sürümlere geri dönme seçenekleriyle sürümlendirilir. Nginx adında bir deployment oluşturmak için yukarıdaki komut, Docker kayıt defterindeki Nginx Docker İmajından tek bir konteyner içeren bir pod dağıtmanıza yardımcı olacaktır.

Node Port Kurulumu

Ardından, bir NodePort. NodePort kümenizdeki her düğümde açık bir bağlantı noktasıdır. Kubernetes, gelen trafiği şeffaf bir şekilde NodePort servisinize yönlendirir, uygulamanız başka bir düğümde çalışıyor olsa bile. Bunun için, uygulamayı herkese açık hale getirecek Nginx adında bir NodePort kaynağı oluşturmak üzere bu komutu kullanabiliriz:

Bir servis (service), bu pod'lara bir arayüz sunmaktan sorumlu olan ve küme içinden veya harici işlemler ile servis arasında ağ erişimi sağlayan başka bir Kubernetes nesnesidir. Pod'ların erişilebileceği tek bir IP adresi ve DNS adı sağlayan, pod'un üzerinde bir soyutlama olarak tanımlanabilir. Servis ile yük dengeleme yapılandırmasını yönetmek oldukça kolaydır.

Aşağıdaki komutu çalıştırın:

Bu, aşağıdakine benzer bir metin çıktısı verecektir:

get services

Çıktıyı aldıktan sonra, Kubernetes otomatik olarak şundan büyük rastgele bir port atayacaktır: 30000 ve aynı zamanda atanan portun başka bir servis tarafından zaten kullanılmadığından emin olacaktır. Yukarıdaki çıktının üçüncü satırı, Nginx'in çalıştığı portu almanıza yardımcı olacaktır.

Çalıştığını doğrulamak için yerel makinenizdeki bir tarayıcı üzerinden http://worker_1_ip:nginx_port veya http://worker_2_ip:nginx_port adresini ziyaret edin. Nginx'in tanıdık karşılama sayfasını göreceksiniz.

Deployment'ı Kaldırma

Nginx uygulamasını kaldırmak istiyorsanız, öncelikle master düğümünden nginx servisini silmeniz gerekir:

Uygulamanın nihayet silindiğini doğrulamak için bu komutu çalıştırmanız gerekir:

Aşağıdaki çıktıyı alacaksınız:

check services

Bundan sonra, aşağıdaki komutu kullanarak deployment'ı silmeniz gerekir:

Deployment'ın nihayet silinip silinmediğini doğrulamak için bu komutu kullanabilirsiniz:

get deployments

Sonuç:

Bu eğitim, Kubeadm ve Ansible kullanarak Ubuntu 18.04 üzerinde düzgün bir şekilde küme kurmanıza yardımcı olacaktır. Kümeniz kurulduğuna göre, artık kendi uygulamalarınızı ve servislerinizi kolayca dağıtmaya başlayabilirsiniz.

Süreçte size rehberlik edecek ek ayrıntıları içeren bağlantıların listesi aşağıdadır:

  1. Uygulamaları Dockerize Etme – Bu bağlantı, Docker kullanarak uygulamaların nasıl yükleneceği konusunda size rehberlik edecek örnekler içerir. PostgreSQL'i, bir CouchDB servisini vb. Dockerize etmek gibi.
  2. Pod Genel Bakış – Bu bağlantı, bir pod'un nasıl kullanılacağı, pod'ların işleyişi ve pod'ların diğer Kubernetes nesneleriyle nasıl ilişkili olduğu hakkında ayrıntıları gösterir. Pod'lar Kubernetes'in önemli bir parçasıdır, bu nedenle onları anlamak görevinizde başarılı olmanıza yardımcı olacaktır.
  3. Deployment'lara Genel Bakış – Deployment'lar hakkında bilgi edinmenize yardımcı olacaktır. Bir deployment, Pod'lar ve ReplicaSet'ler için bildirimsel güncellemeler sağlar. Bir deployment'ı nasıl güncelleyeceğinizi, devredeceğinizi (roll over) ve geri alacağınızı (roll back) öğreneceksiniz.
  4. Servislere Genel Bakış - Bu bağlantı, Kubernetes kümelerinde sıkça kullanılan bir diğer nesne olan servisler hakkında size rehberlik edecektir. Kubernetes'teki bir servis, mantıksal bir Pod kümesini ve bunlara erişebileceğiniz bir politikayı tanımlayan bir soyutlamadır. Servis türlerini ve sahip oldukları seçenekleri anlamak, hem durumsuz hem de durum bilgisi olan uygulamaları çalıştırmak için gereklidir.

Ayrıca, Docker ve Kubernetes'e odaklanan ve şu adreste bulabileceğiniz diğer eğitimlerimize de göz atın: blogumuz:

Ayrıca şu gibi birçok diğer önemli kavram da vardır: Birimler, Ingress'ler, ve Sırlar üretim uygulamalarını dağıtırken kullanabileceğiniz.

Keyifli Kodlamalar!

author

Manpreet Singh

Yazar · CloudSigma

Preslav Dobrev, CloudSigma'da Kreatif Tasarımcı olarak görev yapmakta olup geleneksel ve yenilikçi pazarlama kanallarını kullanarak tutarlı bir kurumsal kimlik oluşturmaya odaklanmaktadır. Sanatsal vizyonu stratejik pazarlamayla harmanlayarak etkili marka anlatıları oluşturma konusunda oldukça yeteneklidir.

Yorumlar

Henüz yorum yapılmamış. İlk siz olun.