‫Tamam. Bu ders bir öncekinin bittiği yerden
‫başlıyor. Eğer buna yeni başlıyorsanız
‫ve sonuncuyu atladıysanız, ona geri dönün
‫çünkü buna başlamak için orada oluşturduğumuz Dağıtıma ihtiyacınız olacak.
‫Bir kubectl get all yaptığımda, burada
‫beş replika kümesine sahip bir Deployment'ım
‫olduğunu görmeliyim.
‫Beş bölmeyi göreceksiniz.
‫O zaman her zaman orada olan Kubernetes varsayılan hizmetine
‫sahip olursunuz. Ardından httpenv
‫küme IP hizmeti.
‫Elbette farklı IP adresleriniz ve farklı pod adlarınız
‫olabilir. Olmamız gereken yer orası.
‫Elimizde bu Dağıtım var.
‫Diğerlerinin httpenv kolay adıyla erişebilmesi için kümenin
‫içinde bir IP adresi oluşturduk çünkü bu hizmet
‫adıdır.
‫Ana bilgisayar IP'sinde harici olarak açığa çıkan
‫bir tane oluşturalım. Bu, belki bir veri merkezinde
‫ya da yük dengeleyicinizin olmadığı bir yerde olsaydınız,
‫birazdan bahsedeceğimiz yük dengeleyici hizmetiyle kontrol edebilirdiniz.
‫Temel olarak, bu durumda, Kubernetes kümenizin
‫yüksek aralığında bir yerde dışarıdan içeriye konuşmak için
‫kullanabileceğiniz bağlantı noktaları
‫aldığınız bir NodePort yapmak istersiniz.
‫Yani harici bir hizmetten erişebilecek,
‫değil mi? Varsayılan olarak 80 numaralı bağlantı noktasında olmayacaktır.
‫NodePorts'un yüksek bağlantı noktaları olması gerekir,
‫bu nedenle genellikle bunun önüne harici bir yük dengeleyici
‫veya bunu sizin için yönetecek otomatik bir hizmet gibi bir şey
‫koyarsınız. Bu durumda, tekrar bir kubectl
‫expose yapabilirim.
‫Son yaptığımıza benzeyecek.
‫dağıtım httpenv.
‫İfşa etmemiz gereken kişi bu.
‫Yine 8888 numaralı bağlantı noktasını gireceğiz.
‫Ancak, buna yeni bir isim vereceğiz çünkü
‫zaten httpenv adında bir tane var.
‫Bu yüzden, bağlantı noktası
‫olmayan bir httpenv-np çağıracağız.
‫Bu şekilde, zaten orada bulunan küme IP'si ile yan
‫yana çalışacaktır.
‫Ardından türü NodePort olarak değiştireceğiz.
‫NodePort türünü fark edeceksiniz, çünkü isterseniz manuel
‫olarak belirleyebileceğimiz varsayılan türdür.
‫Varsayılan tür küme IP'sidir.
‫Eğer geri dönüp kubectl get services yaparsam, orada
‫NodePort türünde yeni
‫bir tane göreceksiniz.
‫Sağ taraftaki bağlantı noktaları hakkında konuşalım.
‫Bu bağlantı noktaları, ortada iki nokta üst üste olduğunda,
‫Docker ve Swarm'da göreceğinizin tam tersidir.
‫Soldaki bağlantı noktası, bu durumda,
‫kümenin içinde, konteynerin içinde listelenen bağlantı
‫noktasıdır.
‫Sağdaki bağlantı noktası ise düğümlerinizde bulunan ve
‫dış dünyaya açık olan bağlantı noktasıdır.
‫Sağdaki portun nereden geldiğini merak edebilirsiniz.
‫Bu bağlantı noktası, konteyner kümenizde önceden ayarlanmış
‫olan NodePorts için varsayılan bir aralıktadır.
‫Bu yüksek bir aralık. Buradaki umut, herhangi bir çatışma
‫olmaması, değil mi? Sisteminizde varsayılan olarak
‫bu bağlantı noktalarında çalışan başka bir şey olmadığını.
‫Çünkü genellikle 8888 gibi düşük bağlantı noktaları, başka bir şey tarafından kullanılabilecek
‫kadar yaygındır. O zaman gerçekten düşük aralıktaki
‫tüm bağlantı noktalarına genellikle yalnızca root tarafından
‫erişilebilir. 1024 ve altındaki bağlantı noktaları.
‫Burada dikkat edilmesi gereken birkaç husus var.
‫Birincisi, küme IP'sini göreceksiniz.
‫Bu NodePort hizmetini oluşturduğumuzda küme IP'sini
‫söylememiş olsak da.
‫NodePort demiştik.
‫Bu hizmetler birbirine eklenebilir.
‫Bunun anlamı, küme IP'si ile başlayıp NodePort'a ve
‫ardından yük dengeleyici isteğe bağlı hizmetine
‫gitmesidir. Her biri bu listede kendi üzerindeki
‫hizmetleri oluşturacaktır.
‫Bu da bir NodePort oluşturduğumda, benim için bir küme
‫IP uç noktası oluşturacağı anlamına geliyor çünkü
‫bu şekilde bağlanıyor. Düğümün yüksek bağlantı noktasındaki
‫bu bağlantı noktasına gelen bağlantıyı alır ve daha
‫sonra bu hizmet için küme IP'sine yönlendirir.
‫Elbette Kubernetes'teki çoğu şey gibi tüm bunlar da değiştirilebilir
‫ve özelleştirilebilir.
‫Değiştirebileceğiniz şeylerden biri de bağlantı noktası aralığıdır.
‫Bunlardan biri, küme IP'sinden kaçınabilmenizdir.
‫Bu şeylerin çoğunu yapabilirsiniz, ancak çoğunu yalnızca
‫YAML'de yapabilirsiniz, buna daha sonra değineceğiz.
‫Bunun gibi komut satırında bir şeyler yaparken,
‫kullanabileceğimiz seçeneklerin sayısı sınırlıdır.
‫Bu seçeneklerin izin verdiğinin ötesine geçerseniz, YAML yapmaya
‫başlamanız gerekecektir. Bu konu hakkında kursun ilerleyen bölümlerinde
‫konuşacağız. TAMAM. Eğer Linux kullanıyorsanız, bu
‫NodePort'a artık localhost üzerinden erişebilirsiniz.
‫Dolayısıyla, bu bağlantı noktasını cURL etmek için localhost'u veya ana bilgisayar IP'sini
‫kullanabilirsiniz. Hangi limana sahipseniz.
‫Benimki 32334 olduğu için muhtemelen benimkiyle aynı bağlantı
‫noktası olmayacaktır.
‫Docker Desktop kullanıyorsanız,
‫Docker Desktop'ta yerleşik olarak
‫bulunan vpnkit adlı bir şeyle, bunu Windows veya Mac makinenizdeki
‫localhost'a bağlayacak bir kolaylık katmanı sağlayacaktır.
‫Burada Mac'imde oturup localhost 32334'e cURL
‫yapabilirim.
‫Küme IP'sini doğrudan cURL'lemişim gibi aynı
‫yanıtı alıyorum. Bunun burada Docker Desktop'ta
‫olmasının nedeni, hizmete erişebilmek için
‫daha önce yaptığımız gibi bu pod'lara atlamak zorunda
‫kalmamanızdır. Bu, Kubernetes hizmetlerinizin makinelerinizde
‫görünmesini sağlamanın bir yoludur, böylece işleri test edebilirsiniz,
‫değil mi? Dolayısıyla, Kubernetes
‫içinde geliştirme veya test yapıyorsanız, bir NodePort yapabilir ve ana
‫bilgisayarınızda biraz rastgele olacak olan bu bağlantı noktasına
‫gidebilirsiniz.
‫Yine, burada tam bir bağlantı noktası belirtebilirsiniz, ancak bunu
‫daha sonra yapacağımız YAML'de yapmanız gerekir.
‫Docker Desktop kullanıyorsanız diğer seçenek, yerleşik
‫bir yük dengeleyici hizmetiyle birlikte gelmesidir.
‫Daha önce bu dört hizmet türünden bahsederken, yük
‫dengeleyicinin varsayılan olarak yerleşik olmadığından
‫ve bunu kullanmanın tek yolunun harici bir hizmet, genellikle
‫de bir bulut hizmeti olduğundan bahsettiğimi hatırlıyorsunuz, değil mi?
‫Amazon'da bu ELB'ler ve ALB'ler olacaktır.
‫DigitalOcean ile, bu onların yük dengeleyicileri ile olacaktır.
‫Bu eklentiyi Kubernetes'inize eklemeniz gerekir, böylece bu
‫harici yük dengeleyicilerle çalışabilir.
‫Esasen, kube API'si bu yük dengeleyiciyi kontrol etmek için onların
‫API'si ile konuşur.
‫Docker Desktop kullanıyorsanız, bu komutu deneyebilirsiniz.
‫Bu hizmet için httpenv-lb
‫diyeceğiz ve türünü yük dengeleyici olarak değiştireceğiz.
‫Bir kubectl get service işlemi yaparsak, bu Deployment için üç yük
‫dengeleyici görmemiz gerekir.
‫Yine, Docker Desktop üzerindeyseniz,
‫üçünü de görebileceksiniz. Eğer Linux kullanıyorsanız ya da Minikube
‫gibi bir şey kullanıyorsanız, sadece iki tane görürsünüz.
‫Her yük dengeleyici, teknik olarak uzak bir API olan üçüncü taraf
‫bir eklenti veya hizmet gibi olduğundan, yük dengeleyicilerin tümü
‫farklı özelliklere ve desteklenen şeylere sahip olacaktır.
‫Ne
‫yapacaklarını anlamak için belgelerine bakabilirsiniz.
‫Bu durumda, Docker Desktop ile yaptığımız tek şey, Dağıtım'ın
‫bir parçası olan 8888 numaralı bağlantı noktasını söylemektir
‫ve Docker'ın yük dengeleyici hizmet eklentisi daha sonra
‫bunu 8888 numaralı bağlantı noktasında
‫yayınlayacaktır.
‫Buradaki güzel şey, Kubernetes'inizi varsayılan ayarın
‫dışında belirli bir bağlantı noktasında bulundurmanın
‫tek yolunun bu olmasıdır, değil mi?
‫Dolayısıyla, NodePort'u yaptığımızda, 30000 aralığındaki
‫bu setle tanımlandık veya sınırlandırıldık.
‫Compose,
‫Swarm ya da Docker'ın yerel olarak çalıştırılması gibi bir şey yapmak
‫istiyorsanız ve bunu sadece 80 ya da başka bir bağlantı noktasında
‫çalıştırmak istiyorsanız, artık Docker Desktop ile yerleşik
‫Kubernetes'i kullanarak bu yük dengeleyiciyi yapabilir ve sadece o bağlantı
‫noktasını yazabilirsiniz.
‫Şimdi Mac veya Windows'ta cURL localhost 8888
‫yazabilir ve bu yanıtı geri alabilirim.
‫Yük
‫dengeleyici için hala diğer bağlantı noktasına sahip olduğunu fark edeceksiniz.
‫Yine, bunun nedeni, en azından benimkinde,
‫oradaki 32 aralığının, oluşturduğu yerleşik NodePort
‫olmasıdır. Teknik olarak arka planda,
‫bunların üç farklı katman olduğunu unutmayın, bu nedenle
‫yük dengeleyici paketimi kabul ediyor, ardından NodePort'a
‫iletiyor ve ardından NodePort bunu küme IP'sine iletiyor.
‫Yük
‫dengeleyicinin localhost'umda kullandığı bağlantı noktası
‫bu olmasa bile, yük dengeleyici için her zaman dört 8'in
‫yanında gösterilen NodePort olacaktır.
‫Bir sonraki derse geçmeden önce, az önce yaptığımız
‫her şeyi temizleyelim. Bir sürü şey yarattık.
‫Bu komutlar, silme komutunu aynı anda birden fazla nesneyle
‫kullanabileceğinizi gösterir.
‫Birbirleriyle ilişkili nesneler olmaları gerekmez.
‫Aslında, isterseniz tek bir komutla bunların büyük
‫bir listesini yapabilirsiniz.