30.3 Kubernetes相关概念
Kubernetes内部组件工作原理介绍:http://dockone.io/article/5108
kubernetes整个框架结构如下:
Master
Master是整个集群的控制中心,kubernetes的所有控制指令都是发给master,它负责具体的执行过程。一般我们会把master独立于一台物理机或虚拟机,它的重要性不言而喻。
master上有这些关键进程:
- Kubernetes API Server(kube-apiserver):提供了HTTP Rest接口关键服务进程,是所有资源增、删、改、查等操作的唯一入口,也是集群控制的入口进程。它是Kubernetes系统和etcd直接对话的唯一组件。
- Kubernetes Controller Manager(kube-controller-manager):是所有资源的自动化控制中心,可以理解为资源对象的大总管。
- KubernetesScheduler(kube-scheduler):负责资源调度(pod调度)的进程,相当于公交公司的“调度室”。
- etcd Server:Kubernetes里所有资源对象的数据都是存储在etcd中的,etcd是Kubernetes的存储状态的数据库。
Node
除了Master,Kubernetes集群中的其它机器被称为Node,早期版本叫做Minion。Node可以是物理机或虚拟机,每个Node上会被分配一些工作负载(即docker容器),当Node宕机后,其上面跑的应用会被转移到其它Node上。
Node上有这些关键进程:
- Kubelet:负责Pod对应容器的创建、启停等任务,同时与Master节点密切协作,实现集群管理的基本功能。
- kube-proxy:实现Kubernetes Service的通信与负载均衡机制的重要组件。
- Docker Engine(docker):Docker引擎,负责本机容器的创建和管理。
Pod
查看pod命令:kubectl get pod
查看容器命令:docker ps
可以看到容器和pod是有对应关系的,在之前做过的实验中,每个pod对应两个容器,一个是Pause容器,一个是rc里面定义的容器(实际上,每个pod里可以有多个应用容器)。这个Pause容器叫做“根容器”,只有当Pause容器“死亡”才会认为该pod“死亡”。Pause容器的网络栈以及挂在的Volume资源会共享给该pod下的其它容器。
- pod定义示例:
apiVersion: v1
kind: pod
metadata:
name: myweb
labels:
name: myweb
spec:
containers:
- name: myweb
image: kubeguide/tomcat-app:v1
ports:
- containerPort: 8080
env:
- name: MYSQL_SE