Workloads(工作负载):
运行在k8s上的应用,可是单独一个组件(比如:job),也可以是多个组件协同运行(比如:deployment,service,ingress等一起构成一个应用)
Pod:
k8s应用的最基本执行单元,在创建或部署k8s对象模式的最小和最简单单元,相当于集群中运行的进程。Pod是一组容器的集合,每个Pod可以由一个或多个容器组成,每个Pod由k8s分配一个集群内的IP和DNS。同一个Pod中的多个容器共享Pod的存储和网络,且总是被安排在相同的node上,且同时启动或停止。两种主要使用方法
- 运行一个单一容器的Pod
- 运行多个需要共同运行的多个容器的Pod
init容器:
init容器在其它容器运行之前启动运行并终止,init容器可以做一些初始化的工作。
Workloads Resources(工作负载资源):
用于管理Pods,通过将相同Pods组合成一个Workload,简化一组Pods的管理,预置的Workloads Resources如下
- Deployment:Deployment适合管理集群上的无状态应用,在Deployment汇总所有pod完全等价,且在需要时随时可被替换。
- ReplicaSet:维护一组在任何时候都处于运行状态的Pod副本的稳定集合,通常用来保证给定的数量,完全相同的Pod的可用性。
- StatefulSet:运行一个或多个需要跟踪应用状态的Pods,管理基于相同容器规约的一组Pod,每个Pod维护一个有粘性永久不变的ID。例如,数据需要持久化的Pod就可以使用StatefulSet,将每个Pod和某个k8s持久化存储卷对应起来(即共享存储),StatefulSet的各个Pod可以通过共享k8s持久化存储卷交换数据提高整体服务可靠性,相当于共享Nas的Web服务器。
- Job:创建一个或多个Pod,并持续重复Pod的执行,直到指定数量的Pod成功终止。定义Job可以确保一组Pod围绕一个任务来反复执行直到最终目标达成后Job终止。
- CronJob:创建基于时隔重复调度的Job,用于执行排期操作,如备份,生成报告等。
- DaemonSet:适合为Cluster Node提供服务的Pod,比如管理集群网络或插件,当在k8s集群中新增Node时,由Control Plane根据DaemonSet中的定义安排在新的Node上运行Pod
- ReplicationController:确保一个Pod或一组同类的Pod总是可用
Service:
将运行在一个或一组 Pod 上的网络应用程序公开为网络服务的方法。用来把应用运行的Pods作为网络服务暴露出来,Pods没有固定IP,Service有固定IP
Namespace:
k8s在cluster中创建的virtual cluster
DNS:
特指k8s内部的DNS,k8s会自动为每个Pod和Service创建DNS,暴露出Pod和Service的访问出口
Ingress:
对集群中服务的外部访问进行管理的API对象,典型的访问方式是HTTP。可以提供负载均衡,SSL终结和基于名称的虚拟托管。