オートスケーリング¶
Knative Servingは、**オートスケーリング**とも呼ばれる自動スケーリングを提供します。つまり、Knativeサービスは、デフォルトでは、使用されていないときに実行中のPod数をゼロにスケールダウンします。
Knativeサービスの一覧表示¶
Knative(`kn`)CLIを使用して、KnativeサービスがホストされているURLを表示します。
コマンドを実行して、Knativeサービスの一覧を表示します。
kn service list
予期される出力
NAME URL LATEST AGE CONDITIONS READY
hello http://hello.default.${LOADBALANCER_IP}.sslip.io hello-00001 13s 3 OK / 3 True
コマンドを実行して、Knativeサービスの一覧を表示します。
kubectl get ksvc
予期される出力
NAME URL LATESTCREATED LATESTREADY READY REASON
hello http://hello.default.${LOADBALANCER_IP}.sslip.io hello-00001 hello-00001 True
Knativeサービスへのアクセス¶
ブラウザで上記のURLを開くか、コマンドを実行して、Knativeサービスにアクセスします。
echo "Accessing URL $(kn service describe hello -o url)"
curl "$(kn service describe hello -o url)"
予期される出力
Hello World!
`curl: (6) Could not resolve host: hello.default.${LOADBALANCER_IP}.sslip.io`が表示されていますか?
場合によっては、DNSサーバーが`*.sslip.io`アドレスを解決しないように設定されていることがあります。この問題が発生した場合は、別のネームサーバーを使用してこれらのアドレスを解決することで修正できます。
正確な手順は、ディストリビューションによって異なります。たとえば、`systemd-resolved`を使用するUbuntu派生システムでは、`/etc/systemd/resolved.conf`に次のエントリを追加できます。
[Resolve]
DNS=8.8.8.8
Domains=~sslip.io.
その後、`sudo service systemd-resolved restart`でサービスを再起動するだけです。
MacOSユーザーの場合、こちらの説明に従って、ネットワーク設定を使用してDNSとドメインを追加できます。
オートスケーリングの確認¶
Podを監視し、URLへのトラフィックが停止した後、Podがゼロにスケールダウンする様子を確認します。
kubectl get pod -l serving.knative.dev/service=hello -w
注記
Podがスケールダウンするまで最大2分かかる場合があります。サービスに再びpingを送信すると、このタイマーがリセットされます。
予期される出力
NAME READY STATUS
hello-world 2/2 Running
hello-world 2/2 Terminating
hello-world 1/2 Terminating
hello-world 0/2 Terminating
Knativeサービスのスケールアップ¶
ブラウザでKnativeサービスを再実行します。新しいPodが再び実行されていることがわかります。
予期される出力
NAME READY STATUS
hello-world 0/2 Pending
hello-world 0/2 ContainerCreating
hello-world 1/2 Running
hello-world 2/2 Running
`Ctrl + c`で`kubectl watch`コマンドを終了します。