Поиск по сайту:

Как запускать бессерверные рабочие нагрузки с помощью Knative в Kubernetes


Автор выбрал программу Write for DOnations.

Введение

бессерверная парадигма помогает пользователям развертывать приложения, не беспокоясь о базовой инфраструктуре. С появлением Serverless 2.0 многие платформы и инструменты теперь позволяют развертывать бессерверные приложения в Kubernetes.

Openshift также использует Knative, чтобы пользователи могли развертывать свои бессерверные рабочие нагрузки поверх Kubernetes.

Knative состоит из двух основных компонентов: Сервировка. Eventing управляет событиями, запускающими бессерверные рабочие нагрузки. Обслуживание — это набор компонентов для развертывания бессерверных рабочих нагрузок и управления ими. Knative Serving позволяет разработчикам развертывать бессерверные приложения и управлять ими поверх Kubernetes. С помощью Knative Serving разработчики могут быстро и легко развертывать новые сервисы, масштабировать их вверх и вниз и подключать к другим сервисам и источникам событий. Эта функция позволяет разработчикам создавать и развертывать современные облачные приложения, которые являются гибкими, масштабируемыми и простыми в обслуживании.

В этом руководстве вы будете использовать Knative Serving для развертывания приложения Node.js в качестве бессерверной рабочей нагрузки в кластере DigitalOcean Kubernetes. Вы будете использовать doctl (CLI DigitalOcean) и kn (CLI Knative) для создания кластера Kubernetes и развертывания приложения.

Предпосылки

Для выполнения этого урока вам потребуется следующее:

  • Учетная запись DigitalOcean, которую вы будете использовать для запуска кластера Kubernetes с объемом оперативной памяти не менее 4 ГБ и 2 ядрами ЦП. Если у вас его нет, воспользуйтесь кратким руководством по Kubernetes.
  • Чтобы следовать этому руководству с удаленного сервера, вы можете настроить сервер Ubuntu 22.04 с пользователем без полномочий root и брандмауэром, следуя нашему краткому запуску Droplet.
  • Клиент командной строки DigitalOcean, How To Use doctl для получения дополнительной информации об использовании doctl.
  • Документация по установке Kubernetes.
  • На вашем компьютере установлен Docker, который можно настроить, выполнив шаги 1 и 2 нашего руководства по установке и использованию Docker.
  • Пример приложения Node.js, настроенный в соответствии с учебным пособием How To Build a Node.js Application with Docker для создания приложения и отправки его образа контейнера в Docker Hub.
  • Учетная запись в Docker Hub для хранения образов Docker, которые вы создадите в ходе выполнения этого руководства.

Шаг 1 — Запуск кластера DigitalOcean Kubernetes

Поскольку Knative — это платформа на основе Kubernetes, вы будете использовать ее с кластером Kubernetes в DigitalOcean. Есть несколько способов запустить кластер Kubernetes в DigitalOcean. Вы можете использовать облачный интерфейс DigitalOcean, CLI DigitalOcean или поставщика Terraform.

В этом руководстве вы будете использовать doctl, клиент командной строки DigitalOcean, для запуска кластера Kubernetes. Если вы еще не установили doctl, следуйте инструкциям официального руководства по установке.

Чтобы эффективно использовать Knative в этом руководстве, вам понадобится кластер Kubernetes с не менее 4 ГБ ОЗУ и 2 доступными ядрами ЦП. Вы можете запустить кластер с именем knative-tutorial с этими спецификациями, выполнив команду doctl со следующими флагами:

  • --size указывает размер удаленного сервера.
  • --count указывает количество узлов, которые будут созданы как часть кластера.

Чтобы создать кластер DigitalOcean Kubernetes, выполните следующую команду:

  1. doctl kubernetes cluster create knative-tutorial --size s-2vcpu-4gb --count 3

В этой команде вы создаете кластер с именем knative-tutorial с размером, равным 4 ГБ ОЗУ и 2 ядрам ЦП, и с count из 3 узлов.

Примечание. Вы также можете использовать флаг --region, чтобы указать, в каком регионе будет расположен сервер, хотя этот параметр не используется в этом руководстве. Если вы используете удаленный сервер, например дроплет, возможно, вы захотите, чтобы ваш кластер находился в том же регионе, что и сервер. Если вы используете панель управления DigitalOcean для таблицы региональной доступности.

