Kubernetes Pod 和 Deployment 实战使用详解

阅读时长 5 分钟读完

在 Kubernetes 中,Pod 是最小的调度单元。而 Deployment 是管理 Pod 的高级控制器。

本文将详细介绍 Pod 和 Deployment 的使用方法,包括创建 Pod 和 Deployment、管理容器、扩容、回滚等操作。同时,本文也将包含样例代码和详细指导,帮助读者更好的理解和应用 Kubernetes。

什么是 Pod?

Pod 就是一组紧密关联的容器集合,是 Kubernetes 中最小的调度单元。而且这些容器是运行在同一个主机上,共享同一个网络命名空间和存储。容器可以通过 localhost 相互通信,而不需要暴露端口到宿主机或外部网络。

Pod 是临时性的,每个 Pod 都是根据一个或多个容器的规约创建的。Pod 运行在 Node 上,可以被调度到任何 Node 上。Pods 可以根据集群状态扩容或回收。

Pod 的管理

Pod 在 Kubernetes 中是短暂的,由于 Node 上的多种原因,Pod 可以随时消失,比如 Node 崩溃、Pod 的容器失效等。为了保证 Pod 的高可用性、寿命管理和资源分配,Kubernetes 提供了多种控制器来管理 Pod,其中最常用的是 Deployment。

Pod 生命周期

Pod 生命周期共有以下四个状态:

  • Pending:等待调度
  • Running:Pod 正在运行,至少有一个容器在运行
  • Succeeded:Pod 中的所有容器都已运行成功并已退出
  • Failed:Pod 中的所有容器都已终止,至少有一个容器失败

使用 Pod

下面是一个简单的 Pod 样例代码:

-- -------------------- ---- -------
----------- --
----- ---
---------
  ----- ------
-----
  -----------
  - ----- ------------
    ------ ------------
    ------
    - -------------- --

这个 YAML 文件描述了一个名为 my-pod 的 Pod,其中包含一个名为 my-container 的容器。容器运行 nginx 应用并暴露端口 80。

要创建 Pod,我们可以使用以下命令:

查看 Pod 状态:

当您看到该 Pod 的状态为 Running 时,您可以尝试使用 kubectl port-forward 命令将本地端口转发到 Pod 端口:

现在,您可以使用 localhost:8080 访问运行中的 nginx 应用程序。

什么是 Deployment?

Deployment 是一个用来管理 Pod 的高阶控制器。它允许您指定想要运行的 Pod 的期望状态,然后 Deployment 会处理所有必要的硬件和网络资源,以确保 Pod 的实际状态符合所需的状态。

Deployment 可以管理多个 ReplicaSets,以控制 Pod 的副本数量。

使用 Deployment

下面的 YAML 文件创建了一个 Deployment,其中有一个 Pod,它运行一个名为 my-nginx 的 nginx 容器。

-- -------------------- ---- -------
----------- -------
----- ----------
---------
  ----- ----------------
-----
  --------- -
  ---------
    ------------
      ---- -----
  ---------
    ---------
      -------
        ---- -----
    -----
      -----------
      - ----- --------
        ------ ------------
        ------
        - -------------- --

这个文件包含了 Deployment 的一些重要信息:

  • replicas:该 Deployment 需要的副本数。
  • selector:Deployment 控制的 Pod 选择器。
  • template:创建 Pod 的模板。

要创建 Deployment,请运行以下命令:

列出 Deployment:

要扩展该 Deployment,请运行:

要缩减该 Deployment,请运行:

回滚 Deployment

在 Kubernetes 中,回滚 Deployment 是一种更新策略,可以在更新失败的情况下回到上一个成功的版本。Deployment 会为每个历史版本保留 ReplicaSet,并通过添加一个新的 ReplicaSet 以及逐步减少旧 ReplicaSet 的副本数量,将 Pod 的实际状态更改为所需的状态。

下面是一个回滚 Deployment 的例子:

执行此操作后,Deployment 将回退到上一个成功的版本。

总结

通过本文的介绍,我们了解了 Kubernetes 中的 Pod 和 Deployment 的基本概念和使用方法。了解了 Pod 和 Deployment 的生命周期和状态,以及如何创建和管理它们。同时也介绍了回滚 Deployment 的方法。

Pod 和 Deployment 是 Kubernetes 中最重要的概念之一。它们提供了一个强大的基础架构,可以实现容器的自动化部署、故障转移和弹性扩展。熟练掌握 Pod 和 Deployment 的使用方法,将使得您能够更好的管理 Kubernetes 容器集群,并实现业务的可靠运行。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/647ab079968c7c53b065cfc0

纠错
反馈