# 调度 1、用户提交一个pod创建清单或变更清单(通过api) 2、api会把数据写入etcd,scheduler通过api监听到etcd上的数据变化 3、scheduler首先选择满足条件的node(各种亲和度,污点,资源等) 4、scheduler在这些满足条件的node中,给各个node打分,最好的node会用于pod的创建运行(绑定node) 5、kubelet通过api监听etcd,然后根据etcd中pod与node的绑定结果,在相应的node中创建node,维护生命周期 # 访问 外部通过ingress或者service访问集群内部服务 原理:service使用selector选择合适的pod标签,把内部服务暴露出去。创建service时自动生成一个同名的ep(endpoints)。ep上记录pod与ip对应关系。 通过kube-proxy实现服务发现与负载均衡(iptables/ipvs)[headless service不使用] dns为每个service创建A记录(service名称与服务ip[clusterIP等])(headless service直接为在dns中配置service名称与各pod ip的记录) 1、首先访问到与ingress匹配规则匹配到的service 2、service通过dns查询到的service ip(或pod ip,headless service) 3、通过负载均衡算法,访问到一个后端pod,该pod与之交互