Выполнение этой команды займет несколько минут. После завершения вы получите сообщение, подобное следующему:

Output
Notice: Cluster is provisioning, waiting for cluster to be running ........................................................... Notice: Cluster created, fetching credentials Notice: Adding cluster credentials to kubeconfig file found in "/home/sammy/.kube/config" Notice: Setting current-context to do-nyc1-knative-tutorial ID Name Region Version Auto Upgrade Status Node Pools d2d1f9bc-114b-45e7-b109-104137f9ab62 knative-tutorial nyc1 1.24.4-do.0 false running knative-tutorial-default-pool

Теперь кластер готов к использованию.

Теперь вы можете проверить, настроен ли kubectl в вашей системе и может ли он получить доступ к кластеру DigitalOcean Kubernetes с помощью следующей команды:

  1. kubectl cluster-info

Вы должны получить аналогичный вывод:

Output
Kubernetes control plane is running at https://69de217e-0284-4e18-a6d7-5606915a4e88.k8s.onlinux-console.net CoreDNS is running at https://69de217e-0284-4e18-a6d7-5606915a4e88.k8s.onlinux-console.net/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

Поскольку в выходных данных перечислены URL-адреса control plane и службы CoreDNS (выделены в выходном блоке), вы знаете, что kubectl настроен правильно. в вашей системе и может получить доступ к кластеру.

В рамках процесса создания кластера doctl автоматически настраивает контекст kubectl для использования нового кластера. Вы можете убедиться в этом, выполнив следующую команду:

  1. kubectl config current-context

Эта команда вернет имя текущего контекста.

Вы должны получить следующий вывод:

Output
do-nyc1-knative-tutorial

Вывод указывает, что текущий контекст — do-nyc1-knative-tutorial, то есть имя созданного вами кластера с регионом, в котором он расположен (nyc1).

Вы также можете убедиться, что кластер работает и узлы готовы принять рабочие нагрузки, с помощью этой команды:

  1. kubectl get nodes

Команда kubectl get nodes выводит список всех узлов в кластере вместе с их статусом и другой информацией.

Вы должны получить следующий вывод:

Output
NAME STATUS ROLES AGE VERSION do-nyc1-knative-tutorial-159783000-0v9k5 Ready <none> 2m52s v1.24.4 do-nyc1-knative-tutorial-159783000-1h4qj Ready <none> 2m52s v1.24.4 do-nyc1-knative-tutorial-159783000-1q9qf Ready <none> 2m52s v1.24.4

В выходных данных указано, что в кластере есть три узла, готовых принять рабочие нагрузки.

На этом шаге вы запустили кластер Kubernetes в DigitalOcean. Теперь вы можете установить Knative, чтобы развернуть бессерверную рабочую нагрузку в Kubernetes.

Шаг 2 — Установка Knative Serving

На этом этапе вы установите Knative Serving в свой кластер Kubernetes. Knative Serving отвечает за развертывание и управление вашими бессерверными рабочими нагрузками.

Для установки Knative Serving вам потребуются основные компоненты Knative и специальные ресурсы. Запустите эти команды, чтобы установить основные компоненты:

  1. kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.8.0/serving-crds.yaml
  2. kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.8.0/serving-core.yaml

Команда kubectl apply устанавливает основные компоненты Knative и пользовательские ресурсы в ваш кластер. Флаг -f указывает файл, содержащий изменения конфигурации. В этом случае изменения конфигурации находятся в файлах YAML, которые вы загружаете из репозитория Knative.

Выполнение этих команд займет несколько минут. Вы получите следующий вывод (вывод ниже усечен для краткости):

Output
customresourcedefinition.apiextensions.k8s.io/certificates.networking.internal.knative.dev created customresourcedefinition.apiextensions.k8s.io/clusteringresses.networking.internal.knative.dev created customresourcedefinition.apiextensions.k8s.io/configurations.serving.knative.dev created customresourcedefinition.apiextensions.k8s.io/images.caching.internal.knative.dev created customresourcedefinition.apiextensions.k8s.io/ingresses.networking.internal.knative.dev created ...

Эти выходные данные показывают, что основные компоненты и пользовательские ресурсы Knative находятся в вашем кластере. Все компоненты находятся в пространстве имен knative-serving.

