kubernetes核心技术概念
-
- 1.容器(Container)
- 2.API对象
- 3.集群(Cluster)
- 4.Master
- 5.Node
- 6.Pod
- 7.复制控制器(Replication Controller,RC)
- 8.副本集(Replica Set,RS)
- 9.部署(Deployment)
- 10.服务(Service)
- 11.任务(Job)
- 12.定时任务(CronJob)
- 13.后台支撑服务集(DaemonSet)
- 14.Statefulset
- 15.存储卷(Volume)
- 16.持久存储卷(PersistentVolume,PV)、持久存储卷声明(PersistentVolumeClaim,PVC)和存储类(StorageClass)
- 17.命名空间(Namespace)
- 18.密钥对象(Secret)
- 19.应用配置管理(ConfigMap)
- 20.Ingress
- 21.自动伸缩(Horizontal Pod Autoscaling)
- 22.PodPreset
- 23.资源配额(Resource Quotas)
- 24.网络策略(Network Policy)
- 25.Security Context和PSP
- 26.ThirdPartyResources
- 27.endpoint
- 28.Event
- 29.用户帐户(User Account)和服务帐户(Service Account)
- 30.RBAC访问授权
- 31.集群联邦(Federation)
1.容器(Container)
Container(容器)是一种便携式、轻量级的操作系统级虚拟化技术。它使用 namespace 隔离不同的软件运行环境,并通过镜像自包含软件的运行环境,从而使得容器可以很方便的在任何地方运行。
2.API对象
API对象是K8s集群中的管理操作单元。K8s集群系统每支持一项新功能,引入一项新技术,一定会新引入对应的API对象,支持对该功能的管理操作。例如副本集Replica Set对应的API对象是RS。
3.集群(Cluster)
集群是指由Kubernetes使用一系列的物理机、虚拟机和其他基础资源来运行你的应用程序的集合。
4.Master
master是cluster的大脑,他的主要职责是调度,即决定将应用放在那里运行。master运行linux操作系统,可以是物理机或者虚拟机。为了实现高可用,可以运行多个master。
5.Node
node的职责是运行容器应用。node由master管理,node负责监控并汇报容器的状态,同时根据master的要求管理容器的生命周期。
K8s集群中的计算能力由Node提供,最初Node称为服务节点Minion,后来改名为Node。K8s集群中的Node也就等同于Mesos集群中的Slave节点,是所有Pod运行所在的工作主机,可以是物理机也可以是虚拟机。不论是物理机还是虚拟机,工作主机的统一特征是上面要运行kubelet管理节点上运行的容器。
6.Pod
Pod是在K8s集群中运行部署应用或服务的最小单元,它是可以支持多容器的。一个pod对应一个由相关容器和卷组成的容器组。
Pod是K8s集群中所有业务类型的基础,可以看作运行在K8s集群中的小机器人,不同类型的业务就需要不同类型的小机器人去执行。目前K8s中的业务主要可以分为长期伺服型(long-running)、批处理型(batch)、节点后台支撑型(node-daemon)和有状态应用型(stateful application);分别对应的小机器人控制器为Deployment、Job、DaemonSet和PetSet。
7.复制控制器(Replication Controller,RC)
RC是为了保证一定数量被指定的Pod的复制品在任何时间都能正常工作,它不仅允许复制的系统易于扩展,还会处理当pod在机器在重启或发生故障的时候再次创建一个。
RC是K8s集群中最早的保证Pod高可用的API对象。通过监控运行中的Pod来保证集群中运行指定数目的Pod副本。指定的数目可以是多个也可以是1个;少于指定数目,RC就会启动运行新的Pod副本;多于指定数目,RC就会杀死多余的Pod副本。即使在指定数目为1的情况下,通过RC运行Pod也比直接运行Pod更明智,因为RC也可以发挥它高可用的能力,保证永远有1个Pod在运行。RC是K8s较早期的技术概念,只适用于长期伺服型的业务类型,比如控制小机器人提供高可用的Web服务。
8.副本集(Replica Set,RS)
ReplicaSet(RS)是Replication Controller(RC)的升级版本。ReplicaSet 和 Replication Controller之间的唯一区别是对选择器的支持。ReplicaSet支持labels user guide中描述的set-based选择器要求, 而Replication Controller仅支持equality-based的选择器要求。
**
9.部署(Deployment)
deployment可以管理pod的多个副本,并确保pod按照期望的状态运行。
部署表示用户对K8s集群的一次更新操作。部署是一个比RS应用模式更广的API对象,可以是创建一个新的服务,更新一个新的服务,也可以是滚动升级一个服务。滚动升级一个服务,实际是创建一个新的RS,然后逐渐将新RS中副本数增加到理想状态,将旧RS中的副本数减小到0的复合操作;这样一个复合操作用一个RS是不太好描述的,所以用一个更通用的Deployment来描述。以K8s的发展方向,未来对所有长期伺服型的的业务的管理,都会通过Deployment来管理。
10.服务(Service)
一个service定义了访问pod的方式,就像单个固定的IP地址和与其相对应的DNS名之间的关系。
RC、RS和Deployment只是保证了支撑服务的微服务Pod的数量,但是没有解决如何访问这些服务的问题。一个Pod只是一个运行服