- Store: 把WAL中的日志和数据, 写入磁盘进行持久化.
# 四、Node节点
从图中可以看出, Node节点包含三个组件 ,kubelet, kube proxy, 以及container. 也就是说我们在node节点需要安装三个软件: kebelet, kebu proxy, docker
<img src="http://img.zhejianglong.com/231019/202JB494-3.png" alt="img" style="zoom:33%;" />
### 1)kubelet的作用
master端收到多个任务,调度器会把任务发送给node节点,在node节点上,任务都是以容器化的方式运行的 。容器是被谁初始化的?容器的运行时,比如docker,docker会帮我们启动容器 。一边是kuberates 的Api Server,另一边是docker 。他俩能够对话么?不能 。举个例子: 一个是外国人 , 只会说英语,一个是中国人,只会说汉语 。那如何让外国人和中国人交流呢?翻译呗 。kubelet的作用就是连接k8s和docker的 。kubelet监听api server,api server下发命令以后,kubelet要去调用docker , 去执行指令,比如容器的创建 。
kubelet的直接跟容器交互, 实现容器的生命周期管理.他会和CRI, C是容器, R是runtime, I是interface. CRI就是docker的操作形式. kubelet会和docker交互, 创建需要的容器. kubelet会维持Pod的生命周期.
也就是说,kubelet起到承上启下的作用 。
### 2)kube proxy的作用:
下面调用linux的内核接口,叫做net link接口 。当监听到api server发送的请求以后
kube proxy 上面监听api server,api server发出请求以后,会调用**linux的内核接口** , 叫做net link接口,这个接口允许我们通过命令的方式,库调用的方式去实现IPVS的创建,实现netfire的管控,就是IPVS和防火墙的管控 。负载均衡和数据的转发都是基于kube proxy组件实现的 。
**负责写入规则至IPTABLES, IPVS实现服务映射访问.** 之前说过svc, 可以进行负载操作, 负责的操作就是通过kube proxy完成的. 怎么实现Pod与Pod之间的访问, 以及负载均衡. 默认操作是操作防火墙, 去实现Pod的映射. 新版本还支持IPVS.
由此可见,kubelet和kube proxy这两个功能各有各的用途 。
## 3、其他重要的插件
### 1)Web UI
Web UI是一套可操作的界面 。Dashboard是 Kubernetes 集群的通用的、基于 Web 的用户界面 。它使用户可以管理集群中运行的应用程序以及集群本身并进行故障排除 。
### 2) COREDNS
可以为集群中的SVC创建一个域名IP对应的关系解析. 也就是说,我们在集群中访问其他Pod的时候, 完全不需要通过Pod的ip地址, 通过CoreDns给他生成的域名去实现访问. 他是集群中的重要重要组件, 也是实现负载均衡的其中一项功能.
### 3)DASHBOARD
给K8S集群提供一个 B/S结构访问体系.
### 4)Ingress Controller
官方只为我们实现了四层代理. Ingress可以实现七层代理, 也就是可以根据组件名和域名进行负载均衡.
### 5)Federation
提供一个可以跨集群中心多K8s统一集群管理功能.
### 6)Prometheus(普罗米修斯)
提供K8S集群的监控能力.
### 7)ELK
提供k8s集群日志统一接入平台
# 二、K8S和docker的关系
为什么会说k8s和docker的关系呢?这还要源于k8s发布的一则消息,在后续版本将不再增加垫片这个组件 。导致很多人觉得docker不行了,很可能会被k8s遗弃,为什么这个垫片会有这么大的影响呢?这就要从CRI和O-CRI说起了 。
<img src="http://img.zhejianglong.com/231019/202J63c4-4.png" alt="image" style="zoom:50%;" />
先来看看容器是如何创建的?
kubelet监听了server api,有任何的变化都会下发命令给docker , 然后docker操作容器 。那么,kubelet调用docker的时候,是使用命令还是调用接口呢?
肯定是直接调用接口 。因为调用命令最终也是去执行接口,中间还转一步,效率太低了 。
但是 , kubelet能直接调用docker接口么?
我们知道docker采用的是CRI容器运行时接口 ,
而k8s是google的产品,现在是CNCF云容器基金会的产品,这是一个开源镜像 , k8s会直接对接到CRI这样一个私有协议么?我是公共使用的,所以肯定不会对接到私有协议接口 。那么,我会对接到O-CRI接口,这时一个共有协议接口 。问题来了,docker是CRI私有协议接口,k8s是O-CRI共有协议接口,对接不过去啊 。所以 , 怎么办?再加一层转换,这层转换的作用是承上启下,上面承的是O-CRI,下面承的是CRI 。这个转换是在kubectl实现的 。这一层被叫做垫片 。承上启下用的 。
最开始,Docker的名气要比k8s大的多得多,所以,k8s就承接了垫片的任务 。而如今,k8s的名气已经很大了,它不再需要依赖于docker,于是他要去掉垫片 。并且发了公告 。
推荐阅读
- .net 温故知新:【9】.NET日志记录 ILogger使用和原理
- 安卓手机截屏模式怎么设置(手机截屏模式怎么设置)
- ubantu18.04@Intel 82545EM 【安装文档】TRex流量分析仪保姆级安装指南--基于VMware虚拟机
- 星之彼端丹铜事件该如何选择
- iphone怎么刷机(iphone刷机教程)
- 《正义联盟》中超人是怎么死的
- 王者荣耀娜可露露前尘镜中文语音包怎么设置
- 《三国演义》中曹操的大将许褚是怎么死的(三国许褚做了哪些大事)
- 怎么玩比较合适(休假去哪玩比较合适)
- 红米Note11真机曝光_红米Note11外观详情