跳到内容

自动扩缩

Knative Serving 提供自动伸缩,也称为 **autoscaling**。这意味着默认情况下,当 Knative Service 不在使用时,它会缩减到零个运行中的 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 命令。

我们使用分析和 cookie 来了解网站流量。有关您使用我们网站的信息会与 Google 共享以达到此目的。了解更多。