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的交互:

  1. Node启动后,向api server发起创建请求,api server保持信息到etcd存储。(注册)

  2. kubelet每隔一段时间,向api server报告自身状态。(续约)

  3. kubelet 通过监听watch接口,得到pod变化信息。(监听)

容器健康检查

Pod通过2类探针来检查健康状态。

  1. livenessProde探针。

用于判断容器是否健康,和业务无关。

  1. readinessProde探针。

可由业务提供,用于判断容器是否可以接收请求。

资源监控

k8s提供了各个维度的资源使用。cAdvisor是一个分析容器资源和性能特性的插件,可以自动收集CPU,内存,网络,文件系统的使用情况。

负载均衡

每个node都会运行着一个kube-proxy进程,这个进程会建立一个socket server来接收请求,然后采用轮训的算法分发到pod。

kube-proxy会动态的创建与service相关的iptables规则。

网络模型

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

  1. 同一个Node中,pod之间通过docker网桥通信。

  2. 不同的Node中,pod之间通信需要借助一些网络设备找到对应的pod所在的node ip。比如:flannel和open vswitch或者直接路由。

Last updated

Was this helpful?