Bloğa geri dön

Ubuntu 20.04 üzerinde Kubernetes Nasıl Kurulur ve Kullanılır

Ubuntu 20.04 üzerinde Kubernetes Nasıl Kurulur ve Kullanılır

Giriş

Kubernetes açık kaynaklı bir araçtır ve konteyner orkestrasyonunda kritik öneme sahiptir. Kubernetes, çeşitli bulut ortamlarında ve hatta şirket içi sunucularda kümeleri büyük ölçekte orkestre ederek ve yöneterek çalışır. Küme, konteynerleştirilmiş uygulamaları ve hizmetleri çalıştırmak için tasarlanmış bir ana makine grubudur. Bir kümenin çalışması için en az iki düğüme ihtiyacı vardır – biri master düğüm ve bir worker düğüm. Ölçeklenebilirliği göz önünde bulundurarak, kümeyi ihtiyaç duyulduğu kadar worker düğümü ile genişletme seçeneğine sahipsiniz.

Kubernetes'te bir node bir sunucuyu ifade eder. Master node, kümenin durumunu yöneten bir sunucudur. Worker node'lar ise iş yüklerini çalıştıran sunuculardır – bunlar genellikle konteynerleştirilmiş uygulamalar ve servislerdir.

Bu rehber, Ubuntu 20.04 üzerinde iki node'dan oluşan bir Kubernetes kümesini kurma ve dağıtma adımlarında size yol gösterecektir. Belirtildiği gibi, Kubernetes ile çalışırken iki node'a sahip olmak en temel yapılandırmadır. Temel bilgileri anladıktan sonra daha fazla worker node ekleme seçeneğine de sahipsiniz. Ayrıca, master node'un worker node'u kontrol etmesini sağlamak için iki sunucuyu nasıl birbirine bağlayacağınızı da göstereceğiz.

Yapılandırmamızı test etmek için, Docker konteynerinde çalışan bir Nginx web sunucusunu kümeye dağıtacağız. Bu, Kubernetes'in tipik bir gerçek hayat uygulamasıdır. Kubernetes'in aşağıdakiler gibi bazı tanımlayıcı bileşenleri hakkında daha fazla bilgi edineceksiniz: kubectl ve kubeadm ilerledikçe. Ayrıca, Kubernetes platformunun temellerine aşina olmak için öncelikle Kubernetes araç kiti temellerini tanıma eğitimimize göz atmanız tavsiye edilir.

Şimdi başlayalım!

Önkoşullar

Şu işletim sistemi üzerinde çalışan iki adet sunucu hazırlamanız gerekecektir: Ubuntu 20.04. En iyi performans için Kubernetes için minimum sistem gereksinimleri 2 GB RAM ve 2 CPU'dur. Bu Ubuntu sunucunuzu kurmanıza yardımcı olacak adım adım eğitim kılavuzunun 1 ila 4. adımlarını takip edebilirsiniz. CloudSigma üzerinde. Bir sunucu master düğümü, diğeri ise worker düğümü olacak. İki sunucumuzu uygun bir şekilde kubernetes-master ve kubernetes-worker. Bu, eğitimi takip etmeyi kolaylaştırır. Ancak, tercih ettiğiniz ana makine adlarını seçmekte özgürsünüz.

  • Her iki düğümde de sudo yetkilerine sahip ve yukarıdaki eğitimde belirtilen komutları çalıştırmak için kullanacağımız bir kullanıcı eklediğinizden emin olun. Talimatlar için bu Linux sudoers dosyasını yapılandırma eğitimini takip edin.

  • Ağ bağlantısı – kümedeki sunucular iletişim kurabilmelidir. VM'lerinizi CloudSigma üzerinden dağıttığınızda, varsayılan olarak genel bir IP ile internete bağlanacaklardır. Yerel bir ağdan çalışıyorsanız, her sunucudaki /etc/hosts dosyanızı düzenlemeniz ve bunları uygun şekilde bağlamanız gerekebilir.

  • Şunu kurmanız ve etkinleştirmeniz gerekecektir: Docker düğümlerin her birinde. Kubernetes, pod'lar içinde konteynerleri çalıştırmak için bir konteyner çalışma zamanına güvenir. Seçilebilecek başka konteyner platformları olsa da, bu eğitimde Docker kullanacağız. Docker, Ubuntu'nun ihtiyaç duyduğu çalışma zamanı ortamını sağlayacaktır. 1, 2 ve 3. adımlar için şu rehberimizi takip edebilirsiniz: Docker'ı kurma ve çalıştırma eğitimi.