После завершения загрузки вы можете убедиться, что Knative Serving установлен:

  1. kubectl get pods --namespace knative-serving

Команда kubectl get pods получит список всех pod'ов, запущенных в кластере, в пространстве имен knative-serving. Эта команда определяет модули в вашем кластере, их текущий статус, количество контейнеров в модуле и имена контейнеров в определенном пространстве имен.

Вы должны получить аналогичный вывод:

Output
NAME READY STATUS RESTARTS AGE activator-5f6b4bf5c8-kfxrv 1/1 Running 0 4m37s autoscaler-bc7d6c9c9-v5jqt 1/1 Running 0 4m34s controller-687d88ff56-9g4gz 1/1 Running 0 4m32s domain-mapping-69cc86d8d5-kr57g 1/1 Running 0 4m29s domainmapping-webhook-65dfdd9b96-nzs9c 1/1 Running 0 4m27s net-kourier-controller-55c99987b4-hkfpl 1/1 Running 0 3m49s webhook-587cdd8dd7-qbb9b 1/1 Running 0 4m22s

В выходных данных отображаются все модули, работающие в пространстве имен knative-serving. Модули отвечают за различные компоненты Knative Serving.

Knative требует сетевого уровня для маршрутизации входящего трафика к вашим сервисам. Сетевой уровень в Knative позволяет развертывать и обмениваться микросервисами в распределенной среде. Knative Serving поддерживает Kourier в качестве сетевого уровня.

В этом руководстве вы будете использовать Kourier в качестве сетевого уровня, поскольку он легко интегрируется с Knative. Kourier использует те же API и стандарты, что и остальная часть экосистемы Knative, что делает его хорошим вариантом для разработчиков и организаций, уже использующих Knative и желающих воспользоваться его мощными сетевыми возможностями.

Установите Kourier с помощью этой команды:

  1. kubectl apply -f https://github.com/knative/net-kourier/releases/download/knative-v1.8.0/kourier.yaml

Вы должны получить следующий вывод:

Output
namespace/kourier-system configured configmap/kourier-bootstrap configured configmap/config-kourier configured serviceaccount/net-kourier configured clusterrole.rbac.authorization.k8s.io/net-kourier configured clusterrolebinding.rbac.authorization.k8s.io/net-kourier configured deployment.apps/net-kourier-controller configured service/net-kourier-controller configured deployment.apps/3scale-kourier-gateway configured service/kourier configured service/kourier-internal configured

В выходных данных перечислены все ресурсы, такие как Namespaces и ConfigMaps, созданные как часть процесса установки Kourier в кластере Kubernetes.

Чтобы настроить Knative для использования Kourier в качестве сетевого уровня, отредактируйте config-network ConfigMap.

Для этого вам нужно использовать команду kubectl patch для обновления полей объекта в кластере Kubernetes. Вам также нужно будет включить некоторые флаги с этой командой:

  • --namespace указывает, где вы можете найти объект, который хотите исправить.
  • --type указывает, какое исправление следует выполнять при применении конфигураций с помощью команды patch. Доступны следующие типы: json, merge и стратегический.
  • --patch указывает данные исправления непосредственно в командной строке, а не в файле.

Запустите эту команду с соответствующими флагами:

  1. kubectl patch configmap/config-network \
  2. --namespace knative-serving \
  3. --type merge \
  4. --patch '{"data":{"ingress-class":"kourier.ingress.networking.knative.dev"}}'

Команда kubectl patch исправляет configmap/config-network с пространством имен, установленным на knative-serving, и type установите значение объединить.

Тип исправления merge позволяет вносить более целенаправленные обновления, а типы исправления json или стратегический позволяют вносить более полные обновления. Тип исправления merge указывает отдельные поля для обновления без включения всей конфигурации ресурса в команду исправления, как в случае с другими типами. Исправленные данные помечаются флагом patch.

Вы должны получить следующий вывод:

Output
configmap/config-network patched

Вывод этой команды гарантирует, что Kourier правильно настроен в кластере.

Наконец, получите внешний IP-адрес балансировщика нагрузки Kourier с помощью следующей команды:

  1. kubectl get svc kourier --namespace kourier-system

