‫Dört tür Kubernetes hizmetinden bahsettiğimize
‫göre, şimdi komut satırından bazılarını oluşturalım.
‫Öncelikle, bu hizmetleri yönlendirebileceğimiz bir Deployment
‫oluşturmamız gerekecek. Daha sonra bu Deployment'ı işaret
‫etmek için farklı hizmet türleri oluşturacağız.
‫Bu demoda, Kubernetes ortamınızda iki farklı
‫kabuk veya farklı pencereler oluşturacağız, böylece
‫bir watch komutu ile neler olduğunu görürken diğer komutlarla
‫da neler olduğunu görebileceğiz.
‫Tamam. Benim durumumda, biri diğerinin üzerinde
‫olmak üzere iki pencerem var. Bunu nasıl yaptığınız gerçekten önemli değil.
‫Sadece ne yaptığımı görmenizi kolaylaştırmak için.
‫Kubectl get pods komutunu kullanacağız.
‫Bir -w ekleyeceğiz.
‫Bu, çalışmaya devam edeceği ve zaman içinde işler değiştikçe
‫bize göstereceği bir saat komutu gibidir.
‫Bunun birden fazla, farklı kubectl komutunda bir seçenek olduğunu
‫fark edeceksiniz. Arka planda neler olduğunu görmek için
‫bunu burada yapacağız.
‫pod'ları -w ile alın.
‫Sonra diğer penceremde bir Dağıtım oluşturacağız.
‫dağıtım oluşturun. Buna httpenv adını vereceğiz.
‫Bunun kullandığı şey çok basit bir HTTP Web sunucusudur
‫ve esasen bir cURL ile vurduğunuzda, komut satırından
‫aldığı tüm ortam değişkenlerini geri gönderir.
‫Bu, sadece çalıştığını doğrulamak için değil, aynı zamanda
‫podun adı gibi ilginç değerleri geri almak için de çok basit ve
‫ilkel bir yoldur.
‫Bunun gibi şeyler.
‫Şimdi bunu oluşturduğumuza göre, en üstte kapsayıcı
‫oluşturduğunu göreceksiniz.
‫Bunu daha çok, bir şey her durum değiştirdiğinde veya durum değiştiğinde ya da
‫buna benzer bir şey olduğunda, bunu bir günlük dosyası gibi sayfanın
‫aşağısına yazdırılan yeni bir satır olarak göreceğiniz
‫bir günlük gibi düşünün.
‫Son satırda göreceksiniz, artık pod'un çalışır
‫durumda olduğunu gösteriyor.
‫Bu pod'lardan daha fazlasını döndürelim, böylece bir saniye
‫sonra oluşturacağımız hizmetimizin arkasında çalışan
‫bu konteynerlerden birden fazlasına sahip olabiliriz.
‫scale komutu bir Deployment ile kullanışlıdır çünkü replika
‫sayısını tek ve kolay bir komutla değiştirmemizi
‫sağlar. Elbette, Kubernetes'teki her
‫şeyde bunu yapmanın birden fazla yolu vardır, ancak buradaki
‫durumumuzda en kolay yol budur.
‫Tamam. Şimdi dört pod daha oluşturduğunu
‫ve bunları çalışıyor olarak gösterdiğini göreceksiniz.
‫Şimdi bu hizmeti oluşturacağız.
‫Bunun için expose komutunu kullanırız.
‫Bu durumda, hangi Deployment'ı açığa çıkaracağını ve bu Deployment'ın
‫dinlediği bağlantı noktasını söylüyoruz.
‫Bunun hiçbir kapsülü değiştirmediğini göreceksiniz çünkü bu,
‫kapsüllerin kendisiyle ilgili olmayan ek bir özellik
‫oluşturuyor.
‫Bu aslında varsayılan olarak bir küme IP'si oluşturacaktır.
‫Bu, küme IP tipi hizmettir.
‫Bunu Dağıtımın önünde oluşturacaktır.
‫Az önce oluşturduğumuz hizmeti kontrol edelim.
‫Burada iki tane görmelisiniz.
‫İlki Kubernetes uç noktası olacaktır.
‫Bu API için.
‫Ardından yeni oluşturduğumuz servisimizi göreceksiniz
‫ve tipi cluster IP. Küme IP'sinin yalnızca düğümlerin
‫ve diğer podların erişebilmesi için küme içinde kullanılabileceğini
‫unutmayın.
‫Bu IP adresine ulaşabiliriz, ancak bu nerede olduğumuza ve ona ulaşıp
‫ulaşamayacağımıza bağlıdır.
‫Bu IP adresine yalnızca düğümlerin kendisinden
‫veya küme içindeki diğer podlardan erişilebildiğinden.
‫Docker Desktop üzerindeyken, bunun Mac ve Windows'un ana işletim
‫sistemi üzerinde çalışmadığını hatırlarsanız.
‫Bu teknik olarak küçük bir Linux sanal makinesinde çalışıyor.
‫Bu durumda, bu kümede çalışan başka bir
‫pod'u çalıştırmamız gerekir, böylece
‫cURL yapabiliriz. Bir çoğaltma kümesi ile bir Dağıtım çalıştırmak istemiyoruz.
‫Bu durumda, gerçekten sadece tek bir pod çalıştırmak istiyoruz.
‫Bunu yapmanın en kolay yolu kubectl run kullanmaktır.
‫Alternatif bir jeneratör kullanacağız.
‫Bunu daha önceki hatadan hatırlayabilirsiniz.
‫Jeneratörlerin ne olduğundan birazdan bahsedeceğiz.
‫Bu komutta çok fazla şey oluyor, o yüzden parçalara
‫ayıralım. Daha önce gördüğünüz kubectl çalıştırması.
‫Üreteç, çalıştırma komutunun kullanmasını istediğimiz
‫şablon türüdür.
‫Gelecekteki bir derste bu konu hakkında biraz daha konuşacağız.
‫Pod şablonunu seçiyoruz çünkü yalnızca bir pod
‫çalıştırmak istiyoruz. Çoğaltma setleriyle veya başka bir şeyle tam bir
‫Dağıtım istemiyoruz. Buna tmp-shell diyeceğiz.
‫Bu seçeneklerden bazılarının docker run ile benzer
‫olduğunu fark edeceksiniz. Bu kasıtlı.
‫Kubectl run komutunun gelecekteki
‫hedeflerinden biri, daha çok bir docker run komutu gibi
‫davranmaktır. Aslında, daha sonra varsayılan olarak
‫nasıl sizin için bir pod oluşturacağından ve bu oluşturucu seçeneğini
‫kullanmanıza gerek kalmayacağından bahsedeceğiz.
‫Burada --rm kullanacağız, yani kapsül durduğunda
‫devam edin ve çıkarın.
‫Enter komutuna bastığımızda -it bize o podun
‫içine bir kabuk verir. O zaman --image bize hangi görüntüyü
‫tercih ettiğimizi söylüyor.
‫Bu durumda, içinde bir sürü farklı ağ ve Linux yardımcı programı olan netshoot
‫imajımı kullanıyoruz.
‫Bunlardan biri cURL.
‫Ardından çalıştır komutuyla cmd'yi ya da
‫konteynerin içinde çalışacak şeyi değiştirebiliriz.
‫Bunu bir boşlukla yaparız -- boşluk.
‫Bu, çalıştır komutuna seçeneklere bakmayı bırakmasını ve çift
‫tire işaretinden sonraki her şeyin bu kapsayıcıyı çalıştırdığımda
‫çalıştırılacak komut olduğunu söyler.
‫En üstte temp shell pod'unun göründüğünü ve şu anda çalışma
‫durumunda olduğunu ve bash istemimizle pod'da olduğumuzu
‫göreceksiniz.
‫Birazdan bahsedeceğimiz şey,
‫oluşturduğumuz hizmet adının bu hizmet için DNS
‫adının bir parçası haline gelmesidir.
‫Kullanabiliriz... Docker ve Swarm'da yaptığımıza
‫çok benzer şekilde, DNS ile almak için servis adını kullanabiliriz.
‫Unutmayın, 8888 numaralı bağlantı noktasında çalışıyor.
‫Bunu yaptığımızda, beklediğim
‫yanıtı alıyoruz. Bu httpenv yardımcı programı,
‫bu benzersiz kapsülün içinde bulunan makinedeki
‫tüm ortam değişkenlerini döker,
‫değil mi? Pod adının ana bilgisayar adı ve diğer Kubernetes
‫varsayılanları olduğunu göreceksiniz.
‫Bu yöntem, kubectl komut satırınız API
‫ile konuşabildiği sürece, herhangi bir kümede herhangi biriniz
‫için çalışacaktır, bu komut sizi bir kabuk içinde bu görüntüyü
‫çalıştıran yeni bir pod'a götürecektir.
‫Bu harika.
‫Ancak, Linux kullanıyorsanız, daha kolay bir yolu var.
‫Çünkü Kubernetes'in çalışma şekli, tüm düğümlerin ve konteynerlerin
‫varsayılan olarak birbirleriyle konuşabilmesidir.
‫Kubernetes'i
‫yerel makinede çalıştırdığınızı varsayarsak, üzerinde bulunduğunuz düğümün tüm bu
‫özel IP adreslerine erişimi vardır.
‫Sadece hizmet IP'sini cURL ile bulabilmeniz gerekir.
‫Kabuğumdan çıkıp tekrar bir kubectl get service
‫yapmama izin verin.
‫Küme IP'si için bu IP adresi ana bilgisayarınızdan çözümlenebilir
‫olmalıdır. Ana bilgisayarınız pod içinde yaptığımız
‫gibi DNS adını bilmeyecektir çünkü bu, kümenin
‫içinde olmaya özeldir.
‫Ancak, IP adresini bilecek ve ona erişebilecektir.
‫IP adresini :8888 tıpkı ağınızdaki başka bir
‫makine için yaptığınız gibi cURL yapabilirsiniz.
‫Bunun
‫Docker Desktop'tan çalışmamasının nedeni, bu komutları
‫yazarken Mac veya Windows'ta oturuyor olmanız
‫ve Kubernetes'inizi sizin için çalıştıran Linux VM
‫ile aynı Kubernetes kümesinde olmamalarıdır.
‫Tamam. Devam edelim ve daha fazla hizmet
‫oluşturacağımız bir sonraki ders için bu şeyleri çalışır durumda
‫bırakalım.