
Kubernetes şüphesiz konteyner dağıtımında baskın platform haline geldi. API'lerini ve API'lerini özel kaynaklarla genişleten özel denetleyicileri kullanarak neredeyse her şeyi kontrol etme yeteneği sağlar.
Ancak kullanıcının yine de uygulamaların tam olarak nasıl dağıtılacağı, yapılandırılacağı, yönetileceği ve ölçekleneceği konusunda ayrıntılı kararlar alması gerekir. Uygulama ölçeklendirme, koruma ve trafik akışı sorunları kullanıcının takdirindedir. Bu, Kubernetes'i Cloud Foundry ve Heroku gibi geleneksel hizmet olarak platformlardan (PaaS) ayırır.
Platformlar basitleştirilmiş bir kullanıcı arayüzüne sahiptir ve çoğunlukla bireysel uygulamaların kurulumuyla ilgilenen uygulama geliştiricilerine yöneliktir. Yönlendirme, dağıtım ve ölçümler, temel PaaS sistemi tarafından kullanıcıya şeffaf bir şekilde yönetilir.
Kaynaktan gemiye iş akışı, özel bir konteyner görüntüsü oluşturularak, dağıtılarak, gelen trafik için yeni bir rota ve DNS alt etki alanı ayarlanarak PaaS tarafından gerçekleştirilir. Bütün bunlar komut üzerine başlatılır git push.
Kubernetes (kasıtlı olarak) bu tür platformlar için yalnızca temel yapı taşlarını sağlar ve topluluğun işi kendi başına yapmasına izin verir. Nasıl :
Kubernetes, platform oluşturmaya yönelik bir platformdur. Başlamak için en iyi pozisyon, ancak bitirmek için değil.
Sonuç olarak, bir grup Kubernetes yapısının yanı sıra OpenShift ve Rancher gibi Kubernetes için PaaS oluşturmaya çalışan barındırma şirketlerini de görüyoruz. Büyüyen Kube-PaaS pazarının ortasında, Temmuz 2018'de Google ve Pivotal tarafından kurulan Knative de ringe giriyor.
Knative, IBM, RedHat ve Solo.im gibi diğer şirketlerin de biraz yardımıyla Google ile Pivotal arasındaki bir işbirliğiydi. Sunucusuz bilgi işlem tabanlı uygulamalar için birinci sınıf destekle Kubernetes'e benzer PaaS özellikleri sunar. Kubernetes yapılarından farklı olarak Knative, herhangi bir uyumlu Kubernetes kümesine eklenti olarak yüklenir ve kullanıcı kaynakları aracılığıyla yapılandırılır.
Knative nedir?
Knative, "Modern sunucusuz bilgi işlem kullanarak iş yüklerini sunmaya ve yönetmeye yönelik Kubernetes tabanlı bir platform" olarak tanımlanıyor. Knative, kendisini böyle bir platform olarak faturalandırırken, eşzamanlı HTTP istekleriyle orantılı olarak konteynerleri aktif olarak otomatik olarak ölçeklendirir. Kullanılmayan hizmetlerin ölçeği sonunda sıfıra inerek sunucusuz tarzda isteğe bağlı ölçeklendirme sağlanır.
Knative, herhangi bir Kubernetes kümesine yüklenen ve aşağıdaki yetenekleri sağlayan bir dizi denetleyiciden oluşur:
- Kaynak kodundan konteynerli uygulamalar oluşturma (bileşen tarafından sağlanır) İnşa etmek),
- uygulamalara gelen trafiğe erişim sağlanması (bileşen tarafından sağlanır) Servis),
- talep üzerine uygulamaların teslimi ve otomatik ölçeklendirilmesi (ayrıca bileşen tarafından sağlanır) Servis),
- Uygulamanın başlatılmasına yol açan olayların kaynaklarının belirlenmesi (bileşen tarafından sağlanır) Eventing).
Yönetilen uygulamalar için temel hazırlık, otomatik ölçeklendirme ve trafik yönetimi sağlayan Hizmet, önemli bir bileşendir. Knative'i yükledikten sonra Kubernetes API'sine hâlâ tam erişime sahip olursunuz ve bu da kullanıcıların uygulamaları yönetmesine olanak tanır sıradan Bu şekilde çalışır ve ayrıca Knative hizmetlerinde hata ayıklamaya hizmet eder ve bu hizmetlerin kullandığı API temel öğeleriyle (modüller, hizmetler vb.) çalışır.
Serving'in yardımıyla mavi-yeşil trafik yönlendirme de otomatikleştirilerek, kullanıcı uygulamanın güncellenmiş bir sürümünü sunduğunda trafiğin uygulamanın yeni ve eski sürümleri arasında bölünmesi sağlanır.
Knative'in kendisi uyumlu bir giriş denetleyicisinin kurulmasına bağlıdır. Bu makalenin yazıldığı sırada desteklenmektedir и . Trafiği Knative tarafından yönetilen uygulamalara yönlendirmek için mevcut girişi yapılandıracaktır.
Istio Service Mesh, Knative yalnızca ağ geçidine bağlı olduğundan, Istio kontrol panelini kurmadan denemek isteyen Knative kullanıcıları için büyük bir bağımlılık olabilir.
Bu nedenle çoğu kullanıcı, Istio'ya benzer yetenekler sağlayan (yalnızca Knative'i kullanmak amacıyla), aynı zamanda önemli ölçüde daha az kaynak kullanan ve daha düşük işletme maliyetlerine sahip olan, Knative'e geçiş kapısı olarak Gloo'yu tercih ediyor.
Knative'i stand üzerinde çalışırken test edelim. GKE'de çalışan yeni yüklenmiş bir kümeyi kullanacağım:
kubectl get namespace
NAME STATUS AGE
default Active 21h
kube-public Active 21h
kube-system Active 21hKnative ve Gloo'yu yüklemeye başlayalım. Bu herhangi bir sırayla yapılabilir:
# ставим Knative-Serving
kubectl apply -f
https://github.com/knative/serving/releases/download/v0.8.0/serving-core.yaml
namespace/knative-serving created
# ...
# ставим Gloo
kubectl apply -f
https://github.com/solo-io/gloo/releases/download/v0.18.22/gloo-knative.yaml
namespace/gloo-system created
# ...Tüm Pod'ların "Çalışıyor" durumunda olup olmadığını kontrol ediyoruz:
kubectl get pod -n knative-serving
NAME READY STATUS RESTARTS AGE
activator-5dd55958cc-fkp7r 1/1 Running 0 7m32s
autoscaler-fd66459b7-7d5s2 1/1 Running 0 7m31s
autoscaler-hpa-85b5667df4-mdjch 1/1 Running 0 7m32s
controller-85c8bb7ffd-nj9cs 1/1 Running 0 7m29s
webhook-5bd79b5c8b-7czrm 1/1 Running 0 7m29s
kubectl get pod -n gloo-system
NAME READY STATUS RESTARTS AGE
discovery-69548c8475-fvh7q 1/1 Running 0 44s
gloo-5b6954d7c7-7rfk9 1/1 Running 0 45s
ingress-6c46cdf6f6-jwj7m 1/1 Running 0 44s
knative-external-proxy-7dd7665869-x9xkg 1/1 Running 0 44s
knative-internal-proxy-7775476875-9xvdg 1/1 Running 0 44sGloo yönlendirme için hazır, hadi otomatik ölçeklendirmeli bir Knative hizmeti oluşturalım (buna kservice diyelim) ve trafiği ona yönlendirelim.
Knative hizmetleri, uygulamaları Kubernetes'e ulaştırmak için geleneksel Dağıtım+Hizmet+Giriş modeline göre daha kolay bir yol sağlar. Bu örnekle çalışacağız:
apiVersion: serving.knative.dev/v1alpha1
kind: Service
metadata:
name: helloworld-go
namespace: default
spec:
template:
spec:
containers:
- image: gcr.io/knative-samples/helloworld-go
env:
- name: TARGET
Value: Knative userBunu bir dosyaya kopyaladım, ardından Kubernetes kümeme şu şekilde uyguladım:
kubectl apply -f ksvc.yaml -n default'Helloworld-go'yu teslim ettikten sonra kümede Knative tarafından oluşturulan kaynakları görüntüleyebiliriz kservice:
kubectl get pod -n default
NAME READY STATUS RESTARTS AGE
helloworld-go-fjp75-deployment-678b965ccb-sfpn8 2/2 Running 0 68s'Merhaba dünya-go' imajımızı içeren bölme, kservice konuşlandırıldığında başlatılır. Trafik olmaması durumunda kapsül sayısı sıfıra indirilecektir. Tam tersi, eş zamanlı isteklerin sayısı belirli bir yapılandırılabilir eşiği aşarsa bölme sayısı artacaktır.
kubectl get ingresses.networking.internal.knative.dev -n default
NAME READY REASON
helloworld-go TrueKnative, girişini dahili Knative API'sindeki özel bir 'giriş' kaynağını kullanarak yapılandırır. Gloo, mavi-yeşil dağıtım modeli, otomatik TLS uygulaması, zaman aşımları ve diğer gelişmiş yönlendirme özellikleri dahil olmak üzere PaaS benzeri özellikler sağlamak için bu API'yi yapılandırma olarak kullanır.
Bir süre sonra podlarımızın kaybolduğunu görüyoruz (çünkü gelen trafik yoktu):
kubectl get pod -n default
No resources found.
kubectl get deployment -n default
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
helloworld-go-fjp75-deployment 0 0 0 0 9m46sSon olarak onlara ulaşmaya çalışacağız. Knative Proxy'nin URL'sini kullanarak kolayca ve kolayca alabilirsiniz. glooctl:
glooctl proxy url --name knative-external-proxy
http://35.190.151.188:80Kurulu olmadan glooctl kube hizmetinde adresi ve bağlantı noktasını görebilirsiniz:
kubectl get svc -n gloo-system knative-external-proxy
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
knative-external-proxy LoadBalancer 10.16.11.157 35.190.151.188 80:32168/TCP,443:30729/TCP 77mCURL kullanarak bazı verileri inceleyelim:
curl -H "Host: helloworld-go.default.example.com" http://35.190.151.188
Hello Knative user!Knative, Gloo'nun yüksek performanslı, tam yığın API ağ geçidini kullanarak kullanıma hazır Kubernetes'in yanı sıra geliştiriciler için neredeyse PaaS sağlar. Bu yazı Knative'in kapsamlı özelleştirme seçeneklerinin ve ek özelliklerinin yalnızca yüzeyini çizdi. Gloo'da da aynısı var!
Knative'in hala genç bir proje olmasına rağmen ekibi her altı haftada bir yeni sürümler yayınlıyor ve otomatik TLS dağıtımı, kontrol panelinin otomatik ölçeklendirilmesi gibi gelişmiş özelliklerin uygulanmasına başlandı. Birden fazla bulut şirketi arasındaki işbirliğinin bir sonucu olarak ve Google'ın yeni Cloud Run teklifinin temeli olarak Knative'in, sunucusuz bilgi işlem ve Kubernetes'te PaaS için birincil seçenek haline gelme ihtimali yüksektir. Haberleri takip edin!
SouthBridge Editörlerinden
Okuyucuların görüşleri bizim için önemli; bu nedenle sizden Knative, Kubernetes, sunucusuz bilgi işlem hakkında gelecekteki makalelerle ilgili kısa bir ankete katılmanızı rica ediyoruz:
Ankete sadece kayıtlı kullanıcılar katılabilir. Lütfen.
Knative ve sunucusuz bilgi işlem hakkında makaleler ve kılavuzlar yazmaya devam etmeli miyim?
Evet lütfen.
Teşekkürler, yapma.
28 kullanıcı oy kullandı. 4 kullanıcı çekimser kaldı.
Kaynak: habr.com
