Кнативе – платформа као услуга заснована на к8с са подршком без сервера

Кнативе – платформа као услуга заснована на к8с са подршком без сервера

Кубернетес је несумњиво постао доминантна платформа за примену контејнера. Пружа могућност контроле готово свега користећи своје АПИ-је и прилагођене контролере који проширују његове АПИ-је прилагођеним ресурсима.

Међутим, корисник и даље мора да донесе детаљне одлуке о томе како тачно применити, конфигурисати, управљати и скалирати апликације. Питања скалирања апликације, заштите и протока саобраћаја остају на дискрецији корисника. Ово издваја Кубернетес од конвенционалних платформи као услуге (ПааС), као што су Цлоуд Фоундри и Хероку.

Платформе имају поједностављен кориснички интерфејс и намењене су програмерима апликација који су најчешће укључени у постављање појединачних апликација. Основни ПааС систем управља рутирањем, применом и метриком транспарентно за корисника.

Током посла од извора до отпреме управља ПааС тако што креира прилагођену слику контејнера, поставља је, поставља нову руту и ​​ДНС поддомен за долазни саобраћај. Све ово се покреће на команду git push.

Кубернетес (намерно) обезбеђује само основне блокове за такве платформе, остављајући заједници слободу да сама обави посао. како рекла је Келси Хајтауер:

Кубернетес је платформа за прављење платформи. Најбоља позиција за почетак, али не и завршетак.

Као резултат тога, видимо гомилу Кубернетес верзија, као и хостинг компаније које покушавају да креирају ПааС за Кубернетес, као што су ОпенСхифт и Ранцхер. Усред растућег тржишта Кубе-ПааС, Кнативе, који су у јулу 2018. основали Гоогле и Пивотал, улази у ринг.

Кнативе је била сарадња између Гугла и Пивотала, уз малу помоћ других компанија као што су ИБМ, РедХат и Соло.им. Нуди сличне ПааС ствари као и Кубернетес са врхунском подршком за апликације засноване на рачунарима без сервера. За разлику од Кубернетес верзија, Кнативе се инсталира као додатак на било који компатибилан Кубернетес кластер и конфигурише се преко корисничких ресурса.

Шта је Кнативе?

Кнативе је описан као „Платформа заснована на Кубернетес-у за испоруку и управљање радним оптерећењима користећи модерно рачунарство без сервера“. Кнативе, док се наплаћује као таква платформа, активно аутоматски повећава контејнере сразмерно истовременим ХТТП захтевима. Некоришћене услуге се на крају смањују на нулу, обезбеђујући скалирање на захтев у стилу без сервера.

Кнативе се састоји од скупа контролера који се инсталирају у било који Кубернетес кластер и пружају следеће могућности:

  • прављење контејнерских апликација из изворног кода (обезбеђује компонента Градити),
  • обезбеђивање приступа долазном саобраћају апликацијама (обезбеђује компонента Служење),
  • испорука и аутоматско скалирање апликација на захтев (такође обезбеђено од стране компоненте Служење),
  • идентификовање извора догађаја који доводе до покретања апликације (обезбеђује компонента Евентинг).

Кључна компонента је Сервинг, која обезбеђује обезбеђивање, аутоматско скалирање и управљање саобраћајем за управљане апликације. Након инсталирања Кнативе-а, и даље имате пун приступ Кубернетес АПИ-ју, омогућавајући корисницима да управљају апликацијама обичан начин, а такође служи за отклањање грешака у Кнативе сервисима, радећи са истим АПИ примитивима које користе ови сервиси (модули, сервиси, итд.).

Уз помоћ Сервинга, плаво-зелено рутирање саобраћаја је такође аутоматизовано, обезбеђујући поделу саобраћаја између нове и старе верзије апликације када корисник испоручи ажурирану верзију апликације.

Сам Кнативе зависи од инсталирања компатибилног улазног контролера. У време писања овог чланка је подржан Глоо АПИ Гатеваи и Истио Сервице Месх. Он ће конфигурисати доступни улаз за усмеравање саобраћаја ка апликацијама којима управља Кнативе.

Истио Сервице Месх може бити велика зависност за Кнативе кориснике који желе да га испробају без инсталирања Истио контролне табле, пошто Кнативе зависи само од мрежног пролаза.