1. Adım: Kubernetes Kurulumu

Bu adımda Kubernetes'i kuracağız. Tıpkı Docker ile ön gereksinimler bölümünde yaptığınız gibi, Kubernetes'i kurmak için komutları her iki düğümde de çalıştırmalısınız. Şunu kullanın: ssh her iki düğümde de oturum açıp devam etmek için. İlk olarak apt-transport-https paketini yükleyerek başlayacaksınız. Bu paket, http ve https ile Ubuntu’nun depolarında çalışmayı sağlar. Ayrıca, curl paketini de yükleyin, çünkü sonraki adımlar için gerekli olacaktır. Aşağıdaki komutu çalıştırın:

Ardından, Kubernetes imzalama anahtarını aşağıdaki komutu çalıştırarak her iki düğüme de ekleyin:

Ardından, Kubernetes deposunu aşağıdaki komutu kullanarak her iki düğümde de bir paket kaynağı olarak ekliyoruz:

Bundan sonra, düğümleri güncelleyin:

  • Kubernetes araçlarını kurun

Güncelleme tamamlandığında Kubernetes'i kuracağız. Bu, Kubernetes'i oluşturan çeşitli araçların kurulmasını içerir: kubeadm, kubelet, kubectl, ve kubernetes-cni. Bu araçlar her iki düğüme de kurulur. Her bir aracı aşağıda tanımlıyoruz:

  • kubelet – her düğümde çalışan ve konteyner çalışma zamanındaki iş yüklerini başlatmak için ana düğüm ile iletişimi yöneten bir aracıdır. kubelet'i kurmak için aşağıdaki komutu girin:

  • kubeadm – Kubernetes projesinin bir parçasıdır ve bir Kubernetes kümesini başlatmaya yardımcı olur. kubeadm'i kurmak için aşağıdaki komutu girin:

  • kubectl – Kubernetes kümeleri içinde komutlar çalıştırmanızı sağlayan Kubernetes komut satırı aracıdır. kubectl'i kurmak için aşağıdaki komutu yürütün:

  • kubernetes-cni – konteynerlerin iletişim kurabilmesini ve veri alışverişinde bulunabilmesini sağlayarak konteynerler içinde ağ oluşturmayı etkinleştirir. Kurmak için aşağıdaki komutu yürütün:

İsteğe bağlı olarak, dördünü de tek bir komutla kurabilirsiniz:

Adım 2: Swap Belleğini Devre Dışı Bırakma

Kubernetes, swap belleği kullanan bir sistemde çalışamaz. Bu nedenle, master düğümünde ve tüm worker düğümlerinde devre dışı bırakılmalıdır. Swap belleğini devre dışı bırakmak için aşağıdaki komutu çalıştırın:

Bu komut, sistem yeniden başlatılana kadar swap belleğini devre dışı bırakır. Yeniden başlatmalardan sonra bile kapalı kalmasını sağlamalıyız. Bu işlem master ve tüm worker düğümlerinde yapılmalıdır. Bunu, fstab dosyasını düzenleyerek ve /swapfile satırını bir ile yorum satırı haline getirerek#. Aşağıdaki komutu girerek dosyayı nano metin düzenleyici ile açın:

Dosya içinde, swapfile satırını aşağıdaki ekran görüntüsünde gösterildiği gibi yorum satırı yapın:

install Kubernetes fstab swap disable

