Kubernetes是CNCF旗下的一个开源软件系统,用以在集群(跨多主机)中管理容器化的应用,提供应用的部署、维护和伸缩等。应用打包为与运行环境无关的容器镜像(Kubernetes中称为Deployment),然后Kubernetes将其部署到集群中运行的主机上(通常是虚拟机),并以容器实例的形式运行,成为供用户访问的应用。
Kubernetes集群中的主机(也被称为资源,通常是虚拟机)可以分为两类,Master和Nodes。每类主机上都安装有一系列软件组件。
1.Master
一个专用的机器(虚拟机),是Kubernetes集群的control plane,用以协调调度集群中的各个Nodes的主机。通常,安装的组件如下:
1) kube-apiserver,暴露Kubernetes API供调用
对集群外部暴露Kubernetes API供调用。如响应kubectl的请求,接收Deployment配置文件,并将其中定义的对象存储在etcd中。
对集群内部,与Nodes主机上的Kubelet进程通信,调度Pods,获取Pods日志等。
2) etcd,key/value数据库
3) kube-scheduler,将新创建的pods交给选定的一个Node并启动
4) kube-controller-manager (KCM),负责管理运行各种与应用、服务等相关的Controllers
- Node Controller
- Replication Controller
- Endpoints Controller
- Service Account