kubernetes重要概念理解

kubernetes重要概念理解


 kubernetes是目前最主流的容器编排工具,是下一代分布式架构的王者。2018年的kubernetes第一个版本1.10已经发布。下面整理一下,kubernetes的一些基本概念。

kubernetes将集群中的机器划分为Master节点和工作节点(Node)。其中Master节点上面运行着管理集群的一组进程kube-apiserver、kube-controller-manager,和kube-schedule,还有etcd服务。node作为集群中的工作节点,运行真正的应用程序,在node上Kubernetes管理的最小运行单元是Pod,Node上面运行着kubelet、kube-proxy、docker引擎服务进程。如下图:

                                                                备:图片来自网络

Master节点:集群的控制节点
Kubernetes API Server(kube-aoiserver):提供了HTTP rest 接口的关键服务进程,是Kubernetes里所有资源的增、删、改、查等操作的唯一入口,也是集群控制的入口进程。
kube-controller-manager:Kubernetes里所有资源的自动化控制中心,可以理解为资源对象的“大总管”。
kube-schedule:负责资源调度(Pod调度)的进程,相当于公交公司的“调度室”
etcd:Kubernetes里面的所有资源对象的数据都是保存在etcd中。

Node节点:Node节点可以是一台物理机,也可以是一台虚拟机。当某个Node宕机时,其上的工作会被Master自动转移到其他节点上去。
kubelet:负责Pod对应的容器的创建、起停等任务。同时与Master节点密切协作,实现集群管理的基本功能。
kube-proxy:实现Kubernetes Service的通信和负载均衡机制的重要组件。
Docker Engine(Docker ):Docker引擎,负责本机容器的创建和管理工作。

Pod 概念
Pod是Kubernetes的最重要也是最基本的概念,每个Pod都有一个特殊的被称为“根容器”的Pause容器。Pause容器对应的镜像属于Kubernetes平台的一部分,除了Pause容器,每个Pod还包含一个或者多个紧密相关的用户业务容器。
Kubernetes里的所有资源对象都可以采用yaml或者JSON格式的文件来定义或者描述,如下是一个Pod的定义:
apiServer:v1
kind:Pod
metadata:
  name:myweb
  labels:
    name:myweb
spec:
  containers:
  -name:myweb
   image:kubeguide/tomcat-app:v1
   ports:
  -containterPort:8080
  env:
  -name:MYSQL_SERVICE_HOST
  value:'mysql'
 -name: MYSQL_SERVICE_PORT
  value:‘3306’

Kind为Pod表明这是一个Pod的定义,metadata里的name属性为Pod的名字,metdata里还能定义资源对象的标签(Label),这里声明myweb拥有一个name=myweb的标签(Label)。Pod里所含的容器组成的定义则在spec一节中声明,这里定义了一名字为myweb、对应镜像为kubeguide/tomcat-app:v1的容器,该容器注入了MYSQL_SERVICE_HOST=‘mysql’和MYSQL_SERVICE_PORT='3306'的环境变量(env关键字),并在8080端口(containerPort)上启动容器进程。

上面是Kubernetes中的一些最基本的概念,详细内容后续会持续更新!

猜你喜欢

转载自www.cnblogs.com/qstudy/p/9169105.html