自动伸缩¶
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 后如何缩减到零。
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
命令。