淘先锋技术网

首页 1 2 3 4 5 6 7

Kubernetes

1. 概念

  • Kubernetes Cluster

    • Master:

      • 负责管理整个集群。
    • Node:

      • 虚拟机或物理机,充当工作机器。

      • 每个Node都有 Kubelet , 它管理 Node 而且是 Node 与 Master 通信的代理。

      • 具有用于​​处理容器操作的工具,例如 Docker 或 rkt 。

      • 处理生产级流量的 Kubernetes 集群至少应具有三个 Node,因为如果一个 Node 出现故障其对应的 etcd 成员和控制平面实例都会丢失,并且冗余会受到影响。

    在这里插入图片描述

  • Deployment 配置

    • Deployment 指挥 Kubernetes 如何创建和更新应用程序的实例。创建 Deployment 后,Kubernetes master 将应用程序实例调度到集群中的各个节点上。

    • 创建应用程序实例后,Kubernetes Deployment 控制器会持续监视这些实例。

    • 如果托管实例的节点关闭或被删除,则 Deployment 控制器会将该实例替换为集群中另一个节点上的实例。 这提供了一种自我修复机制来解决机器故障维护问题。

    在这里插入图片描述

  • Pod

    • 创建 Deployment 时, Kubernetes 添加了一个 Pod 来托管你的应用实例。

    • Pod 是抽象出来的,表示一组一个或多个应用程序容器(如 Docker),以及这些容器的一些共享资源。

      • 共享存储,当作卷
      • 网络,作为唯一的集群 IP 地址
      • 容器运行信息
    • 生命周期:当一个工作 Node 挂掉后, 在 Node 上运行的 Pod 也会消亡。 ReplicaSet 会自动地通过创建新的 Pod 使集群回到目标状态,以保证应用程序正常运行。

    在这里插入图片描述

  • 工作节点(参与计算的物理机或虚拟机)

    • 每个工作节点由主节点管理。工作节点可以有多个 pod ,Kubernetes 主节点会自动处理在集群中的工作节点上调度 pod 。

    • 每个工作节点至少包含:

      • Kubelet
      • 容器运行时(Docker)

    在这里插入图片描述

  • Service

    • 一种抽象概念,它定义了 Pod 的逻辑集和访问 Pod 的协议。

    • 尽管每个 Pod 都有一个唯一的 IP 地址,但是如果没有 Service ,这些 IP 不会暴露在集群外部。

    • Service 匹配一组 Pod 是使用 标签(Label)和选择器(Selector)。

    在这里插入图片描述

    在这里插入图片描述

2. 扩缩

扩缩容:

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

可以进行负载均衡

扩容过程如下图:

在这里插入图片描述

在这里插入图片描述

3. 滚动更新

用户希望应用程序始终可用,而开发人员则需要每天多次部署它们的新版本。

滚动更新 允许通过使用新的实例逐步更新 Pod 实例,零停机进行 Deployment 更新。新的 Pod 将在具有可用资源的节点上进行调度。

默认情况下,更新期间不可用的 pod 的最大值和可以创建的新 pod 数都是 1。这两个选项都可以配置为(pod)数字或百分比。

在 Kubernetes 中,更新是经过版本控制的,任何 Deployment 更新都可以恢复到以前的(稳定)版本。

滚动更新过程如下3图:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述