k8s核心原理
k8s api-server
提供了资源的crud,通过kube-apiserver提供服务,存在于master节点。
例子:
curl localhost:8080/api/vl/pods
curl localhost:8080/api/v1/services
curl localhost:8080/api/vl/replicationcontrollers
集群之间的交互
kubelet与api server的交互:
Node启动后,向api server发起创建请求,api server保持信息到etcd存储。(注册)
kubelet每隔一段时间,向api server报告自身状态。(续约)
kubelet 通过监听watch接口,得到pod变化信息。(监听)
容器健康检查
Pod通过2类探针来检查健康状态。
livenessProde探针。
用于判断容器是否健康,和业务无关。
readinessProde探针。
可由业务提供,用于判断容器是否可以接收请求。
资源监控
k8s提供了各个维度的资源使用。cAdvisor是一个分析容器资源和性能特性的插件,可以自动收集CPU,内存,网络,文件系统的使用情况。
负载均衡
每个node都会运行着一个kube-proxy进程,这个进程会建立一个socket server来接收请求,然后采用轮训的算法分发到pod。
kube-proxy会动态的创建与service相关的iptables规则。

网络模型
k8s网络模型假设所有pod都处在一个可以直连的扁平化网络空间中。

同一个Node中,pod之间通过docker网桥通信。
不同的Node中,pod之间通信需要借助一些网络设备找到对应的pod所在的node ip。比如:flannel和open vswitch或者直接路由。
Last updated
Was this helpful?