Команда kubectl get svc извлекает информацию о службах, работающих в кластере Kubernetes в указанном пространстве имен (в данном случае kourier-system). Эта команда выведет список всех служб в кластере с соответствующими IP-адресами и номерами портов.

Вы должны получить следующий вывод:

Output
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kourier LoadBalancer 10.245.186.153 138.197.231.61 80:31245/TCP,443:30762/TCP 2m33s

Выходные данные команды включают имя службы, тип службы (например, ClusterIP, NodePort и т. д.), IP-адрес кластера и номер порта, внешний IP-адрес и номер порта. Числа, перечисленные здесь, являются примерами, поэтому в вашем выводе будут отображаться другие числа.

Подготовка балансировщика нагрузки может занять несколько минут. Вы можете увидеть пустое значение или <pending> для поля EXTERNAL-IP. Если это так, подождите несколько минут и повторите команду.

Примечание. Прежде чем продолжить работу с этим учебным пособием, вам потребуется подготовить балансировщик нагрузки. После заполнения поля EXTERNAL-IP для LoadBalancer можно продолжить. В противном случае у вас могут возникнуть проблемы при настройке службы DNS.

Вы также можете настроить DNS для своего доменного имени, чтобы оно указывало на внешний IP-адрес балансировщика нагрузки. Knative предоставляет задание Kubernetes под названием default-domain, которое автоматически настроит Knative Serving на использование sslip.io в качестве DNS-суффикса по умолчанию.

sslip.io — это динамическая служба DNS (система доменных имен), которая позволяет пользователям получать доступ к своим устройствам, используя собственное доменное имя вместо IP-адреса. Использование sslip.io улучшает удаленный доступ пользователей к своим устройствам без необходимости запоминать сложные IP-адреса.

Чтобы настроить DNS-суффикс по умолчанию, вам потребуется выполнить следующую команду:

  1. kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.8.0/serving-default-domain.yaml

Вы получите следующий вывод:

Output
job.batch/default-domain configured service/default-domain-service configured

Ресурсы, необходимые для запуска службы Magic DNS, успешно настроены.

Примечание. Вы также можете добавить домен, если хотите, хотя это выходит за рамки этой статьи. Вам необходимо настроить провайдера DNS (например, Cloud DNS или Route53) и создать запись A для входящего шлюза Knative, которая сопоставляется с IP-адресом вашего кластера Knative. Затем вы должны обновить конфигурацию входного шлюза Knative, чтобы использовать созданную вами зону DNS и запись A. Вы можете протестировать конфигурацию DNS, подключившись к обслуживающему домену Knative и убедившись, что он разрешается во входной шлюз.

Вы успешно установили Knative Serving в свой кластер Kubernetes. Теперь вы можете развернуть бессерверную рабочую нагрузку с помощью Knative Serving в своем кластере Kubernetes.

Шаг 3 — Развертывание бессерверной рабочей нагрузки

На этом этапе вы развернете бессерверную рабочую нагрузку поверх Knative, которая в данный момент работает в вашем кластере Kubernetes. Вы будете использовать приложение Node.js, которое вы создали как часть предварительных требований.

Прежде чем продолжить, вы создадите новое пространство имен для развертывания вашей бессерверной рабочей нагрузки. Вы можете сделать это, выполнив следующую команду:

  1. kubectl create namespace serverless-workload

Эта команда создаст новое пространство имен с именем serverless-workload.

Вы должны получить следующий вывод:

Output
namespace/serverless-workload configured

Вывод гарантирует, что пространство имен было создано успешно.

Knative Serving использует собственный ресурс под названием Service для развертывания и управления вашими бессерверными рабочими нагрузками. Ресурс Service определяется Knative Serving API.

Как только вы создадите или измените ресурс Service, Knative Serving автоматически создаст новую Revision. Редакция — это моментальный снимок вашей рабочей нагрузки.

Всякий раз, когда создается новая редакция, трафик будет направляться в новую редакцию по маршруту. Knative Serving автоматически создает маршрут для каждой службы. Вы можете получить доступ к своей рабочей нагрузке, используя доменное имя из Route.

Чтобы развернуть бессерверную рабочую нагрузку на Knative, вы должны создать ресурс Service. Вы можете добиться этого двумя разными способами:

  • Используя kn, официальный инструмент командной строки Knative.
  • Использование инструмента командной строки kubectl для применения файлов YAML к кластеру Kubernetes.

