自动扩缩¶
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 命令。