LoginSignup
1
3

More than 1 year has passed since last update.

ローカルでKnativeを動かす

Last updated at Posted at 2021-07-20

Knativeとは

Kubernetes上でサーバーレスなアプリケーションをデプロイ・実行・管理するコンポーネントセットです
開発者が複雑なインフラストラクチャを気にせずコードに集中するための環境を提供してくれます

  • ゼロスケーリングと自動スケール
  • Kubernetes上であればベンダーロックインされない
  • 一般的な言語やフレームワークの多くをサポート

コンテナの実行とスケーリング、リビジョン管理に関するServingと、イベントのサブスクリプションを管理するEventing、2つのコンポーネントから構築されます

ローカル環境でKnativeを構築してコンテナのデプロイと実行を試してみます

環境

macOS Big Sur 11.4

Knativeの構築

quickstartプラグインが出ているので、以下手順は少し古い

事前準備

$ brew install kind
$ brew install kubectl 
$ brew install knative/client/kn

kindkonkを使って構築します

$ curl -sL install.konk.dev | bash
# 割と時間かかる

確認

$ kind get clusters
knative

# ネームスペースと複数のリソースが作成されてる
$ kubectl get ns | grep knative
knative-eventing     Active   3m40s
knative-serving      Active   5m8s

$ kubectl get all -n knative-serving
NAME                                      READY   STATUS    RESTARTS   AGE
3scale-kourier-control-5b464bcd66-4snkz   1/1     Running   0          4m50s
activator-8bf774c58-tw8kt                 1/1     Running   0          5m32s
...

$ kubectl get all -n knative-eventing
NAME                                        READY   STATUS    RESTARTS   AGE
pod/eventing-controller-8548bbf497-6ggpg    1/1     Running   0          4m42s
pod/eventing-webhook-5fffb9c9cf-6bqzc       1/1     Running   0          4m41s
...

アプリケーションのデプロイと実行

$ kn service create hello \
--image gcr.io/knative-samples/helloworld-go \
--port 8080 \
--env TARGET=World \
--revision-name=world

$ curl http://hello.default.127.0.0.1.nip.io
Hello World!

# デフォルトのネームスペースにPodが立ち上がってる
$ kubectl get po
NAME                                      READY   STATUS    RESTARTS   AGE
hello-world-deployment-7c68546989-x4gk8   2/2     Running   0          105s

ゼロスケーリングの確認

PodをwatchしているとしばらくしてPodが削除されます
Podが存在しない状態で先程のエンドポイントを叩くと再度Podが作成されます

$ kubectl get pod -l serving.knative.dev/service=hello -w
NAME                                      READY   STATUS    RESTARTS   AGE
hello-world-deployment-7c68546989-2fslw   2/2     Running   0          52s
hello-world-deployment-7c68546989-2fslw   2/2     Terminating   0          63s
hello-world-deployment-7c68546989-2fslw   1/2     Terminating   0          65s
hello-world-deployment-7c68546989-2fslw   0/2     Terminating   0          96s
hello-world-deployment-7c68546989-bzv8g   0/2     Pending       0          0s
hello-world-deployment-7c68546989-bzv8g   0/2     Pending       0          0s
hello-world-deployment-7c68546989-bzv8g   0/2     ContainerCreating   0          0s
hello-world-deployment-7c68546989-bzv8g   1/2     Running             0          1s
hello-world-deployment-7c68546989-bzv8g   1/2     Running             0          2s
hello-world-deployment-7c68546989-bzv8g   2/2     Running             0          3s

構築した環境の削除

$ kn service delete hello
$ kind delete clusters knative

まとめ

割と簡単に試せました

本番環境に構築する際は以下のドキュメントが参考になります
https://knative.dev/docs/admin/install/

最後に、こちらの記事で詳細にKnativeの解説がされています

1
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3