Как установить минимальный масштаб 1 для k-native в GKE? - PullRequest
0 голосов
/ 13 июня 2019

Я установил k-native на свой кластер k8s в GKE.Сейчас я запускаю тест с образцом приложения 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- как один из моих собственных экспериментов

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

Люди говорят, что опция 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, не Service или Revision.

$ 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

Ответы [ 2 ]

1 голос
/ 17 июня 2019

Необходимо добавить аннотацию к объекту PodAutoscaler.

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

Или вы можете установить minScale в файле конфигурации yaml, как описано в ссылка

apiVersion: serving.knative.dev/v1alpha1 # Current version of Knative
kind: Service
metadata:
  name: helloworld-min2 # The name of the app
  namespace: default # The namespace the app will use
spec:
  template:
    spec:
      containers:
        - image: gcr.io/knative-samples/helloworld-go # The URL to the image of the app
          env:
            - name: TARGET # The environment variable printed out by the sample app
              value: "Go Jin v1"
    metadata:
      annotations:
        autoscaling.knative.dev/minScale: "2"
0 голосов
/ 13 июня 2019

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

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

kubectl get revision

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

...