Eğer swapfile satırını görmüyorsanız, bunu göz ardı edin. Düzenlemeyi tamamladığınızda dosyayı kaydedip kapatın. Her iki düğüm için de aynı işlemi uygulayın. Artık sunucunuz yeniden başlatılsa bile takas belleği ayarları kapalı kalacaktır.

Adım 3: Benzersiz Hostname'leri Ayarlama

Daha kolay tanımlama için düğümlerinizin benzersiz ana bilgisayar adlarına sahip olması gerekir. Çok sayıda düğüme sahip bir küme dağıtıyorsanız, bunu çalışan düğümleriniz için node-1, node-2 vb. gibi tanımlayıcı adlar belirleyecek şekilde ayarlayabilirsiniz. Daha önce de belirttiğimiz gibi, düğümlerimizi şu şekilde adlandırdık: kubernetes-master ve kubernetes-worker. Bunları sunucuyu oluştururken ayarlamıştık. Ancak, komut satırından henüz yapmadıysanız kendinizinkini ayarlayabilir veya düzenleyebilirsiniz. Master düğümündeki ana bilgisayar adını düzenlemek için aşağıdaki komutu çalıştırın:

Worker düğümünde aşağıdaki komutu çalıştırın:

Mevcut terminal oturumunu kapatabilir ve ssh ile sunucuya tekrar bağlanarak değişiklikleri görebilirsiniz.

Adım 4: Iptables'ın Köprülenmiş Trafiği Görmesini Sağlama

Master ve worker düğümlerinin köprülenmiş trafiği doğru şekilde görmesi için, net.bridge.bridge-nf-call-iptables değerinin yapılandırmanızda 1 olarak ayarlandığından emin olmalısınız. İlk olarak, br_netfilter modülünün yüklü olduğundan emin olun. Bunu şu komutu çalıştırarak doğrulayabilirsiniz:

İsteğe bağlı olarak, bunu şu komutla açıkça yükleyebilirsiniz:

Şimdi, değeri 1 olarak ayarlamak için bu komutu çalıştırabilirsiniz:

Adım 5: Docker Cgroup Sürücüsünü Değiştirme

Varsayılan olarak Docker, cgroupfs cgroup sürücüsü olarak kurulur. Kubernetes, Docker'ın çalışmasını with systemd sürücüsüyle önermektedir. Bu adımı atlar ve bir sonraki adımda kubeadm'i başlatmaya çalışırsanız, terminalinizde aşağıdaki uyarıyı alırsınız:

Hem master hem de worker düğümlerinde, cgroupdriver değerini aşağıdaki komutlarla güncelleyin:

Ardından, sistem başlangıcında Docker'ı yeniden başlatmak ve etkinleştirmek için aşağıdaki komutları çalıştırın:

Bu ayarlandıktan sonra, eğlenceli kısma, yani Kubernetes kümesini dağıtmaya geçebiliriz!

Adım 6: Kubernetes Master Düğümünü Başlatma

Bir Kubernetes kümesi dağıtmanın ilk adımı, master düğümünü ayağa kaldırmaktır. Master düğümünüzün terminalindeyken, kubernetes-master'ını başlatmak için aşağıdaki komutu çalıştırın:

Yukarıdaki komutu çalıştırırsanız ve sisteminiz, Gereksinimler bölümünde açıklandığı gibi minimum RAM veya CPU gibi beklenen gereksinimleri karşılamıyorsa, bir uyarı alırsınız ve küme başlatılmaz:

install Kubernetes InitError

Not: Üretim ortamı için kurulum yapıyorsanız, Kubernetes'in sorunsuz çalışması için her zaman minimum gereksinimleri karşılamak iyi bir fikirdir. Ancak, bu eğitimi öğrenme amacıyla takip ediyorsanız, hata uyarılarını yoksaymak için kubeadm init komutuna aşağıdaki bayrağı ekleyebilirsiniz:
sudo kubeadm init --ignore-preflight-errors=NumCPU,Mem --pod-network-cidr=10.244.0.0/16

