模块 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 显示 CURRENT/DESIRED 副本的比率
- UP-TO-DATE 显示已更新以达到所需状态的副本数。
- AVAILABLE 显示有多少应用程序副本可供用户使用。
- AGE 显示应用程序已运行的时间。
要查看由 Deployment 创建的 ReplicaSet,请运行
kubectl get rs
请注意,ReplicaSet 的名称始终格式化为 [DEPLOYMENT-NAME]-[RANDOM-STRING]
。随机字符串是随机生成的,并使用 pod-template-hash 作为种子。
此命令的两个重要列是
- DESIRED 显示应用程序所需的副本数,您在创建 Deployment 时定义。这是所需的状态。
- CURRENT 显示当前正在运行的副本数。
接下来,让我们将 Deployment 扩展到 4 个副本。我们将使用 kubectl scale
命令,后跟部署类型、名称和所需的实例数
kubectl scale deployments/kubernetes-bootcamp --replicas=4
要再次列出您的 Deployment,请使用 get deployments
kubectl get deployments
更改已应用,并且我们有 4 个应用程序实例可用。接下来,让我们检查 Pod 的数量是否已更改
kubectl get pods -o wide
现在有 4 个 Pod,具有不同的 IP 地址。更改已在 Deployment 事件日志中注册。要检查,请使用 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 - 缩减
要将 Service 缩减为 2 个副本,请再次运行 scale
命令
kubectl scale deployments/kubernetes-bootcamp --replicas=2
使用 get deployments
命令列出 Deployment,以检查更改是否已应用
kubectl get deployments
副本数减少到 2。使用 get pods
列出 Pod 的数量
kubectl get pods -o wide
这证实了 2 个 Pod 已终止。