kubernets学习笔记——kubernets的相关概念


  Kubernets 是容器技术快速发展的产物。Kubernets 的出现是的大规模的服务器服务运维变得便捷、简单起来。本节从最简单的概念开始,循序渐进的学习 Kubernets。

理解 Kubernets 技术

1、什么是 Kubernets

  简单地讲,Kubernets 是一套自动化容器运维的开源平台,这些运维操作包括部署、调度和节点集群间扩展。Kubernets 的主要功能是容器编排,是指确保所有容器都按照计划运行再物理机或虚拟机上。

2、为什么使用 Kubernets

  Kubernets 是一个自动化部署、伸缩和操作应用程序容器的开源平台。使用 Kubernets 可以快速、高效地满足用户的需求,例如:
      快速准确地部署应用程序。
      根据需要动态扩缩容。
      当出现故障时自愈。
      进行不停机的滚动升级和回滚。
  Kubernets 具有以下明显的优势:
      可移动:公有云、私有云、混合云。
      可扩展:模块化、插件化、可挂载、可组合。
      自修复:自动部署、自动重启、自动复制、自动伸缩。

Kubernets 重要概念

1、先看 Kubernets 架构图

在这里插入图片描述

2、集群(cluster)

  集群是计算、存储和网络资源的集合,Kubernets 使用集群来运行组成系统的各种工作负载。cluster 是整个 Kubernets 容器集群的基础环境。

3、主节点(Master)

  主节点(Master)是集权的控制节点,由几个组件组成,包含 API 服务器、调度器和控制器管理器。主节点负责节点在全局、集群水平的调度和事件处理。通常,所有的主控制器组件都设置在一个单一主机上,为了实现高可用性,用户可以部署多个 Master 节点。
  Master 上运行的关键进程:

  3.1、API 服务器(Kubernets API Server)

   Kubernets API Server 的进程名为 kube-apiserver。Kubernets API Server 提供了 Kubernets 各类资源对象的增删改查的 HTTP Rest API。是整个系统的数据总线和数据中心,它的所有数据都存储在 etcd 集群中。

  3.2、控制器管理器(Kubernets Controller Manager)

   Kubernets Controller Manager 作为集群内部的管理控制中心,是各种管理器的集合。负责集群内的 Node、Pod 副本、服务端点、命名空间、服务账号、资源配额的管理。所有控制前通过 API 监控集群状态,确保集群始终处于预期的工作状态。

  3.3、调度器(Kubernets Scheduler)

   Kubernets Scheduler 负责将 Pod 调度到指定的工作节点中,这一过程也叫绑定,他是一个非常复杂的任务,因为它需要考虑多个相互作用的因素,例如:资源需求、服务要求、硬/软件的策略约束、数据局部性、截止日期等。

  3.4、Etcd

   Etcd 是 Kubernets 集群中一个十分重要的组件,也是一个非常可靠的分布式数据存储。用于保存集群所有的网络配置和对象的状态信息。

4、节点(node)

  在 Kubernets 中,除了 Master 节点外,其他的节点都成为 Node。与 Master 节点不同,Node 才是 Kubernets 中的承担主要计算功能的工作节点。Node 可以是一台物理机,也可以是一台虚拟机。
  整个 Kubernets 集群中的 Node 协同工作,Master 会根据实际情况将某些负载分配给各个 Node。每个 Kubernets 节点运行多个 Kubernets 组件,如 Kubelet 和 Kube 代理:

  4.1、代理(kube-proxy)

   kube-proxy 在每个节点上进行最低水平的网络维护,它用于呈现本地 Kubernets 服务,可以执行 TCP 及 UDP 转发,通过环境变量或 DNS 寻找集群 IP。监听每个节点上 Kubernets API 中定义的服务变化情况,创建路由规则来进行服务负载均衡。

  4.2、kubelet

   在 Kubernets 集群中,每个 Node 节点都会启动 kubelet 进程,用来处理 Master 节点下发到本节点的任务,管理 Pod 和其中的容器。Kubelet 会在 API Server 上注册节点信息,定期向 Master 汇报节点资源使用情况,并通过 cAdvisor 监控容器和节点资源。可以把 Kubelet 理解成是一个代理进程,是 Node 上的 Pod 管家。

5、Pod

  Pod 是 Kubernets 最基本的工作单元,一个 Pod 中可以包含一个或多个容器,一个 Pod 可以被一个容器化的环境看作应用层的逻辑宿主机。一个 Pod 中的多个容器应用通常是紧密耦合的,Pod 在 Node 上被创建、启动或者销毁。每个 Pod 里运行着一个特殊的被称为 Pause 的容器,其他容器则为业务容器,这些业务容器共享 Pause 容器的网络栈和 Volume 挂载卷,因此他们之间通信和数据交换更为高效。
  Pod 是 Kubernets 调度的基本操作单元,Master 节点会以 Pod 为单位,将其调度到 Node 节点上面。

6、服务

  在 Kubernets 的集群中,虽然每个 Pod 都会被分配一个单独的 IP 地址,但这个 IP 地址会随着 Pod 的销毁而消失。这就引出一个问题,如果有一组 Pod 组成一个集群来提供服务,那么如何来访问它呢?那就是通过服务。
一个服务可以看作一组提供相同服务的 Pod 的对外访问接口,服务作用于哪些 Pod 是通过标签选择器来定义的。服务通常拥有以下特点:
      提供一个指定的名字,例如MySQL-server。
      拥有一个虚拟 IP 地址和端口号,销毁之前不会改变,只能内网访问。
      能提供某种远程服务能力。
      被映射到了提供这种服务能力的一组容器应用上。

7、存储卷

  Pod 上的存储是临时的,会随 Pod 一起消失。如果只在节点的容器间交换数据,这已经足够,但有时数据需要在 Pod 上存储更长的时间,或在 Pod 间传递数据,存储卷的概念便支持了这种需求。Kubernets 存储卷的生命周期与 Pod 绑定。容器宕掉后 kubelet 再次重启容器时,存储卷的数据依然还在,而 Pod 删除时,存储卷才会被清零。数据是否丢失取决于具体的存储卷类型,持久化存储卷为独立于计算资源的一种实体存储资源,不属于任何一个 Node。因此,在 Pod 被删除时,不会丢失数据,除非人工将其删除。

8、命名空间

  命名空间时一个虚拟集群。由命名空间分隔的多个虚拟集群可组成一个单独的物理集群。每个虚拟集群与其他的虚拟集群完全隔离,他们只通过公共接口交换信息。
  Kubernets 集群在启动后,会创建一个名为 default 的默认的命名空间,如果不特别指定命名空间,则用户创建的 Pod、RC、服务都被系统创建到默认的命名空间中。
  需要注意的是,节点对象和持久化存储卷不存在命名空间中。Kubernets 可以调度来自不同命名空间的 Pod 在同一节点运行。同样,来自不同命名空间的 Pod 可以使用相同的持久化存储。

  • 22
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值