1. Kubernetes, Google ekibi tarafından başlatılan ve sürdürülen Docker tabanlı bir açık kaynaklı konteyner küme yönetim sistemidir. Yalnızca yaygın bulut platformlarını desteklemekle kalmaz, aynı zamanda dahili veri merkezlerini de destekler.
Docker üzerinde oluşturulan Kubernetes, bir konteyner planlama hizmeti oluşturabilir. Amacı, kullanıcıların karmaşık ayarlar yapmasına gerek kalmadan Kubernetes kümeleri aracılığıyla bulut kapsayıcı kümelerini yönetmelerine olanak sağlamaktır. Sistem, belirli kapsayıcı küme planlama işleme görevlerini gerçekleştirmek için uygun çalışma düğümlerini otomatik olarak seçecektir. Temel konsept Konteyner Kapsülüdür. Bir Bölme, aynı fiziksel çalışma düğümü üzerinde çalışan bir grup kapsayıcıdan oluşur. Bu kapsayıcı grupları aynı ağ ad alanına, IP'ye ve depolama kotasına sahiptir ve bağlantı noktası eşlemesi, gerçek duruma göre her Bölmede gerçekleştirilebilir. Ek olarak, Kubernetes çalışan düğümleri ana sistem tarafından yönetilecek ve düğümler Docker konteynerlerini çalıştırabilen hizmetleri içerir.
2. Mimari model ana / düğümlerdir (iş)
Efendinin kraliçe arı ve düğümlerin işçi arılar olduğu anlaşılabilir (çalışan)
Ana, kümeye tek giriştir ve yüksek oranda erişilebilir olması gerekir.
Her düğüm, bilgi işlem gücünün ve depolama kapasitesinin bir bölümünü sağlar. (Düğüm çalışan kapsayıcı)
Talep süreci :
1 İstemci isteği (bir başlangıç konteyneri oluşturma) ilk önce ana makineye gönderilir.Masterde her düğümün kaynak durumunu analiz edecek bir programlayıcı vardır.2 Kullanıcı tarafından talep edilen konteyneri çalıştırmak için en uygun düğümü bulun ve koyun Planlama için, konteyneri başlatmaktan düğümün docker'ı veya diğer konteyner motoru sorumludur. 3 Konteyneri başlatırken yerel olarak bir yansıtma olup olmadığını kontrol edin Başlamak için ayna depodan çekmeye gerek yoksa (ayna deposu bulutta olabilir, kendi kendine kontrol edilen özel bir depo olabilir veya düğüm düğümünde konteyner olarak çalıştırılabilir).
Üç, Ana küme bileşenleri
API Sunucusu, kullanıcı isteklerini alır ve işler
Zamanlayıcı, kapsayıcı oluşturma isteğini planlama
denetleyici-yönetici, oluşturulan kapsayıcının sağlıklı durumda olmasını sağlar
Kontrolör yöneticisi, kontrolörün sağlığını sağlamaktır ve kontrolör, konteynerin sağlığını sağlamaktır.
Etiket seçici, bölmeyi denetleyici aracılığıyla etiketleyebilir ve ardından denetleyici, bölmeyi etikete göre tanımlayabilir
Bir bölme oluştururken bölmeyi doğrudan etiketleyebilir ve ardından denetleyicinin bölmeyi etiketin değerine göre tanımlamasına izin verebilirsiniz.
Dört, Düğüm kümesi bileşenleri
Kubelet bir apiserver ile etkileşimli olarak çalışır ve yönetici tarafından planlanan çeşitli görevleri alır ve işler.
docker kapsayıcıyı bölmede çalıştırır
K8'lerde çalışan en küçük birim bir konteyner değil, bir kapsüldür
Kubernetes, kapsayıcıları doğrudan planlamaz, ancak kapsülleri planlar. Kapsüller, kapsayıcılar için bir paketleme katmanıdır.
Bir bölmede birden fazla kap olabilir, aynı ağ protokol yığınını, depolama hacmini paylaşırlar
Genel olarak, bir bölmenin yalnızca bir kabı vardır
kube-proxy bir apiserver ile iletişim kurar, her pod değişir, sonucun bir apiserver'a kaydedilmesi gerekir, apiserver bir bildirim olayı oluşturur, bu olay herhangi bir ilişkili bileşen tarafından alınabilir, yönetim hizmeti, hizmet oluşturma ve değişiklik İptables üzerinde kurallar oluşturmak için kube-proxy'ye güvenin
Kapsüle Giriş
Bölmedeki her kabın kendi kullanıcı, mnt ve pid ad alanı vardır ve ardından bölmenin net, uts ve ipc ad alanını paylaşırlar. Genel olarak, kaplar arasında özellikle yakın bir ilişki olmadıkça ve aynı bölmeye yerleştirilmesi gerekmedikçe, bir bölme birden fazla kaba yerleştirilirse, genellikle biri ana kaptır ve diğer kaplar ana kap üzerindeki uygulamaya yardımcı olmak için kullanılır. Program elde etmek için daha fazla işlevi tamamlar. Bir bölme oluştururken bölmeyi doğrudan etiketleyebilir ve ardından denetleyicinin bölmeyi etiketin değerine göre tanımlamasına izin verebilirsiniz.
Kapsül, kubernet kümesindeki atomik bir birim olduğu için bölünemez. Kapsül, ana birim tarafından bir düğüme programlandığında, bölmenin bir kapsayıcı veya bir bölmedeki birden çok kap olması fark etmeksizin, bölmedeki tüm kaplar Bir düğümde
Otonom Pod
Kendi kendine yönetim, oluşturulduktan sonra yine de apiserver'a gönderilmesi gerekir ve apiserver, bunu belirtilen düğümün düğümüne planlar ve kapsül, düğüm tarafından başlatılır. Bir kapsüldeki bir kapsayıcı başarısız olursa, kapsayıcının yeniden başlatılması ve kubelet'in tamamlanması gerekir. Bununla birlikte, düğüm başarısız olursa, kapsayıcı kaybolur. Global planlamaya ulaşılamıyor.
Kontrol yönetimi için bölme
Kapsülleri bir yaşam döngüsüne sahip nesneler haline getiren denetleyici mekanizmasının tanıtımıdır. Programlayıcı tarafından kümedeki bir düğümde çalışacak şekilde programlandıktan sonra, bazı görevler arka plan programı olarak bölmeler veya kapsayıcılar olarak çalışacaktır. Çalışma durumu, bir arıza oluştuğunda, herhangi bir zamanda yeniden başlatılmalı veya değiştirilmelidir.
Kapsül denetleyici türü
Çoğaltma Denetleyicisi
Daha fazla para iadesi, daha az takviye, insanlar tarafından tanımlanan beklentileri doğru bir şekilde karşılamalıdır
Periyodik güncelleme (kullanıcının habersiz sürümüne benzer)
Geri alma
ReplicaSet
Dağıtım yalnızca durum bilgisiz uygulamaları yönetebilir
StatefulSet, durum bilgisi olan uygulamaları yönetir
DaemonSet, rastgele çalıştırmak yerine her düğümde bir kopya çalıştırır
İş, Cronjob iş veya periyodik iş çalıştırma
Bazı görevler geçici ihtiyaçlar için çalıştırılır ve çalıştırıldıktan sonra sona erer. Bu tür görevlerin her zaman çalışır durumda olması gerekmez ve bir iş olarak çalıştırılabilir
HPA (HorizontalPodAutoscaler), bölmeleri eklemek veya azaltmak için sistem yükünü otomatik olarak izler ve analiz eder
Hizmet keşif işlevi
Bir kapsül her yeniden oluşturulduğunda yepyeni bir kapsüldür.Örneğin, IP adresi ve ana bilgisayar adı farklıdır. kubernets, benzer hizmetler sunan her bir bölme grubu ile istemcileri arasına bir ara katman ekler. Bu ara katman (hizmet) sabittir ve hizmet daha sonra istemci istek bağlantı noktasını arka uç bölmesine vekalet eder (dnat kuralları aracılığıyla) ), bölmelerden biri düştüğünde, yeni bir bölme hemen ilişkilendirilir (ilişkilendirilecek aynı etiketle etiket seçici aracılığıyla) ve ardından yeni ilişkilendirilen bölmenin ip adresini ve ana bilgisayar adını dinamik olarak algılar,
Beş, k8s ağ modeli
pod ağı. Her bölme aynı ağ üzerinde çalışır ve bölmenin ağ adresi, ağ adı alanında bulunan gerçek bir adrestir.
servis ağı (küme ağı). Hizmet adresi gerçek bir adres değildir, iptables veya ipvs kurallarında mevcuttur.
Düğüm ağı.
Altı, k8s iletişim sınıflandırması
Aynı bölmedeki birden çok konteyner arasında: lo network
Bölmeler arasında iletişim. (yer paylaşımlı ağ, yer paylaşımlı ağ)
Bölmeler arasında doğrudan iletişim, bölmenin hangi düğümde çalıştığından bağımsız olarak, her bölmenin adresi aynı olmamalı ve kesinlikle aynı olmamalıdır.
Pod ve servic arasındaki iletişim
Hizmet adresi, ana bilgisayardaki bir iptables kuralındaki adrestir, bu nedenle hedef adresi, ağ geçidini kendiniz göstermeyecek şekilde yapılandırmanız gerekir. Her ana bilgisayarda tüm hizmet adresi kuralları olmalıdır. Bölme hizmetin adresine erişmeye çalıştığında, önce isteği ağ geçidine (genellikle docker0 köprüsüne) gönderir ve ardından docker0 köprüsü, o anda erişilen adresin çekirdek aracılığıyla bir iptables veya ipvs kuralı olduğunu bulur ve ardından isteği gönderir.
Daha önce belirtildiği gibi, hizmetin arka ucundaki düğüm düğümü düştüğünde, kapsül denetleyici etiket seçici aracılığıyla otomatik olarak yeni bir bölme oluşturacak ve onu hizmete ekleyecek ve düğümdeki başka bir bileşen olan kube-proxy Servis değişikliklerini api sunucusundaki ana sunucuda depolayın ve ardından api sunucusu bildirim olaylarını üretir ve kube-porxy iptables kurallarındaki değişiklikleri her düğümün iptables kurallarına yansıtır.
Yedi, etcd k8s depolama
Etcd, kümedeki tüm ağ yapılandırmasını ve nesne durumu bilgilerini kaydetmek için kullanılan Kubernetes kümesinde çok önemli bir bileşendir.
Kümenin tüm değişiklik bilgilerinin ve ağ yapılandırmasının saklanması çok önemlidir, bu nedenle yüksek düzeyde erişilebilir olması gerekir.
Sekiz, k8s küme bileşimi gereksinimleri
Şekilde gösterildiği gibi, her hizmetin istek trafiğini planlamak için bir hizmeti vardır. Hizmetlerden birindeki bir bölme arızalanırsa, bölme denetleyicisi otomatik olarak yeni bir bölme oluşturacak ve hizmete katılacaktır. Farklı bölmelerin denetleyicileri, ait oldukları bölmeleri bölme etiketleri aracılığıyla yönetir. Tabii ki, k8s kümesinin içi de farklı ana bilgisayarları temsil etmek için ana bilgisayar adlarına ihtiyaç duyar.Dns hizmeti ayrıca bölmeler aracılığıyla sağlanır Benzer şekilde, dns bölmelerini yönetmek için bir hizmet ve bir bölme denetleyicisine de sahiptir.
sonuç olarak.
Aşağıdaki gibi tüm k8s kümesini özetlemek için bir resim çizin.