Из тог разлога, већина корисника преферира Глоо као капију за Кнативе, пружајући сличан скуп могућности као Истио (у сврху коришћења само Кнативе), док такође користи знатно мање ресурса и има ниже оперативне трошкове.

Хајде да тестирамо Кнативе у акцији на постољу. Користићу свеже инсталирани кластер који ради у ГКЕ-у:

kubectl get namespace
NAME          STATUS   AGE
default       Active   21h
kube-public   Active   21h
kube-system   Active   21h

Почнимо да инсталирамо Кнативе и Глоо. Ово се може урадити било којим редоследом:

# ставим 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
# ...

Проверавамо да ли су сви подови у статусу „Руннинг“:

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          44s

Глоо је спреман за рутирање, хајде да направимо Кнативе сервис за аутоматско скалирање (назовимо га ксервице) и усмеримо саобраћај ка њему.

Кнативе услуге пружају лакши пут до испоруке апликација Кубернетес-у од конвенционалног модела Деплоимент+Сервице+Ингресс. Радићемо са овим примером:

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 user

Копирао сам ово у датотеку, а затим га применио на свој Кубернетес кластер на следећи начин:

kubectl apply -f ksvc.yaml -n default

Можемо да видимо ресурсе које је креирао Кнативе у кластеру након што испоручимо наш 'хелловорлд-го' ксервице:

kubectl get pod -n default
NAME                                              READY   STATUS    RESTARTS   AGE
helloworld-go-fjp75-deployment-678b965ccb-sfpn8   2/2     Running   0          68s

Под са нашом сликом 'хелловорлд-го' се покреће када се ксервице примени. Ако нема саобраћаја, број махуна ће се смањити на нулу. И обрнуто, ако број истовремених захтева премаши одређени конфигурабилни праг, број подова ће се повећати.

kubectl get ingresses.networking.internal.knative.dev -n default
NAME            READY   REASON
helloworld-go   True

Кнативе конфигурише свој улаз користећи посебан 'ингресс' ресурс у интерном Кнативе АПИ-ју. Глоо користи овај АПИ као своју конфигурацију да обезбеди функције сличне ПааС-у, укључујући плаво-зелени модел примене, аутоматску примену ТЛС-а, временска ограничења и друге напредне функције рутирања.

После неког времена видимо да су наше махуне нестале (јер није било долазног саобраћаја):

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           9m46s

Коначно ћемо покушати да дођемо до њих. Можете лако и лако добити УРЛ за Кнативе Проки користећи glooctl:

glooctl proxy url --name knative-external-proxy
http://35.190.151.188:80

Без инсталираног glooctl можете видети адресу и порт у кубе сервису:

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   77m

Хајде да прођемо кроз неке податке користећи цУРЛ:

curl -H "Host: helloworld-go.default.example.com" http://35.190.151.188
Hello Knative user!

Кнативе обезбеђује готово ПааС за програмере на врху Кубернетес-а који се налази у кутији користећи Глоо-ов високо-перформансни АПИ гатеваи са пуним стеком. Овај пост је само загребао површину Кнативе-ових опсежних опција прилагођавања и додатних функција. Исто са Глоо!

Упркос чињеници да је Кнативе још увек млад пројекат, његов тим објављује нове верзије сваких шест недеља, а почела је и имплементација напредних функција, као што су аутоматско ТЛС распоређивање, аутоматско скалирање контролне табле. Постоји велика шанса да би, као резултат сарадње између више компанија у облаку, и као основа Гоогле-ове нове Цлоуд Рун понуде, Кнативе могао постати примарна опција за рачунарство без сервера и ПааС на Кубернетес-у. Пратите вести!

Од уредника СоутхБридге-а
Мишљења читалаца су нам важна, па вас молимо да учествујете у краткој анкети везаној за будуће чланке о Кнативе, Кубернетес, рачунарству без сервера:

Само регистровани корисници могу учествовати у анкети. Пријавите се, Добродошао си.

Да ли треба да наставим да пишем чланке и водиче о Кнативе и рачунарству без сервера?

  • Да хвала.

  • Не хвала.

Гласало је 28 корисника. 4 корисника су била уздржана.

Извор: ввв.хабр.цом

Купите поуздан хостинг за сајтове са ДДоС заштитом, ВПС ВДС сервере 🔥 Купите поуздан веб хостинг са DDoS заштитом, VPS VDS сервере | ProHoster