软件开发架构师

第四章 Kubernetes 架构

架构 150 2019-03-22 23:12

4.1 Master节点:Master是大脑,运行如下Daemon服务:

  • API Server(kube-apiserver)

       API server提供了HTTP/HTTPS RESTful API,即Kubernetes API。 API server是Kubernetes Cluster的前端接口。其他客户端工具(CLI或UI)以及K8S其它组件可以通过它管理Cluster资源。

  • Scheduler(kube-scheduler)

      负责决定将Pod放在哪个Node上运行。调度时候考虑Cluster拓扑,各个节点的负载,以及应用对高可用、性能、数据亲和性的需求。

  • Controller Manager(kube-controller-manager)

      负责管理Cluster的各种资源。

  • etcd

   负责保存K8s Cluster的配置信息和各种资源的状态信息。当数据发生变化时,etcd可以快速的通知K8s 组件。

  • Pod网络

   Pod能通信,k8s cluster必须部署Pod网络(比如flannel是其中一个方案)          

4.2 Node节点:

  • Kubelet -  是Node的agent,当scheduler确定在某个Node上运行Pod后,会将Pod的具体配置信息(image、volume等)发送给该节点的kubelet,kubelet根据这些信息创建和运行容器,并向Master报告运行状态。
  • kube-proxy - service在逻辑上代表了后端的多个Pod,外界通过service访问Pod。service接收到的请求是如何转发到Pod的呢?这就是kube-proxy要完成的工作。每个node都运行kube-proxy服务,它负责将访问service的TCP/UDP数据流转发到后端容器。如果有多个副本,kube-proxy实现负载均衡。
  • Pod网络 - Pod能通信,k8s cluster必须部署Pod网络(比如flannel是其中一个方案)

           (注意:为什么Master上也有kubelet和kube-proxy呢? 因为Master上也可以运行应用,即Master同时也是一个Node ) 

         kubectl get pod --all-namespaces -o wide

4.3 完整的架构图:P21

4.4 用例子把他们串起来:P23

文章评论