k8s(kubernetes)概述特征

开源,用于管理云平台中多个主机上的容器化的应用,让部署容器化的应用简单高效,其提供了应用部署、规划、更新、维护。

k8s物理架构

k8s集群由Master节点和Node(Worker)节点组成。

1.Master节点

Master节点指的是集群控制节点,管理和控制整个集群,基本上k8s的所有控制命令都发给它,它负责具体的执行过程。在Master上主要运行着:

  • Apiserver:提供了资源操作的唯一入口,一restfuk方式,提供认证、授权、访问控制、API注册和发现等机制;

  • Kubernetes Controller Manager(kube-controller-manager):k8s中资源对象的自动化控制中心,维护管理集群的状态,比如故障检测,自动扩展,滚动更新等;,一种资源对应一个manager

  • Kubernetes Scheduler(kube-scheduler): 负责资源调度,按照预定的调度策略将Pod调度到相应的机器上;

  • etcd:保存整个集群的状态。

2.Node节点

除了master以外的节点被称为Node或者Worker节点,可以在master中使用命令 kubectl get nodes查看集群中的node节点。每个Node都会被Master分配一些工作负载(Docker容器),当某个Node宕机时,该节点上的工作负载就会被Master自动转移到其它节点上。在Node上主要运行着:

  • kubelet:负责管理Pod(对应的容器的创建、启停等任务),image镜像,volumes,同时与Master密切协作,实现集群管理的基本功能,可理解为master在node中建立的agent
  • kube-proxy:实现service的通信(网络)与负载均衡
  • docker(Docker Engine):Docker引擎,负责本机的容器创建和管理

Pod:通俗来讲,Pod就是一组容器的集合,在Pod里面的容器共享网络/存储(Kubernetes实现共享一组的Namespace去替代每个container各自的NS,来实现这种能力),所以它们可以通过Localhost进行内部的通信。虽然网络存储都是共享的,但是CPU和Memory就不是。多容器之间可以有属于自己的Cgroup,也就是说我们可以单独的对Pod中的容器做资源(MEM/CPU)使用的限制。

在传统运维工作中,我们是和各种服务进程打交道。到了容器集群环境中,我们就是操作Pod来对服务进行检查维护。这里只简单介绍下几个操作,其中kubectl有很多命令都和docker run类似。

img

img

k8s的逻辑架构(核心概念)

从逻辑架构上看,k8s分为

1.Pod

pod是k8s的最小的部署单元(在node中用docker部署容器,但是容器不是最小单元)

一个pod是一个或多个容器的集合

一个pod是共享网络的

生命周期是短暂的,例如重启服务器pod就会消失

2.Controller

管理pod

- 确保预期的pod容器数量

- 支持有状态/无状态应用部署

- 支持所有的node都运行同一个pod

控制器的种类有很多:

  • RC Replication Controller 控制POD有多个副本
  • RS ReplicaSet RC控制的升级版
  • Deployment 推荐使用,功能更强大,包含了RS控制器
  • DaemonSet 保证所有的Node上有且只有一个Pod在运行
  • StatefulSet 有状态的应用,为Pod提供唯一的标识,它可以保证部署和scale的顺序
3.Service

定义一组pod的访问规则

基本过程可理解为通过service统一入口进行访问,由controller创建pod进行部署

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