Aşağıdaki ekran görüntüsü başlatmanın başarılı olduğunu gösteriyor. Ayrıca 10.244.0.0 IP'sine sahip pod ağını belirtmek için bir bayrak ekledik. Bu, kube-flannel'in kullandığı varsayılan IP'dir. Bir sonraki adımda pod ağı hakkında daha fazla konuşacağız.

install Kubernetes Kubeadm Init

Çıktıda, kubeadm join komutunu (IP adresimizi gizledik) ve worker node'da ve bu kümeye katılmasını istediğiniz diğer tüm worker node'larda çalıştıracağınız benzersiz bir token'ı görebilirsiniz. Ardından, daha sonra worker node'da kullanacağınız için bu komutu kopyalayıp yapıştırın.

Çıktıda Kubernetes, kümeyi kullanmaya başlamadan önce master düğümünde normal bir kullanıcı olarak çalıştırmanız gereken bazı ek komutları da görüntüler. Bu komutları çalıştıralım:

Artık master düğümünü başlattık. Ancak, worker düğümlerini eklemeden önce master düğümünde pod ağını da kurmamız gerekiyor.

Adım 7: Pod Ağı Dağıtımı

Bir pod ağı, sunucular arasındaki iletişimi kolaylaştırır ve Kubernetes kümesinin düzgün çalışması için gereklidir. Resmi belgelerdeki Kubernetes Küme Ağ İletişimi bölümünden daha fazla bilgi edinebilirsiniz. Bu eğitim için Flannel pod ağını kullanacağız. Flannel, Kubernetes gereksinimlerini karşılayan basit bir katman ağıdır.

Pod ağını dağıtmadan önce güvenlik duvarı durumunu kontrol etmemiz gerekir. Eğer Ubuntu sunucunuzu kurma eğitiminin 5. adımını takip ettikten sonra güvenlik duvarını etkinleştirdiyseniz, öncelikle bir güvenlik duvarı kuralı ekleyerek şu port için istisna tanımlamalısınız: 6443 (Kubernetes için varsayılan port). Aşağıdaki ufw komutlarını hem master hem de worker düğümlerinde çalıştırın:

Bundan sonra, pod ağını master düğümünde dağıtmak için aşağıdaki iki komutu çalıştırabilirsiniz:

Flannel ağının yüklenmesi ortamınıza bağlı olarak birkaç saniye ile bir dakika arasında sürebilir. Her şeyin çalıştığını doğrulamak için aşağıdaki komutu çalıştırın:

Her şey başarılı olduysa, komutun çıktısı tüm hizmetlerin durumunu çalışıyor olarak göstermelidir:

install Kubernetes Pod Status

Ayrıca bileşenlerin sağlık durumunu get component status komutunu kullanarak görüntüleyebilirsiniz:

install Kubernetes Component Status

Bu komutun kısa bir biçimi vardır cs:

Component Status Short

Sağlıksız (unhealthy) durumunu görürseniz, aşağıdaki dosyaları düzenleyin ve (spec->containers->command) kısmında bu ifadeyi içeren satırı silin - --port=0 :

Aynı işlemi bu dosya için de yapın:

Son olarak, Kubernetes servisini yeniden başlatın:

Adım 8: Worker Node'ları Kubernetes Kümesine Dahil Etme

With the kubernetes-master düğümü çalışır durumda ve pod ağı hazır olduğunda, worker düğümlerimizi kümeye dahil edebiliriz. Bu eğitimde yalnızca bir worker düğümümüz var, bu nedenle onunla çalışacağız. Daha fazla worker düğümünüz varsa, kümeye dahil etmek için her zaman aşağıda açıklayacağımız adımların aynısını takip edebilirsiniz.

İlk olarak, ayrı bir terminal oturumunda worker düğümünüze giriş yapın. kubeadm join komutunu kullanacaksınız. Bu komut, master düğümünü Adım 6'da başlattığımızda terminalinizde gösterilmişti. Komutu çalıştırın:

