练习 - 在 Kubernetes 中证明微服务的恢复能力

已完成

Kubernetes 的一大好处是支持声明性配置管理。 你在配置文件中定义的服务会不惜一切代价进行保留。

这意味着,如果出现故障,Kubernetes 会自动重启在发生故障之前运行的服务。

让我们通过删除 storefrontend Pod,然后验证 Kubernetes 是否重启它,来看看此恢复能力如何发挥作用。

  1. 首先,在 codespace 上的“终端”中,运行 kubectl get pods 并记下 storefrontend Pod 的名称(包括随机字符串)。 下面是示例输出:

    @user-name /workspaces/eShopLite % kubectl get pods
    
    NAME                             READY   STATUS    RESTARTS   AGE
    productsbackend-7445bdb5c9-pnpk6 1/1     Running   0          31m
    storefrontend-5b6cc765c4-hjpx4   1/1     Running   0          63m
    
  2. 现在,使用 kubectl delete 命令删除 storefrontend Pod。 你需要指定 Pod 的完整名称,包括随机字符串。

    kubectl delete pod storefrontend-5b6cc765c4-hjpx4
    

    你将立即收到一条消息,指示 Pod 已被删除。

  3. 由于 Kubernetes 将保持配置文件中声明的系统状态,因此它将立即启动另一个 Pod 实例。 你可以通过运行 kubectl get pods 来进行验证。

    @user-name /workspaces/eShopLite % kubectl get pods
    
    NAME                             READY   STATUS    RESTARTS   AGE
    productsbackend-7445bdb5c9-pnpk6 1/1     Running   0          31m
    storefrontend-5b6cc765c4-vwmv8   1/1     Running   0          7s
    

    请注意,storefrontend 名称后面的随机字符串已更改,表示 Pod 是新实例。 此外,“AGE”值也要小得多。

在本练习中,你了解了 Kubernetes 如何自动保持声明的系统状态,即使出现故障也是如此。

知识检查

1.

当 Pod 失败时,Kubernetes 重启它的原因是什么?