В следующих подразделах вы будете использовать каждый из этих методов.

Вариант 1 — Использование Knative CLI

Knative CLI, kn, представляет собой интерфейс командной строки, который позволяет вам взаимодействовать с Knative.

Сначала установите kn, загрузив последнюю версию исполняемого файла Knative CLI:

  1. wget https://github.com/knative/client/releases/download/knative-v1.8.1/kn-linux-amd64

Команда wget извлечет инструмент.

Затем переместите двоичный файл в папку с именем kn:

  1. mv kn-linux-amd64 kn

Затем сделайте его исполняемым с помощью следующей команды:

  1. chmod +x kn

Наконец, переместите исполняемый двоичный файл в каталог в вашем PATH:

  1. cp kn /usr/local/bin/

Убедитесь, что kn установлен:

  1. kn version

Вы должны получить аналогичный вывод:

Output
Version: v1.8.1 Build Date: 2022-10-20 16:09:37 Git Revision: 1db36698 Supported APIs: * Serving - serving.knative.dev/v1 (knative-serving v1.8.0) * Eventing - sources.knative.dev/v1 (knative-eventing v1.8.0) - eventing.knative.dev/v1 (knative-eventing v1.8.0)

В выводе этой команды указано, что kn установлен.

Чтобы развернуть приложение Node.js с помощью kn, вы будете использовать команду kn service create. Вы включите некоторые флаги с помощью этой команды:

  • --image указывает образ контейнера, который вы хотите развернуть.
  • --port указывает порт, который прослушивает ваше приложение.
  • --name указывает имя Service, которое вы хотите создать.
  • --namespace указывает пространство имен, в котором вы хотите развернуть рабочую нагрузку.

Чтобы развернуть приложение Node.js, выполните следующую команду и обновите выделенную часть, указав свое имя пользователя DockerHub:

  1. kn service create node-service \
  2. --image your_dockerhub_username/nodejs-image-demo \
  3. --port 8080 \
  4. --namespace serverless-workload

Команда kn service создает службу Knative с именем node-service с портом, установленным на 8080, и namespace установлен на serverless-workload. Флаг image указывает расположение контейнера приложения, загруженного в Dockerhub.

Вы должны получить следующий вывод:

Output
Creating service 'node-service' in namespace 'serverless-workload': 0.236s Configuration "node-service" is waiting for a Revision to become ready. 2.230s ... 2.311s Ingress has not yet been reconciled. 2.456s Waiting for load balancer to be ready 2.575s Ready to serve. Service 'node-service' created to latest revision 'node-service-00001' is available at URL: http://node-service.serverless-workload.138.197.231.61.sslip.io

Этот вывод показывает статус создания Knative Service. После создания Service вы найдете URL-адрес Route, связанный с Service.

Выполните следующую команду, чтобы убедиться, что ресурс Service создан:

  1. kn service list --namespace serverless-workload

Команда kn service list выводит список всех служб, которые в настоящее время развернуты с помощью Knative Serving в определенном пространстве имен в кластере Kubernetes. Эта команда позволяет получить доступ к сведениям о каждой службе, включая ее имя, статус и URL-адрес.

Вы должны получить аналогичный вывод:

Output
NAME URL LATEST AGE CONDITIONS READY REASON node-service http://node-service.serverless-workload.138.197.231.61.sslip.io node-service-00001 88s 3 OK / 3 True

Из этого вывода вы можете убедиться, что новый Knative Service был создан командой kn service, которую вы выполнили ранее. Вы также найдете URL для Route и Age и Status службы.

В этом разделе вы установили Knative CLI и использовали его для развертывания бессерверной рабочей нагрузки для вашего приложения Node.js.

Вариант 2 — Создание сервисного ресурса с использованием файлов YAML

Вы также можете развернуть ресурс Service, создав файл YAML, определяющий ресурс. Этот метод полезен для обеспечения контроля версий ваших рабочих нагрузок.

Сначала вы создадите подкаталог в каталоге, содержащем ваш Dockerfile. В этом руководстве для подкаталога используется имя knative. Создайте папку:

  1. mkdir knative

