kubernetes学习笔记(一)
组件介绍
在一个kubernetes集群中所包含的组件内容
Pod是一个k8s独有的概念,可以表示封装一个或者多个的容器,更加强调这是一个运行环境,而不是指一个强调提供应用程序运行的容器。且Pod提供一个共享的命名空间和存储卷,在一个Pod中的容器之间可以非常方便的进行通讯。Pod是k8s最小的调度单位。
Control Plane组件介绍
kube-apiserver
该组件是Kubernetes API Server的主要实现,而Kubernetes API Server则负责暴露集群的接口,是control plane的前端。可以通过部署多个apiserver实例来进行负载均衡。
etcd
提供高可用并且一致性的键值对存储,作为Kuberntes的后台数据库,但是需要保证有数据备份。
kube-scheduler
负责将创建出来的pod(可以理解为运行的容器)指派到node(集群中的机器)。
在安排的过程中的影响因素主要有:
- 单个pod或者多个pod的资源需求
- 软硬件的约束策略
- 亲和性和反亲和性的规范
- 数据位置
- 工作负载
- deadline
kube-controller-manager
负责运行contoller(用于从apiserver获取当前集群状态,同时尝试将当前集群状态转移到期望的集群状态)进程。
controller可以分为以下这些:
- Node controller:当node挂掉时负责通知和响应
- Job controller:检测代表一次性任务的Job对象,然后创建Pods来运行这些任务直到完成。
- EndPointSlice controller: 提供Service和Pod之间的连接
- ServiceAccount controller: 为新的命名空间创建默认的服务账号
cloud-controller-manager
它可以使用云提供商提供的接口,将控制平面在自己机器上部署,同时通过一系列的API将node部署在云提供商的服务器中。
Node组件介绍
node就是运行节点,负责维护运行的Pod并提供Kubernetes运行环境
kubelet
保证容器正常运行在Pod中,接受指定的PodSpec(指定的一些容器规格,比如说镜像,命令,参数,环境变量等等)、
kube-proxy
负责node上的网络代理,实现了一部分的服务,维护一些node上的网络规则(集群内部或者外部的与pod之间的网络通信)
插件
DNS
大部分的k8s集群还是需要DNS做解析的。
DashBoard
仪表盘,可以使用Web用户界面管理集群中的应用程序以及集群本身
Cluster-level Logging
集群日志可以将所有的容器日志进行汇总,并且提供一个中心化的访问查询接口。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 icimence's Tech Blog!
评论