接着上一篇,在安装完k8s后,就要开始对他进行折腾了!!
在这里插入图片描述
今天我们要做的就是对k8s的架构进行简单的学习(超级简单)。

一、master节点

k8s cluster由master和node组成,节点上运行着若干k8s服务。运行着的daemon服务包括 kube-apiserver、 kube-scheduler、 kube-controller-manager、 etcd和Pod网络(例如flannel)。如图
这里的图是采用书上的,如有侵权麻烦通知我,我会进行删除
(这里的图是采用书上的,如有侵权麻烦通知我,我会进行删除)

其中的部件:

  • API Server (kube-apiserver)
    总的部件可以从上一篇文章最后的截图中找到
    API Server提供HTTP/HTTPS RESTful API,也就是k8s cluster的前端接口,负责给外部访问

  • Scheduler(kube-scheduler)
    在这里插入图片描述
    负责决定将pod放在哪个node上运行,负责调度。(管理pod)

  • Controller Manager(kube-controller-manager)
    在这里插入图片描述
    负责管理cluster各种资源,Manager由多种controller组成(赶脚有点像是创建pod的工厂)。

  • etcd
    etcd负责保存Kubernetes Cluster的配置信息和各种资源的状态信息。(负责持久化)

  • pod网络

二、node节点

在这里插入图片描述

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

三、完整的架构图

在这里插入图片描述
可以看到几乎所有的k8s组件本身也运行在pod里,如图
在这里插入图片描述proxy,pod网络(flannel),都是有三组。而kubelet则是通过systemd服务运行在每个节点上(包括master)。各组件的从属可以在ip地址上看到

四、将架构串起来

这里需要注意,新的版本需要用create deployment来创建deploment,而不是用run

kubectl create deployment httpd-app --image=httpd --replicas=2

稍等一下,部署完成!
在这里插入图片描述

具体流程
在这里插入图片描述
超级简要版本:
1.kubectl发送部署请求到api server
2.api server通知controller manager创建一个deployment资源(deployment管理着replicaset)
3.scheduler执行调度任务,将两个replicas分发到node1和node2中
4.node1和node2上的kubectl在各自的节点上创建并运行pod
(kubectl负责全局的控制,收到请求就分发,cm创建,sc调度)

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