Service1(SVC服务) 注:
关键特征:
拥有唯一指定的名称(譬如mysql-server)
拥有一个虚拟IP(Cluster IP, Service IP或VIP)和Port
能够提供某种远程服务能力
被映射到提供这种服务能力的一组容器应用(Pod)
通信:
基于Socket通信方式对外提供服务或者实现了某个具体业务的特性TCP Server进程
通常由多个相关的服务进程提供服务, 每个服务都有独立的EndPoint(IP+Port)访问点
K能够让我们通过Service(虚拟集群Cluster-IP+Service Port) 连接到指定的Service
其他:
Service一旦被创建不再变化(IP)
Service 通过name通信, 使用了Linux环境变量(Environment Variable)
Pod1 注:
RC/Development: Relication Controller 副本控制器, 属于部署文件或单元, 会产生一个RelicatSet, 副本集的概念
Pod: 最小运行/容器组单元
Pod Label: 标签, 必要元素, 譬如order-web, 主要协同Service中Label Selector 找到对应Pod, 并建立之间的联系
Pod部署还包含三要素:
目标Pod的定义
目标Pod需要运行的副本数量(Relicas)
要监控的目标Pod的标签(Label)
创建好RC/Devepment后, K通过定义中的Label筛选出对应的Pod实例并监控器状态和数量.
每个Pod都会有一个唯一的Pod IP, 多个容器共享此IP, K要求底层支持集群内任意两个Pod之间的TCP/IP直接通信, 通常采用虚拟二层网络技术来实现, 譬如Flannel, Open vSwitch等, So K中一个Pod里的容器与另外主机上的Pod容器能直接通信.
Pod分普通和静态, 普通Pod创建后会被放入etcd中存储, 虽有被Master调度到某个具体的Node进行绑定,随后改Pod被对应的Node上的Kubelet进程实例化成一组相关的Docker容器并启动, 默认情况下, 当Pod里的某个容器停止时, K会自动检测并重启该Pod, 当然如果该Node宕机, Pod会被分配到其他Node上
Pause容器
特殊容器, 称为"根容器"
Pause存在的设想:
一组容器作为一个单元情况下, 很难简单对"整体"判断及有效地行动, 比如容器死亡了, 此时算是整体死亡me, 引入不易死亡且与业务无关,由它的状态来Pod组的状态
Pod里的多个业务容器共享Pause容器的IP, 共享Pause容器挂接的Volume, 这样既简化了密切关联的业务容器之间的通信问题, 也很好解决它们的文件共享问题.