每天五分钟玩转K8S(二)
接着上一篇,在安装完k8s后,就要开始对他进行折腾了!!今天我们要做的就是对k8s的架构进行简单的学习(超级简单)。一、master节点k8s cluster由master和node组成,节点上运行着若干k8s服务。运行着的daemon服务包括 kube-apiserver、 kube-scheduler、 kube-controller-manager、 etcd和Pod网络(例如flannel
接着上一篇,在安装完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调度)
更多推荐
所有评论(0)