Küme katılımı tamamlandığında aşağıdaki ekran görüntüsüne benzer bir çıktı görmelisiniz:

Worker Join

Katılma işlemi tamamlandıktan sonra, master node terminaline geçin ve worker node'unuzun kümeye katıldığını doğrulamak için aşağıdaki komutu çalıştırın:

Yukarıdaki komutun çıktısına ait ekran görüntüsünde, worker node'un kümeye katıldığını görebiliriz:

install Kubernetes K8S Node Status

Adım 9: Kubernetes Kümesine bir Uygulama Dağıtma

Bu noktada, bir Kubernetes kümesini başarıyla kurdunuz. Üzerine bir servis dağıtarak kümeyi kullanılabilir hale getirelim. Nginx, binlerce bağlantıda bile inanılmaz hızlar sunan popüler bir web sunucusudur. Bu kurulumu gerçek hayattaki bir uygulamada kullanabileceğinizi kanıtlamak için Nginx web sunucusunu kümeye dağıtacağız.

Nginx için bir Kubernetes dağıtımı oluşturmak üzere master node üzerinde aşağıdaki komutu çalıştırın:

Oluşturulan deployment'ı, describe deployment komutunu kullanarak görüntüleyebilirsiniz:

Nginx Deployment

To make the nginx servisini internet üzerinden erişilebilir hale getirmek için aşağıdaki komutu çalıştırın:

NodePort Svc Create

Yukarıdaki komut, Nginx deployment'ı için dışa açık bir servis oluşturacaktır. Bunun bir nodeport deployment'ı olması nedeniyle, Kubernetes servise aralığında bir port atar.32000+.

Mevcut servisleri şu komutu çalıştırarak alabilirsiniz:

NodePort Svc Status

Atanan portumuzun olduğunu görebilirsiniz32264. Bir sonraki adımda kullanmak üzere terminalinizde görüntülenen portu not edin.

Nginx servis dağıtımının başarılı olduğunu doğrulamak için master düğümünden worker düğümüne bir curl çağrısı yapın. Worker düğümünüzün IP'sini ve yukarıdaki komuttan aldığınız portu değiştirin:

Varsayılan Nginx çıktısını görmelisiniz: index.html:

Curl Nginx Svc

İsteğe bağlı olarak, tarayıcınızda worker node IP adresi ve port kombinasyonunu ziyaret edebilir ve varsayılan Nginx dizin sayfasını görüntüleyebilirsiniz:

install Kubernetes Nginx Webpage

Bir dağıtımı silmek için dağıtımın adını belirtebilirsiniz. Örneğin, bu komut dağıtımımızı silecektir:

Artık kümemizi başarıyla test ettik!

Sonuç

Bu eğitimde, Ubuntu 20.04 üzerinde bir Kubernetes kümesi kurmayı öğrendiniz. Bir master ve worker düğümünden oluşan bir küme kurdunuz. Kubernetes araç setini yüklemeyi başardınız, bir pod ağı oluşturdunuz ve worker düğümünü master düğümüne bağladınız. Ayrıca kümeye temel bir Nginx web sunucusu dağıtımı yaparak konseptimizi test ettik. Bu, Ubuntu üzerinde Kubernetes kümeleriyle çalışmak için bir temel oluşturacaktır.

Biz sadece tek bir worker node kullanmış olsak da, kümenizi dilediğiniz kadar node ile genişletebilirsiniz. Eğer Ansible gibi otomasyon araçlarıyla DevOps konusunda daha derinlere inmek isterseniz, Ansible ve Kubeadm ile Kubernetes kümesi kurulumu gerçekleştirmeyi derinlemesine inceleyen bir eğitimimiz var, göz atın. Eğer bir Kubernetes kümesinde PHP uygulamasının nasıl dağıtılacağını öğrenmek istiyorsanız bu eğitime göz atın.

Keyifli Çalışmalar!

author

Pranay Kapgate

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.