Затем вы создадите файл YAML с именем service.yaml в каталоге knative:

  1. nano knative/service.yaml

Во вновь созданный файл service.yaml добавьте следующие строки, чтобы определить Service, который будет развертывать ваше приложение Node.js:

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: node-yaml-service
  namespace: serverless-workload
spec:
  template:
    metadata:
      name: node-yaml-service-v1
    spec:
      containers:
        - image: docker.io/your_dockerhub_username/nodejs-image-demo
          ports:
            - containerPort: 8080

Файл YAML Knative Service содержит следующую информацию:

  • name в первом разделе metadata определяет name ресурса Service.
  • namespace указывает namespace, в котором вы хотите развернуть рабочую нагрузку.
  • name в первом разделе spec указывает name Revision.
  • image во втором разделе spec указывает image контейнера, который вы хотите развернуть.
  • containerPort указывает порт, который слушает ваше приложение.

Обязательно обновите выделенный текст информацией, которую вы выбрали для своего приложения и системы, а также своим именем пользователя DockerHub.

Сохраните и закройте файл.

Теперь вы можете развернуть ресурс Service, выполнив следующую команду:

  1. kubectl apply -f knative/service.yaml

Вы должны получить следующий вывод:

Output
service.serving.knative.dev/node-yaml-service created

Вывод указывает, что ресурс Service успешно создан.

Выполните следующую команду, чтобы убедиться, что ресурс Service создан:

  1. kn service list --namespace serverless-workload

Команда kn service list выводит список всех служб, которые в настоящее время развернуты с помощью Knative Serving в определенном пространстве имен. Эта команда позволяет получить доступ к сведениям о каждой службе.

Вы должны получить следующий вывод:

Output
NAME URL LATEST AGE CONDITIONS READY REASON node-service http://node-service.serverless-workload.174.138.127.211.sslip.io node-service-00001 9d 3 OK / 3 True node-yaml-service http://node-yaml-service.serverless-workload.174.138.127.211.sslip.io node-yaml-service-v1 9d 3 OK / 3 True

Вы можете убедиться, что новый Service Knative был создан на основе YAML-файла Knative Service, который вы выполнили ранее. В этом разделе вы создали node-yaml-service. Вы также можете найти URL-адрес Knative Route.

В этом разделе вы использовали файл YAML для создания бессерверной рабочей нагрузки для вашего приложения Node.js.

На этом шаге вы создали ресурс Service Knative, используя инструмент командной строки kn и файл YAML. Далее вы получите доступ к рабочей нагрузке приложения, которое вы развернули с помощью Knative.

Шаг 4 — Доступ к рабочей нагрузке приложения

Теперь, когда вы развернули бессерверную рабочую нагрузку, вы можете получить к ней доступ с помощью URL-адреса из Knative Route, созданного как часть бессерверной рабочей нагрузки. Knative Route определяет, как входящий HTTP-трафик должен направляться к определенной службе или приложению.

Чтобы получить список всех маршрутов Knative, выполните следующую команду:

  1. kn route list --namespace serverless-workload

Команда kn route list выводит список всех маршрутов Knative в определенном пространстве имен в кластере Kubernetes.

Вы должны получить аналогичный вывод:

Output
NAME URL READY node-service http://node-service.serverless-workload.138.197.231.61.sslip.io True node-yaml-service http://node-yaml-service.serverless-workload.138.197.231.61.sslip.io True

Вы будете использовать URL-адреса, сгенерированные для Knative Routes, чтобы убедиться, что все работает должным образом.

Откройте любой из URL-адресов в браузере. При доступе к сайту в браузере загрузится целевая страница из приложения Node:

Вы успешно развернули бессерверную рабочую нагрузку с помощью Knative в своем кластере Kubernetes.

Заключение

В этом руководстве вы развернули бессерверную рабочую нагрузку с помощью Knative. Вы создали ресурс Knative Service с помощью инструмента командной строки kn и файлов YAML. Этот ресурс развернул приложение Node.js в вашем кластере Kubernetes, доступ к которому вы получили с помощью URL-адреса Route.

Чтобы узнать больше о функциях, которые предлагает Knative, например о документации Knative, см.

Чтобы продолжить разработку с помощью DigitalOcean Kubernetes (DOKS), обратитесь к нашим руководствам по поддержке Kubernetes.