-
Notifications
You must be signed in to change notification settings - Fork 2
Description
Cluster
Cluster是一组节点。
Master
Master 节点运行着集群管理相关的一组进程:
-
etcd
-
kube-apiserver
-
kube-controller-manager(负责维护集群状态)
-
scheduler(负责调度任务)
这些进程实现了整个集群的资源管理、Pod调度、弹性伸缩、安全控制、系统监控、纠错等管理功能。
Node
Node 是提供 CPU、内存和存储资源的节点,是物理机也可以是虚拟机器,是k8s的 worker,通常称为Minion。
k8s 将根据节点的可用资源选择部署应用程序的位置。
每个节点都运行如下Kubernetes关键组件:
- Kubelet:pod 对应容器的创建、暂停等任务,维护 node 状态并和 master 通信
- Kube-proxy:Service使用其将链接路由到Pod,实现集群网络服务
- Docker daemon:Kubernetes使用的容器技术来创建容器(实时上 Kubernetes 是不依赖于 Docker 的,完全可以使用其他的容器引擎在 Kubernetes 管理的集群中替代 Docker)
Namespace
使用Namespace来组织Kubernetes的各种对象,可以实现对用户的分组,即“多租户”管理。对不同的租户还可以进行单独的资源配额设置和管理,使得整个集群的资源配置非常灵活、方便。
Pod
Pod 是 k8s 调度部署的最基本操作单元,安排在node上,包含一个或多个紧密相关的容器。
每个 Pod 都会被分配一个单独的IP地址,这个IP地址会随着 Pod 的销毁而消失。
由于整个 Pod 是运行在一个 Node 上的,所以 Pod 中的所有容器共享同一组资源,如下所述:
- PID命名空间:Pod 中的不同应用程序可以看到其他应用程序的进程ID;
- 网络命名空间:Pod 中的多个容器能够访问同一个IP和端口范围,可以实现容器之间仅需要通过 localhost 就能相互通信了。
- IPC命名空间:Pod 中的多个容器能够使用SystemV IPC或者POSIX消息队列进行通信;
- UTS命名空间:Pod 中的多个容器共享一个主机名;
- Volumes:Pod中的各个容器可以访问在Pod级别定义的Volumes。
一般除了有紧密耦合的情况下,通常一个 Pod 中只有一个容器,这样方便不同的服务各自独立地扩展。
Label
Label是attach到Pod,Service、RC、Node等资源的键/值对,用来传递用户定义的属性。
每个对象可以定义多个label,以提供Label Selector来选择对象
Replication Controller
Replication Controller 管理 Pods 的生命周期,确保指定数量的 Pods 会一直运行,还有实现资源伸缩。
RC是为了保证一定数量被指定的Pod的复制品在任何时间都能正常工作,它不仅允许复制的系统易于扩展,还会处理当pod在机器重启或发生故障的时候再次创建一个。
主要有以下功能模块
- 确保 Pod 数量:确保 k8s 中有指定数量的Pod在运行。如果少于指定数量的Pod,RC会创建新的,反之则会删除掉多余的以保证 Pod 数量不变。
- 确保 Pod 健康:当 Pod 不健康,运行出错或者无法提供服务时,RC也会杀死不健康的 Pod,重新创建新的。
- 弹性伸缩
- 滚动升级:采用逐步替换策略,保证系统的稳定性
Deployment
新一代的Replication Controller,推荐使用Deployment在来管理 Pod
Deployment 用来管理和维护运行中的 Pod,当创建Deployment后,Kubernetes master 会将Deployment创建好的应用实例调度到集群中的各个节点。 应用实例创建完成后,Kubernetes Deployment Controller会持续监视这些实例。如果管理实例的节点被关闭或删除,那么 Deployment Controller将会替换它们,实现自我修复能力。Deployment继承了 RC 全部的功能外,也有它自己的特性
- 事件和状态查看
- 回滚到指定版本
- 版本记录
- 暂停和启动
- 更多的升级方案
Service
Service定义一系列Pod以及访问这些Pod的策略的一层抽象。
Service也可以看作一组提供相同服务的Pod的对外访问接口。
Service作用于哪些Pod是通过Label Selector来定义的,也就是说 Service 通过 Label 找到 Pod 组。
Service也是一个负载均衡器,它将流量代理给一个或多个 Pod。即使 Pod 在不同的节点上,代理也可以工作。
一旦服务被创建,就会分配一个唯一的IP地址。这个地址同服务的生命周期绑定,服务存活期间不会发生变化。
ConfigMap
ConfigMap提供了向容器注入配置数据的机制,可用于存储细粒度信息如单个属性,或粗粒度信息如整个配置文件。
当ConfigMap以数据卷的形式挂载进Pod时,更新ConfigMap(或删掉重建ConfigMap),Pod内挂载的配置信息会热更新,但使用环境变量方式加载到pod,则不会自动更新。
ConfigMap在pods中有多种使用方式
1.设置环境变量的值
2.设置容器内的命令行参数
3.填充卷的配置文件