自動縮放¶
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
命令。