Kubernetes简介
Kubernetes
是谷歌开源的容器集群管理系统,是
Google
多年大规模容器管理技术
Borg
的开源版本,主要功能包括
- 基于容器的应用部署、维护和滚动升级
- 负载均衡和服务发现
- 跨机器和跨地区的集群调度
- 自动伸缩
- 无状态服务和有状态服务
- 广泛的Volume支持
- 插件机制保证扩展性
Kubernetes
发展非常迅速,已经成为容器编排领域的领导者。
Kubernetes
主要由以下几个核心组件组成:
- etcd保存了整个集群的状态;
- apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
- controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
- scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
- kubelet负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理;
- Container runtime负责镜像管理以及Pod和容器的真正运行(CRI);
- kube-proxy负责为Service提供cluster内部的服务发现和负载均衡
Kubernetes基本概念
Pod
Pod
是一组紧密关联的容器集合,它们共享
IPC
、
Network
和
UTC namespace
,是Kubernetes调度的基本单位。
Pod
的设计理念是支持多个容器在一个
Pod
中共享网络和文件系统,可以通过进程间通信和文件共享这种简单高效的方式组合完成服务。
在
Kubernetes
中,所有对象都使用
manifest
(yaml或
json
)来定义,比如一个简单的nginx服务可以定义为
nginx.yaml
,它包含一个镜像为
nginx
的容器:
apiVersion: v1kind: Podmetadata:name: nginxlabels:app: nginxspec:containers:- name: nginximage: nginxports:- containerPort: 80
Node
Node
是
Pod
真正运行的主机,可以物理机,也可以是虚拟机。为了管理
Pod
,每个
Node节点上至少要运行container runtime
(比如
docker
或者
rkt
)、
kubelet