Как установить минимальный масштаб 1 для k-native в GKE?

Я установил k-native на свой кластер k8s на GKE. Сейчас я провожу тест с a образец приложения HelloWorld.

Поскольку я работаю на GKE и плачу за кластер 24/7, нет смысла масштабировать развертывание до нуля и всегда иметь холодный старт для первого запроса.

Список того, что я пробовал до сих пор

  1. Выполнил kubectl -n knative-serving edit cm config-autoscaler и затем изменил enable-scale-to-zero флаг на «false» с «true» как по этой ссылке следует
  2. Выполнено kubectl annotate --overwrite svc helloworld-go-5jm9r autoscaling.knative.dev/minScale="1", как указано в этой ссылке < / а>
  3. Провел kubectl annotate --overwrite svc helloworld-go-5jm9r autoscaling.knative.dev/class- как один из моих собственных экспериментов

Независимо от того, какие модификации я сделал, модули HelloWorld, запущенные для обслуживания, прекратились, поскольку больше не поступало вызовов.

$ kubectl get po --watch NAME READY STATUS RESTARTS AGE helloworld-go-5jm9r-deployment-847d6fdb49-njktv 2/2 Running 0 13s helloworld-go-5jm9r-deployment-847d6fdb49-njktv 2/2 Terminating 0 96s helloworld-go-5jm9r-deployment-847d6fdb49-njktv 1/2 Terminating 0 99s helloworld-go-5jm9r-deployment-847d6fdb49-njktv 0/2 Terminating 0 118s

Правильная установка коэффициента minScale на 1 должна была сохранить модуль в живых навсегда, я ошибаюсь?

Люди говорят, что опция setting-a-custom-minScale доступна кое-где, но я не могу ее включить. Что мне не хватает? Например, приветствуются конкретные команды для выполнения.


2-я попытка:

$ kubectl annotate --overwrite revision helloworld-go-5jm9r autoscaling.knative.dev/minScale="1"
revision.serving.knative.dev/helloworld-go-5jm9r annotated

$ kubectl describe revision
Name:         helloworld-go-5jm9r
Namespace:    default
Labels:       serving.knative.dev/configuration=helloworld-go
              serving.knative.dev/configurationGeneration=1
              serving.knative.dev/service=helloworld-go
Annotations:  autoscaling.knative.dev/minScale: 1
              serving.knative.dev/lastPinned: 1560488757
(..omit..)

$ kubectl get po --watch
NAME                                              READY   STATUS    RESTARTS   AGE
helloworld-go-5jm9r-deployment-65dd4cc9d4-4hhrw   2/2     Running   0          19s
helloworld-go-5jm9r-deployment-65dd4cc9d4-4hhrw   2/2   Terminating   0     98s
helloworld-go-5jm9r-deployment-65dd4cc9d4-4hhrw   1/2   Terminating   0     101s
helloworld-go-5jm9r-deployment-65dd4cc9d4-4hhrw   0/2   Terminating   0     2m

Аннотирование ревизии не поддерживало запущенный модуль ... Есть идеи?


Отвечать:

Это был PodAutoscaler, а не Сервис или Редакция.

$ kubectl annotate --overwrite PodAutoscaler helloworld-go-5jm9r autoscaling.knative.dev/minScale="2"
podautoscaler.autoscaling.internal.knative.dev/helloworld-go-5jm9r annotated

$ kubectl describe  PodAutoscaler
Name:         helloworld-go-5jm9r
Namespace:    default
Labels:       app=helloworld-go-5jm9r
              serving.knative.dev/configuration=helloworld-go
              serving.knative.dev/configurationGeneration=1
              serving.knative.dev/revision=helloworld-go-5jm9r
              serving.knative.dev/revisionUID=706b4f42-8be6-11e9-a475-42010a920158
              serving.knative.dev/service=helloworld-go
Annotations:  autoscaling.knative.dev/class: kpa.autoscaling.knative.dev
              autoscaling.knative.dev/metric: concurrency
              autoscaling.knative.dev/minScale: 2
(..omit..)

$ kubectl get po --watch
NAME                                              READY   STATUS              RESTARTS   AGE
helloworld-go-5jm9r-deployment-65dd4cc9d4-6rtr9   0/2     ContainerCreating   0          2s
helloworld-go-5jm9r-deployment-65dd4cc9d4-pqvcz   2/2     Running             0          116s
helloworld-go-5jm9r-deployment-65dd4cc9d4-6rtr9   1/2   Running   0     4s
helloworld-go-5jm9r-deployment-65dd4cc9d4-6rtr9   2/2   Running   0     4s

person jin c    schedule 13.06.2019    source источник


Ответы (2)



Я думаю, что аннотацию нужно добавить к объекту Revision, но вы аннотируете объект Service, и поэтому это не сработает.

Попробуйте перечислить все свои Revision объекты

kubectl get revision

и аннотировать интересующий вас объект, используя ту же команду, которую вы использовали для аннотирования Service.

person Jose Armesto    schedule 13.06.2019