Kubernetes中,除了主节点和工作节点,还有一些核心概念需要理解清楚:
Pod
Pod是一组紧密关联的容器集合,它们共享PID、IPC、Network和UTS namespace,是Kubernetes调度的基本单位。Pod的设计理念是支持多个容器在一个Pod中共享网络和文件系统,可以通过进程间通信和文件共享这种简单高效的方式组合完成服务。
ReplicaSet
Replicaset在继承Pod的所有特性的同时, 它可以利用预先创建好的模板定义副本数量并自动控制, 通过改变Pod副本数量实现Pod的扩容和缩容。
Deployment
Deployment在继承Pod和Replicaset的所有特性的同时, 它可以实现对template模板进行实时回滚、升级等特性。
Label/标签
Label是attach到Pod的一对键/值对,用来传递用户定义的属性。比如,你可能创建了一个”tier”和“app”标签,通过Label(tier=frontend, app=myapp)来标记前端Pod容器,使用Label(tier=backend, app=myapp)标记后台Pod。然后可以使用Selectors选择带有特定Label的Pod,让具体某一个Pod或者Deployment去使用某一个Service实现特定的网络配置.
Service/服务
Service是应用服务的抽象。
通过标签为应用提供负载均衡和服务发现。匹配标签的Pod IP和端口列表组成服务端点,由kube-proxy负责将服务IP负载均衡到这些服务端点上。
每个Service都会自动分配一个cluster IP(仅在集群内部可访问的虚拟地址)和DNS名,其他容器可以通过该地址或DNS来访问服务,而不需要了解后端容器的运行。
kubectl
kubectl实用程序可以与Kubernetes集群管理器交互。例如,您可以添加和删除节点,Pod,Deployment和服务。你也可以检查它们的状态,等等。
后面将详细介绍这些概念。