当我对Docker有些了解,并开始学习Kubernetes时,我被告知的Kubernetes的本质,是在容器之上的编排,Kubernetes想要的是容器生态,Kubernetes仅仅将Docker作为最底层的一个容器运行时实现。
Kubernetes中的概念
开始学习Kubernetes,要厘清的并不要太多,比如,先从Kubernetes的核心组件:Pod、Deployment、Service。
- Pod 豆荚,就是能包装容器,用Pod作为调度的单位,Kubernetes进行容器的调度。
- Deployment,可以理解为Pod的部署,部署嘛,支持多副本等。
- Service是集群的核心。Service代理Pod,声明的IP地址是不变的。顾名思义,对外提供服务,外部也是通过Service来获取容器中运行的应用提供的服务。
release的二进制文件
以及了解Kubernetes运行的二进制文件,比如kubelet。
- 在Kubernetes项目中,kublet主要负责通容器运行时打交道。
- 此外,kublet还通过GRPC协议同Device Plugin进行交换。
- kublet的另一个重要功能,是调用网络插件和存储插件为容器配置网络和持久化存储。
理解设计思想
Kubernetes推崇的使用方法是“声明式”API。这种API对应的“编排对象”和“服务对象”,都是Kubernetes项目中的API对象(API Object)。
Master
- API Server: 提供REST接口的关键服务进程
- Controller Manager: 所有资源的自动化控制中心
- Scheduler: 负责Pod资源调度
- Etcd: 所有应用资源存储在Etcd中
Node
Minion
- kubelet: Pod的启停和与master节点协作
- kube-proxy: 负责Server的负载均衡
- 容器运行时: 容器的创建和运行