Kubectl scale命令的最佳实践

云和安全管理服务专家辛体云朱富向翻译

Kubectl scale是帮助我们管理Kubernetes部署的众多工具之一。在本文中,我们将学习如何使用这个工具和最佳实践。

kubectl scale命令通过调整运行容器的数量来立即扩展应用程序。这是增加部署副本数量的最快、最简单的方法,可用于应对服务高峰和日常维护变化。

在本文中,我们将学习如何使用kubectl scale来扩展一个简单的Kubernetes部署,同时,我们还将了解与该命令相关的各种参数。最后形成了kubectl量表的最佳实践,也形成了一些调整Kubernetes数量的备选方法。

Kubectl scale用于更改对象的副本数量,如Kubernetes部署、副本集、复制控制器和状态集。当我们增加副本数量时,Kubernetes将启动一个新的Pod来扩展我们的服务。减少副本的数量将导致Kubernetes优雅地终止一些pod,从而释放集群资源。

我们可以运行kubectl scale来手动调整应用程序的副本数量,以响应不断变化的服务容量需求。可以通过增加副本的数量和提供更多的应用程序实例来处理增加的流量负载。当服务突发减少时,可以减少副本的数量。这有助于通过避免不必要的资源来降低成本。

kubectl量表的基本用法如下:

执行这个命令会将名为demo-deployment的部署调整为有三个运行副本。我们可以通过替换资源名称而不是部署它们来定位不同类型的资源:

现在我们来看一个使用kubectl scale的扩展部署的完整例子。这是一个定义简单部署的YAML文件:

将这个YAML保存到工作目录中的demo-deployment.yaml。接下来,使用kubectl将部署添加到我们的集群中:

现在运行kubectl get pods命令,查看已经为部署创建的pods:

对于生产应用程序,单个副本是不够的。如果托管pod的节点因任何原因离线,我们可能会遇到停机。使用kubectl scale增加副本数量以提供更多空间:

重复kubectl get pods命令,确认部署已经成功扩展:

现在有五个吊舱在运行。从AGE列中,您可以看到scale命令保留了原始窗格,并添加了四个新窗格。

经过进一步考虑,我们可以决定该应用程序不需要五份副本。它只运行一个静态的NGINX Web服务器,所以每个用户请求的资源消耗应该很低。再次使用scale命令减少副本数量,避免浪费群集容量:

重复kubectl get pods命令:

Kubernetes已将两个正在运行的pod标记为终止。这将把正在运行的副本数量减少到请求的三个单元。被选择驱逐的pod将被发送一个sigterm(/post/sigterm-signal-15-Linux-graceful-termination-exit-code-143)信号,并被允许优雅地终止(/blog/products/containers-kubernetes/kubernetes-best-practices-terminating-with-grace).停止时,它们将从pod列表中删除。

有时,我们可能希望扩展资源,但前提是一定数量的拷贝已经在运行。这可以避免意外覆盖以前的副本,例如群集中其他用户所做的更改。

在命令中包含- current-replicas标志可以达到以下效果:

此示例将演示部署扩展到五个副本,但前提是当前有三个副本正在运行。- current -replicas值总是完全匹配;我们不能将条件表述为“小于”或“大于”特定计数。

当我们提供多个名称作为参数时,kubectl scale命令可以一次扩展多个资源。每个资源都将扩展到由- replicas标志设置的相同拷贝数。

该命令将应用程序和数据库部署扩展到每五个副本。

我们可以通过提供- all标志来扩展特定类型的每个资源,例如以下示例扩展默认名称空间中的所有部署:

这将选择当前活动名称空间中的每个匹配资源。缩放后的对象显示在命令的输出中。

我们可以很好地控制使用- selector标志缩放的对象。我们可以使用标准的选择语法根据标签来过滤对象(/post/using-kubernetes-labels-selectors-annotations)。这是一个使用app-name=demo-app标记扩展所有部署的示例:

- timeout标志设置Kubectl在放弃缩放操作之前等待的时间。默认情况下,没有等待期。此标志接受可读的时间值,如5m或1h:

如果我们不能立即完成缩放变化,这可以避免长期终端挂起。尽管kubectl scale是一个命令性的命令,但是当一个新的pod被分派到一个节点时,有时可能需要几分钟来更改缩放。

使用kubectl scale通常是扩展工作负载最快、最可靠的方法。但是,为了安全操作,您需要记住一些最佳实践。如下所示:

首先,将spec.replicas字段更改为我们需要的新副本的数量:

现在对修改后的文件重复kubectl apply命令:

kubectl scale的另一个替代方案是Kubernetes对自动缩放的支持。配置这种机制允许Kubernetes根据CPU利用率和网络活动等指标,在配置的最小值和最大值之间自动调整副本数量。

Kubectl scale命令是一种扩展Kubernetes部署、副本集、复制控制器和有状态集的通用方法。它在每次调用时以一个或多个对象为目标,并扩展它们以运行指定数量的pod。

我们可以选择设置条件,所以只有当存在一定数量的副本时,我们才会改变缩放比例,从而避免错误方向的意外调整大小。

同时,我们也希望遵循本文中提到的一些最佳实践,从而平稳可靠地实现资源的扩展和收缩。

*原始:/post/kubectl-scale