Kubernetes 是个啥?

151 阅读3分钟

这是我参与8月更文挑战的第12天,活动详情查看:8月更文挑战

kubernetes 是谷歌开源的容器集群管理系统。

kubernetes 是个啥

kubernetes 是一个应用编排系统,一个成功的应用编排系统需要有较强的自动化能力, Kubernetes被设计作为构建组件和工具的生态系统平台,以便更轻松地部署、扩展和管理应用程序。

包含如下功能:

  • 基于容器的应用部署, 维护和滚动升级。
  • 负载均衡和服务发现
  • 跨机房和跨地区的集群调度
  • 自动伸缩

kubernetes 架构

image.png

  • etcd 保存了整个集群的状态,主要用来存放数据;
  • apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制;
  • controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
  • scheduler 负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上;
  • kubelet 负责维护容器的生命周期;
  • Container runtime 负责镜像管理以及 Pod 和容器的真正运行(CRI);
  • kube-proxy 负责为 Service 提供 cluster 内部的服务发现和负载均衡

kubernetes 基本概念

image.png

  • Pod
  • Container(容器)
  • Label (image.png)(标签)
  • Replication Controller(副本控制器)
  • Service(image.png)(服务)
  • Node(节点)
  • Kubernetes Master(Kubernetes主节点)

Container

Container(容器)是一种便携式、轻量级的操作系统级虚拟化技术。它使用 namespace 隔离不同的软件运行环境,并通过镜像自包含软件的运行环境,从而使得容器可以很方便的在任何地方运行。一般来说可以在一个容器中打包一个应用程序。使用这种一对一的关系,做到资源隔离,可以检测应用程序的性能。

Pod

Kubernetes 使用 Pod 来管理容器,每个 Pod 可以包含一个或者多个紧密关联的容器。

Pod 是一组紧密关联的容器(container)集合,共享 Network, IPC 等资源, 是 Kubernetes 调度的基本单位,Pod 内多个容器共享网络和文件系统。

Node

Node 是真正运行 Pod 的主机,可以是虚拟机,也可以是物理机,为了管理 Pod, 每个 Node 机器上要运行容器 (docker)

NameSpace

NameSpace 是对一组资源的抽象整合, 通过划分不同的项目组或者用户组来实现。

Service

Service 是应用服务的抽象,是用来负载均衡和服务发现用的,匹配 标签labels 的 Pod IP和端口组成 endpoints。

Label

Lable 是挂在Pod上面的键值对,Label 是识别 kubernetes 对象的标签, 以 Key/Value 的方式放在对象上。Label 定义好后,其他对象可以通过标签,找到一组 pod。

Annotaions

这个和标签有点类似,标签 label 是用来标志和选择对象,annotations 是用来记录一些附加信息的。