Kubernetes基础概念介绍
Pod
在 Kubernetes 集群中,Pod 是 k8s 管理的最小单位级,它是一个或多个容器的组合。
在 Pod 中,所有容器都被统一安排和调度。
Pod 中的容器有两个特点。
共享网络:Pod 中的所有容器共享同一个网络命名空间,包括 IP 地址和网络端口。
共享存储:Pod 中的所有容器能够访问共享存储卷,允许这些容器共享数据。
控制器
k8s 通过控制器管理和调度 Pod。k8s 有以下几种控制器:
ReplicationController/ReplicaSet
RC 能够确保容器的副本数始终保持用户定义的副本数。即如果有容器异常退出,会自动创建新的 Pod 来替代,而由于异常多出来的容器也会自动回收。RS 跟 RC 没有
本质不同,新版本的 k8s 建议使用 ReplicaSet 取代 ReplicationController。
虽然 RS 可以独立使用,但一般还是建议使用 Deployment 自动管理 RS。
Deployment
Deployment 为 Pod 和 RS 提供了声明式定义方式管理应用,用来替代 RS 命令式定义方式管理应用。且Deployment 提供了很多 RS 不支持的机制,比如滚动升级和回滚应用。
命令式:侧重于如何实现程序,就像我们刚接触编程的时候那样,我们需要把程序
的实现过程按照逻辑结果一步步写下来。
声明式:侧重于定义想要什么,然后告诉计算机,让它帮你去实现。
DaemonSet
DaemonSet 确保 Node 上只运行一个 Pod。当有 Node 加入集群时,会为集群新增一个 Pod。当有 Node 从集群移除时,这些 Pod 也会被回收。
Job
Job 负责批处理任务,即仅执行一次的任务,它保证批处理任务的一个或多个 Pod成功结束。比如运行一次 SQL 脚本。
Cron job
负责执行定时任务,即在给定时间点执行一次或周期性地在给定时间点执行任务。
Service
Service 可以管理多个 Pod 作为一个整体被外部访问。在 k8s 中有以下四种类型的Service。
ClusterIP
默认类型,自动分配一个仅集群内部可以访问的虚拟 IP。
NodePort
在 ClusterlP 基础上为 Service 绑定一个端口,可以通过该端口访问服务。
LoadBalancer
在 NodePort 的基础上创建一个负载均衡器,并将请求转发到 NodePort。
ExternalName
把集群外部的服务引入到集群内部,在集群内部直接使用。