kubernetes基本概念和术语

一. kubernetes是什么

kubernetes是一个全新得基于容器技术得分布式架构领先方案。是google Borg得一个开源版本。Borg是google得一个久负盛名得内部使用得大规模集群管理系统,它基于容器技术,目的是实现资源管理的自动化,以及跨多个数据中心的资源利用率的最大化。node

二. kubernetes 术语

kubernetes中的大部分概念如Node,Pod,Replication Controller,service等均可以看做一种“资源对象”。几乎全部的资源对象均可以经过kubernetes提供的kubectl工具(或者api编程调用)执行增删查改等操做并将其保存在etcd中持久化存储。因此经过这个角度来看,kubernetes是一个高度自动化的资源控制系统。docker

Master

k8s中的master是集群控制节点,来负责具体的执行过程,master节点一般会占据一个独立的服务器。一个主要缘由是它过重要了,它是整个集群的“首脑"。编程

master节点上运行着如下一组关键进程。api

  1. Kubernetes API Server,提供HTTP Rest接口的关键服务进程。是Kubernetes里全部资源的增删查改等操做的惟一入口,也是集群控制的入口进程。
  2. Kubernetes Controller Manager,Kubernetes里全部资源对象的自动化控制中心。
  3. Kubernetes Scheduler, 负责资源调度(Pod调度)的进程。

master节点还会启动一个etcd server进程,由于Kubernetes全部资源对象的数据所有保存在etcd中。服务器

Node

Node在较早版本也叫Minion,在kubernetes集群除了Master节点,其余节点被称为Node节点。node节点为k8s集群的工做负载节点,每一个node都会被master分配一部分工做负载。当node宕机时,工做负载会被master转移到其余节点。网络

node节点主要运行着下面一组关键进程架构

  1. kubelet: 负责Pod对应容器的建立,启停等任务。同时与master节点密切协做,实现集群管理的基本功能。
  2. kube-proxy: 实现kubernetes Server的通讯与负载均衡机制的重要组件。
  3. Docker Engine: 负责本机容器的建立和管理工做。

Node节点能够动态增长到Kubernetes集群中,默认状况下kubelet会向master注册本身,当Node被归入集群管理,kubelet进程就会定时向Master节点汇报自身情报(包括docker版本,机器cpu内存),这样master会获取每一个node的资源使用状况。并实现高效的资源调度策略。负载均衡

Pod

Pod是kubernetes的最重要也是最基本的概念分布式

Label

Lebel是kubernetes系统中一个核心概念,一个label是一个kv的键值对,k、v由用户本身指定。能够附加到各类资源对象上,例如node,pod,service,rc等。
咱们能够经过给指定资源捆绑一个或多个不一样的资源标签,来实现多维度的资源分组管理。详细参考19页微服务

Replication Controller RC

核心概念之一,定义一个指望的场景,既声明某种Pod的副本数量字任意时刻都符合某一个预期值,因此rc的定义包括一下几个部分。

  1. Pod 期待的副本数
  2. 用于筛选目标pod的label selector

rc的一些特性和做用

  1. 大多数状况下,经过自定义一个rc实现pod的建立过程及副本数量的自动控制。
  2. rc里包含完整的pod定义模板
  3. rc经过label selector机制实现对pod 副本的自动控制
  4. 经过改变rc里的pod副本数量,实现对pod的扩容和缩容功能
  5. 经过改变rc里pod模板中的镜像版本,能够实现pod的滚动升级功能

deployment

deployment是kubernetes1.2引入的新概念。引入的目的是为了更好的解决pod的编排问题,能够看做是rc的一次升级。

deployment的典型使用场景有如下几个

  1. 建立一个deployment对象来生成对应的replica set并完成pod副本的建立过程
  2. 检查deployment的状态来看部署动做是否完成
  3. 更新deployment以建立新的pod(镜像升级)
  4. 若是当前deployment不稳定,回滚到早先的deployment版本
  5. 挂起或恢复一个deployment

Horizontal Pod Autoscaler HPA

Horizontal Pod Autoscaler 简称HPA,含义为pod横向自动扩容,与rc,deployment同样,也属于一种kubernet 资源对象。经过追踪分析rc控制的全部目标pod的负载变化状况,来肯定是否须要针对性的调整pod的副本数。HPA当前由两种方式作为pod负载的度量指标

  1. CPUUtilizationPercentage
  2. 应用程序自定义的度量指标,好比qps和tps

Service

Kubernetes Service 实际上是咱们常提起的为服务架构中的一个"微服务",前面的pod,rc等资源对象其实都是为kubernetes service作嫁衣的。

kubernetes集群中的三种ip

  1. node ip,node节点的物理ip地址,能够经过网络直接通讯
  2. pod ip,是docker 引擎根据docker0网桥的ip地址段进行分配,是一个虚拟的二层网络
  3. cluser ip,属于kubernetes集群中的内部地址,没法在集群外部使用这个地址。

Volume

Volume 是pod中可以被多个容器访问的共享目录。概念、用途和目的与docker的vlume类似但不等价。缘由以下

  1. kubernetes的volume定义在pod上,而后被一个pod里的多个容器挂载到具体的文件目录下
  2. kubernetes的volume的生命周期与pod的生命周期相同,但与容器的生命周期不相关。当容器终止或重启时volume的数据不会丢失,kubernetes支持多种类型的volume,如GlusterFS,Ceph等先进的分布式文件系统。
相关文章
相关标签/搜索