核心组件
主控( master )节点
kube-apiserver
- 提供了集群管理的RESTAPI接口(包括鉴权、数据校验及集群状态变更)
- 负责其他模块之间的数据交互,承担通信枢纽功能
- 是资源配额控制的入口
-
kube-controller-manager
由一系列控制器组成,通过apiserver监控整个集群的状态,并确保集群处于预期的工作状态
Node Controller
Deployment Controller
Service Controller
Volume Controller
Endpoint Controller
Garbage Controller
Namespace Controller
Job Controller
Resource quta Controller
kube-scheduler
- 主要功能是接收调度pod到适合的运算节点上
- 预选策略( predict )
-
运算(node)节点
kube- kubelet
简单地说, kubelet的主要功能就是定时从某个地方获取节点上pod的期望状态(运行什么容器、运行的副本数量、网络或者存储如何配置等等) ,并调用对应的容器平台接口达到这个状态
- 定时汇报当前节点的状态给apiserver,以供调度的时候使用
镜像和容器的清理工作,保证节点上镜像不会占满磁盘空间,退出的容器不会占用太多资源
Kube-proxy
是K8S在每个节点 上运行网络代理, service资源的载体
- 建立了pod网络和集群网络的关系( clusterip >podip )
- 常用三种流量调度模式
Userspace
Iptables
Ipvs
- 负责建立和删除包括更新调度规则、通知apiserver自己的更新,或者从apiserver哪里获取其他kube- proxy的调度规则变化来更新自己的
CLI客户端
kubectl
Kubernetes 命令行工具,kubectl
,使得你可以对 Kubernetes 集群运行命令。 你可以使用kubectl
来部署应用、监测和管理集群资源以及查看日志。核心附件
CNI网络插件→flannel/calico
k8s设计了网络模型,但却将他的实现交给了网络插件,CNI网络插件最主要的功能就是实现POD资源能够跨主机进行通信
种类众多,以**flannel**
为例
三种常用工作模式
优化SNAT规则服务发现用插件→coredns
服务(应用)之间相互定位的过程
集群网络> Cluster IP
Service资源→Service Name .**Coredns**
软件>实现了Service Name和Cluster IP的自动关联服务暴露用插件→traefik
Ingress资源→专用于暴露7层应用到K8S集群外的一-种核心资源(http/https)
Ingress控制器>一个简化版的nginx (调度流量) + go脚本(动态识别yaml)**Traefik**
软件→实现了ingress控制器的一个软件GUI管理插件→Dashboard