【k8s连载系列】2. k8s整体架构( 四 )


也就是说,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://shimg.jingyanzongjie.com/230728/0644401E6-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,于是他要去掉垫片 。并且发了公告 。
那么docker是不是就完蛋了,k8s没有垫片做转换了,就不能调用docker接口了 。docker也很机智,随即发布消息,他会增加垫片功能 。这样k8s依然可以调用docker容器 。但是,我们要知道,docker就重了,k8s减负了,k8s可以兼容任何容器,现在市面上有好几款容器,他不是飞docker不可的了 。

经验总结扩展阅读