Kubernetes 基本概念及架构

Kubernetes 是什么 ?

Kubernetes 是 Google 开源的容器集群管理系统,基于 Docker 构建一个容器的调度服务,提供资源调度,均衡容灾,服务注册,动态扩容等功能套件。利用 kubernetes 能方便地管理跨机器运行容器化的应用。

  • 主要功能如下:
  1. 使用 Docker 对应用程序包装(package)、实例化(instantiate)、运行(run)。
  2. 以集群的方式运行,管理跨机器的容器。
  3. 解决 Docker 跨机器容器之间的通讯问题。
  4. Kubernetes 的自我修复机制使得容器集群总是运行在用户期望的状态。
  • 官网:https://kubernetes.io/

Kubernetes 基本概念及架构_第1张图片

  • 为什么使用 Kubernetes ?
  1. 全面拥抱微服务框架。
  2. 使用 kubernetes 我们系统可以随时的整体迁移。
  3. Kubernetes 系统具备了超强的横向扩容能力。
  4. 开发人员各司其职,轻装上阵(架构师负责服务组件提炼,开发工程师负责业务代码的开发,运维或系统公司师负责部署与运维)。

Kubernetes 概念

  • 架构图

Kubernetes 基本概念及架构_第2张图片

Kubernetes 基本概念及架构_第3张图片

  • 介绍常用组件

Kubernetes 基本概念及架构_第4张图片

  1. master: kubernetes 管理节点
  2. apiserver : 提供接口服务,用户通过 apiserver 来管理整个容器集群平台。API Server 负责和 etcd 交互(其他组件不会直接操作 etcd,只有 API Server 这么做),整个 kubernetes 集群的所有的交互都是以 API Server 为核心的。如:1、所有对集群迚行的查询和管理都要通过 API 来进行所有模块之间并不会互相调用,而是通过和 API Server 打交道来完成自己那部分的工作 、API Server提供的验证和授权保证了整个集群的安全
  3. scheduler kubernetes : 调度服务
  4. Replication Controllers : 复制, 保证 pod 的高可用

Replication Controller 是 Kubernetes 系统中最有用的功能,实现复制多个 Pod 副本,往往一个应用需要多个 Pod 来支撑,并且可以保证其复制的副本数,即使副本所调度分配的宿主机出现异常,通过 Replication Controller 可以保证在其它宿主机吭用同等数量的 Pod。Replication Controller 可以通过 repcon 模板来创建多个 Pod 副本,同样也可以直接复制已存在 Pod,需要通过 Label selector 来关联


Kubernetes 基本概念及架构_第5张图片

  1. minion  : 真正运行容器 container 的物理机 kubernetes 中需要很多 minion 机器,来提供运算.
  2. container : 容器,可以运行服务和程序.
  3. Pod : 在 Kubernetes 系统中,调度的最小颗粒,不是单纯的容器,而是抽象成一个Pod ,Pod是一个可以被创建,销毁,调度,管理的最小的部署单元。 pod 中可以包括一个或一组容器.
  4. Kube_proxy :代理 。做端口转发相当于 LVS-NAT 模式中的负载均衡器profix 解决了同一宿主机,相同服务端口冲突的问题,还提供了对外服务的能力,Profix 后端使用了随机,轮询负载均衡算法。
  5. etcd : etcd 存储 kubernetes 的配置信息,也可以说是 k8s的数据库,存储着 k8s 容器云平台所有节点 ,pods ,网络等信息.etcd (daemon) 是一个存储配置文件的后台服务.
  6. Services : Services 是 Kubernetes 最外围的单元,通过虚拟一个访问 IP 及服务端口,可以访问我们定义好的 Pod 资源,目前的版本是通过 iptables 的 nat 转发来实现,转发的目标端口为Kube_proxy 生成的随机端口

Kubernetes 基本概念及架构_第6张图片

  • Labels 标签

Labels 是用于区分 Pod、Service、Replication Controller 的 key/value 键值对,仅使用在Pod、Service、 Replication Controller 之间的关系识别,但对这些单元本身进行操作时得使用 name 标签。

  • Deployment

Kubernetes Deployment 用于更新 Pod 和 Replica Set(下一代的 Replication Controller)的方法,你可以在 Deployment 对象中只描述你所期望的理想状态(预期的运行状态),Deployment 控制器会将现在的实际状态转换成期望的状态。例如,将所有的 webapp:v1.0.9 升级成 webapp:v1.1.0,只需创建一个 Deployment,Kubernetes 会按照 Deployment 自劢迚行升级。通过 Deployment 可以用来创建新的资源。Deployment 可以帮我们实现无人值守的上线,大大降低我们的上线过程的复杂沟通、操作风险。


Kubernetes 基本概念及架构_第7张图片

  • Kubelet
  1. Kubelet 和 Kube-proxy 都运行在 minion 节点上.
  2. Kube-proxy  实现 Kubernetes 网络相关内容.
  3. Kubelet 命令管理 Pod、Pod 中容器及容器的镜像和卷等信息.

各组件之间的关系

  1. kubernetes 的架构由一个 master 和多个 minion组成 ,master 通过 api 提供服务,接受  kubectl 的请求来调度管理整个集群,kubectl : 是 k8s 平台的一个管理命令.
  2. Replication controller 定义了多个 pod 或者容器需要运行,如果当前集群中运行的 pod 容器达不到配置的数量,replication controller 会调度容器在多个 minion 上运行,保证集群中的 pod 数量。
  3. service 则定义真实对外提供的服务,一个 service 会对应后端运行的多个 container.
  4. Kubernetes 是个管理平台,minion 上的 kube-proxy 拥有提供真实服务公网 IP客户端访问kubernetes 中提供的服务,是直接访问到 kube-proxy 上的
  5. 在 Kubernetes 中 pod 是一个基本单元,一个 pod 可以是提供相同功能的多个 container,这些容器会被部署在同一个 minion 上。minion 是运行 Kubelet 中容器的物理机。minion 接受 master的指令创建 pod 或者容器。

 

你可能感兴趣的:(Kubernetes,K8s,kubernetes概念)