跳至內容

自動縮放

Knative Serving 提供自動縮放,也稱為autoscaling。這表示 Knative Service 預設會在未使用時縮減至零執行中的 Pod。

列出您的 Knative Service

使用 Knative (kn) CLI 來檢視您的 Knative Service 的主機 URL

執行命令來檢視 Knative Service 列表

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 Service 列表

kubectl get ksvc

預期輸出

NAME    URL                                                LATESTCREATED   LATESTREADY   READY   REASON
hello   http://hello.default.${LOADBALANCER_IP}.sslip.io   hello-00001     hello-00001   True

存取您的 Knative Service

在您的瀏覽器中開啟先前的 URL 或執行命令來存取您的 Knative Service

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 後如何縮放至零

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 Service

在您的瀏覽器中重新執行 Knative Service。您可以看到新的 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 命令。

我們使用分析和 Cookie 來了解網站流量。您使用我們網站的相關資訊會與 Google 分享,以便達到該目的。 瞭解更多。