‫Oh adamım. Bahse girerim bir süredir Kubernetes
‫komut satırına ulaşmayı bekliyordunuz.
‫Ama neyse ki bazı kavramları aradan çıkardık.
‫Şimdi komut satırına geçelim.
‫Emin olmamız gereken ilk şey, Kubernetes'i kurarken
‫yaptığınız her şeyin çalıştığından emin olmaktır.
‫Bunu yapabilmemizin yolu Docker sürümüne ve Compose sürümüne
‫ve bunun gibi şeylere benzer.
‫Kabuğa gidip kubectl yazabiliriz,
‫bu K U B E C T L sürümüdür.
‫Sürümlere geri dönmelisin.
‫Bu tıpkı Docker'da olduğu gibi istemci sürümünü ve ardından
‫sunucu sürümünü alırsınız.
‫Tüm bu komut satırı araçlarının yaptığı şeyin uzak bir API ile
‫konuşmak olduğunu unutmayın.
‫Bu durumda, sorun muhtemelen makinenizdeki API'dir.
‫Docker, Swarm ve Compose'da olduğu gibi kubectl
‫komut satırı da uzak Kubernetes API'si ile konuşabilir.
‫Artık istemci sunucu sürümlerini geri aldığınıza
‫göre, gitmeye hazırsınız. Bir hata aldıysanız, bunun nedeni
‫muhtemelen sunucu sürümünün görünmemesi ve bağlanamadığını
‫söylemesidir. Bu, bir şekilde yanlış yapılandırıldığınız
‫ve yerel CLI'nızın Kubernetes sunucularıyla konuşamadığı anlamına
‫gelir. Ya çalıştığından emin olmak için
‫nasıl konuşlandırdığınızı kontrol ederdim.
‫Belki Docker Desktop kullanıyorsanız, Docker'ı başlatmanız
‫ve ardından ayarlarda Kubernetes'in çalıştığından
‫emin olmanız gerekir. Başka bir yol varsa, kurulum
‫videosunu kontrol edin. Bununla ilgili herhangi bir sorununuz varsa, Soru & Cevap
‫bölümünde veya Slack'te bize ulaşın.
‫Tamam. Kubernetes'te podları dağıtmanın gerçekten
‫iki yolu vardır. Tüm seçenekleri komut
‫satırında belirttiğiniz komut satırında yapmak
‫var. Ya da YAML kullanmak var.
‫Bu, konsept olarak Swarm'daki hizmetlere ve yığınlara benzer
‫olabilir, ancak elbette, gerçekten aşağı indiğinizde,
‫örtülerin altında çok farklı şeyler
‫var. Bu benzetmeyi yapmaktan nefret ediyorum ama
‫gerçekten sahip olduğunuz iki seçenek ya komut satırı ya da YAML.
‫Birkaç dakikalığına komut satırına odaklanalım.
‫Burada çalıştıracağımız ilk komut
‫kubectl run.
‫Yani, bir docker çalıştırmasına benzer.
‫Benim Nginx'im ve siz ona ne isterseniz onu diyebilirsiniz.
‫Bu, dağıtımınızın adıdır. Ve sonra --image, ve burada
‫resim adını belirteceğiz.
‫Alıştığımız gibi Nginx'i kullanalım ve return tuşuna basalım.
‫Bir dakikalığına, Kubernetes'in son sürümlerinden bazılarında
‫bunu alıyorsanız, değerini yitirmiş uyarısını görmezden
‫gelelim. Bunu birazdan konuşacağız.
‫Ama şimdilik, neler olduğuna bir bakalım.
‫Bunu kubectl get komutu ile kullanabiliriz.
‫kubectl get pods.
‫Orada görmeniz gereken şey, adlandırılmış nesneniz
‫ve sonundaki bazı karakterlerdir ve 1'de 1'in çalıştığını
‫göreceksiniz.
‫Bu, varsayılan olarak yalnızca bir kopya çalıştırdığımız
‫Swarm'daki hizmetler konseptine çok benzer.
‫Adını orada görebilirsiniz.
‫Neden böyle garip bir ismimiz var?
‫Bu, kubectl run komutunun çalışma şekliyle
‫ilgilidir.
‫Çalıştırmayı şu anda Sürüm 1'de olduğu
‫gibi kullandığınızda. 14, bu teknik olarak bir Dağıtım
‫denetleyicisi kullanmaktır.
‫Bu Deployment denetleyicisi bir ReplicaSet denetleyicisi oluşturur.
‫Bu ReplicateSet denetleyicisi daha sonra podları oluşturur.
‫Bu durumda, sadece bir kopya.
‫Yani, sadece bir kapsül.
‫Eğer bir kubectl get all yaparsak, oradaki tüm nesnelerin
‫listelendiğini göreceksiniz.
‫Kapsülleri göreceksin.
‫Şimdilik servisi görmezden gelin.
‫Bunu birazdan konuşacağız.
‫Deployment ve ReplicaSet içinde.
‫Nesne modelinin bu farklı katmanlarını ve Kubernetes'in
‫burada ortaya çıktığını görebilirsiniz, burada sadece tek bir komut
‫verdik, ancak aslında bizim için birden fazla nesne oluşturdu.
‫Çizim tahtama gidelim ve bu nesnelerin birbirleriyle nasıl
‫ilişkili olduğunu açıklayalım.
‫Kubernetes'te gördüğünüz gibi, daha önce Swarm'da veya Docker'ın
‫kendisinde sahip olduğumuzdan daha fazla soyutlama ve kontrol
‫seviyesine sahibiz.
‫Bu durumda, kubectl'i çalıştırdığımızda, arka planda
‫bizim için otomatik olarak birden fazla
‫farklı soyutlama oluşturdu.
‫Pod'u oluşturdu, ancak bunun etrafında bir ReplicaSet ve onun
‫etrafında da bir Deployment oluşturdu.
‫Çizim tahtasına gidelim ve size bu soyutlamaların birbirleriyle nasıl
‫ilişkili olduğunu göstereyim.
‫Hatırlatmak gerekirse, altta Docker çalışıyor.
‫Sonra Kubernetes'i yöneten bazı konteynerlerimiz var ve şu anda bunlardan
‫bahsetmeyeceğim.
‫Sadece Kube'yi çalıştırmak için burada farklı
‫bir konteyner setimiz olduğunu bilelim.
‫Kubectl çalıştırmasını yaptığımızda, oluşturulan
‫şey açıkça Nginx konteynerimizdi, bildiğimiz
‫kısım buydu.
‫Ancak, farklı kontrol seviyeleri veya soyutlamalar işin ilginç
‫kısmıdır.
‫Buradaki ilk kapsül.
‫Yine, bu pod içinde bir veya daha fazla konteyner çalıştırabilir.
‫Bu kapsülün bir parçası olarak, ihtiyaç duyduğumuzda hacimler
‫yaratabilirdi. Pod için NIC oluşturdu.
‫Bu pod'u oluşturma şekli, kubectl
‫run yazdığımızda bir Deployment oluşturmasıydı.
‫Bir Dağıtım denetleyicisi ReplicaSet'leri yönetir.
‫Çoklu soyutlama seviyelerimiz var.
‫Bu Dağıtım oluşturuldu ve yuvarlanan güncellemeler
‫veya Mavi/Yeşil Dağıtımlar gibi şeyler ve Swarm hizmetlerinde
‫olduğu gibi orkestrasyon hizmetlerini düşündüğünüzde
‫aklınıza gelen diğer birçok şeyi yapıyor.
‫Bu Dağıtım oluşturulduğunda, bir adet ReplicaSet
‫oluşturdu.
‫Bu da başka bir kontrolördür.
‫ReplicaSet'in görevi, istediğimiz sayıda pod'un
‫şu anda çalıştığından emin olmaktır.
‫Bu durumda, her şeyi varsayılan değerde bıraktık.
‫Böylece, Dağıtımımız bir ReplicaSet oluşturdu ve
‫bu ReplicaSet bir pod oluşturdu.
‫Bu farklı soyutlama düzeylerinin her birini
‫kontrol edebiliriz. Dağıtımı kontrol etmek için
‫komutlar yazabiliriz. ReplicaSet veya doğrudan podun
‫kendisi, ancak genellikle bu durumlarda her zaman Dağıtımın
‫kendisini yöneteceksiniz.
‫Gerisini o halledecektir.
‫Ortadaki ReplicaSet'in neden var olduğuna dair
‫bir fikir vermek gerekirse, Swarm hizmet kopyalarında
‫olduğu gibi, bu pod'un başka bir kopyasını oluşturmak
‫isteyip istemediğimizdir.
‫Buradaki çizimimde o kapsülün bir kopyasını
‫oluşturdum.
‫Bu, kopyaları ikiye ölçeklendirirsek olur.
‫Swarm'ın yaptığına çok benziyor.
‫ReplicaSet'in görevi yine iki
‫podun aynı şablonla çalışmasını sağlamaktır.
‫Deployment'ın
‫görevi ReplicaSet yapılandırmasını yönetmektir.
‫Bir sonraki derse geçmeden önce, run komutu ile oluşturduğumuz
‫tüm bu kaynakları delete komutunu kullanarak
‫silelim.
‫Bu, Docker'ın remove komutuna sahip olduğu Docker'dan
‫farklıdır.
‫Şimdi, kubectl ile bir silme komutu kullanıyoruz.
‫Nesnenin türünü ve ardından kendi adını belirttiğimizi
‫fark edeceksiniz. Yani, Dağıtım alanı yapıyoruz,
‫Dağıtım'ın adı.
‫Bunu yaptığınızda, altındaki her şeyi
‫silecektir. ReplicaSet, kapsüllerin kendileri ve içlerindeki
‫konteynerler.
‫Bunu aynı get all komutuyla hızlı bir şekilde doğrulayabiliriz.
‫Orada yalnızca Kubernetes sunucusunun kendisi olan küme IP'sini
‫göreceksiniz.