模块 5 - 扩展你的应用

难度:初级 预计时间: 10 分钟

本场景的目标是使用 kubectl scale 命令扩展部署,并查看负载均衡的实际效果。

步骤 1 - 扩展部署

首先,让我们使用 get deployment 命令列出部署:

kubectl get deployments

输出应类似于:

NAME                  READY   UP-TO_DATE   AVAILABLE   AGE
kubernetes-bootcamp   1/1     1            1           11m

我们应该有 1 个 Pod。如果没有,请再次运行该命令。这表明:

  • NAME 列出了集群中部署的名称。
  • READY 显示了当前/期望副本的比率。
  • UP-TO-DATE 显示已更新到期望状态的副本数量。
  • AVAILABLE 显示了有多少应用程序副本可供用户使用。
  • AGE 显示了应用程序已运行的时间。

要查看部署创建的 ReplicaSet,请运行:

kubectl get rs

请注意,ReplicaSet 的名称始终格式为 [DEPLOYMENT-NAME]-[RANDOM-STRING]。随机字符串是随机生成的,并使用 pod-template-hash 作为种子。

此命令的两个重要列是:

  • DESIRED 显示应用程序期望的副本数量,这是您在创建部署时定义的。这是期望状态。
  • CURRENT 显示当前正在运行的副本数量。

接下来,让我们将部署扩展到 4 个副本。我们将使用 kubectl scale 命令,后跟部署类型、名称和期望的实例数量:

kubectl scale deployments/kubernetes-bootcamp --replicas=4

要再次列出您的部署,请使用 get deployments

kubectl get deployments

更改已应用,我们有 4 个可用的应用程序实例。接下来,让我们检查 Pod 数量是否发生变化:

kubectl get pods -o wide

现在有 4 个 Pod,IP 地址各不相同。此更改已记录在部署事件日志中。要检查该日志,请使用 describe 命令:

kubectl describe deployments/kubernetes-bootcamp

您还可以在此命令的输出中看到现在有 4 个副本。

步骤 2 - 负载均衡

让我们检查 Service 是否正在进行流量负载均衡。为了找出暴露的 IP 和端口,我们可以像在上一模块中学到的那样使用 describe service 命令:

kubectl describe services/kubernetes-bootcamp

Docker Desktop 用户须知: 由于 Docker Desktop 网络限制,默认情况下您无法直接从主机访问 Pod。运行 minikube service kubernetes-bootcamp,这将创建一个从 Pod 到主机的 SSH 隧道,并在您的默认浏览器中打开一个连接到该服务的窗口。刷新浏览器页面以查看负载均衡是否正常工作。按下 Control-C 可以终止隧道,然后继续进行步骤 3。

创建一个名为 NODE_PORT 的环境变量,其值为节点端口:

export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}')
echo NODE_PORT=$NODE_PORT

接下来,我们将对暴露的 IP 和端口执行 curl 命令。多次执行此命令:

curl $(minikube ip):$NODE_PORT

每次请求都命中不同的 Pod。这表明负载均衡正在正常工作。

步骤 3 - 缩减

要将服务缩减到 2 个副本,请再次运行 scale 命令:

kubectl scale deployments/kubernetes-bootcamp --replicas=2

列出部署以检查更改是否已应用,使用 get deployments 命令:

kubectl get deployments

副本数量已减少到 2。使用 get pods 命令列出 Pod 数量:

kubectl get pods -o wide

这证实了有 2 个 Pod 被终止。


最后修改于 2024 年 8 月 11 日:修正了拼写错误 (3b2576d89)