k8s组件
本文为旧组件笔记,保留原分类与历史名词,不作为当前版本运行时或令牌默认行为清单。当前架构见控制面与API。
k8s介绍
容器优势
容器因具有许多优势而变得流行起来。下面列出了容器的一些好处:
- 敏捷应用程序的创建和部署:与使用 VM 镜像相比,提高了容器镜像创建的简便性和效率。
- 持续开发、集成和部署:通过快速简单的回滚(由于镜像不可变性),提供可靠且频繁的容器镜像构建和部署。
- 关注开发与运维的分离:在构建/发布时而不是在部署时创建应用程序容器镜像,从而将应用程序与基础架构分离。
- 可观察性不仅可以显示操作系统级别的信息和指标,还可以显示应用程序的运行状况和其他指标信号。
- 跨开发、测试和生产的环境一致性:在便携式计算机上与在云中相同地运行。
- 云和操作系统分发的可移植性:可在 Ubuntu、RHEL、CoreOS、本地、Google Kubernetes Engine 和其他任何地方运行。
- 以应用程序为中心的管理:提高抽象级别,从在虚拟硬件上运行 OS 到使用逻辑资源在 OS 上运行应用程序。
- 松散耦合、分布式、弹性、解放的微服务:应用程序被分解成较小的独立部分,并且可以动态部署和管理 - 而不是在一台大型单机上整体运行。
- 资源隔离:可预测的应用程序性能。
- 资源利用:高效率和高密度。
为什么需要kubernets
kubernets
- 服务发现和负载均衡
可以使用dns名称或者自己IP地址公开容器;如果流量很大,可以负载均衡并分配网络流量使部署稳定
- 储存编排
可以自动挂载选择储存系统(本地储存、公共云)
自动化部署创建新容器,删除现有容器并将它们所有的资源用于新容器
- 自动二进制打包
可以指定容器所需CPU和内存(RAM);当指定资源请求时,k8s做出更好的决策来管理容器资源
- 自我修复
重启失败容器,替换容器、杀死不响应用户定义运行状况检查的容器,并且在准备好服务之前不会通知给客户端
- 密钥与配置管理
可以存储敏感信息(密码、OAuth、ssh密钥);可以在不重建容器镜像情况下部署更新迷药和应用配置,无需在堆栈中暴露密钥
Kubernets 组件

Kubernetes Control Plane(控制平面组件)
控制面负责全局决策(如调度)及控制循环。replicas 表示目标 Pod 副本数,不是节点数;控制器依据期望状态创建或替换 Pod。控制面部署位置与高可用由集群方案决定,不能从单机安装脚本推导生产拓扑。
- kube-api-server
主节点上负责提供Kubernets Api 服务组件;是控制面的前端;可以水平扩缩、部署多个实例可以扩缩
- etcd
是K/V存储数据库;可以作为所有集群数据后台数据(配置....);etcd 文档
- kube-scheduler(调度程序)
主节点上的组件、监视新创建的为指定运行的Pod ,并选择节点让Pod在上面运行;调度决策考虑的因素包括单个Pod 和Pod集合的资源需求、硬件/软件/策略约束、亲和性和反亲和性规范、数据位置、工作负载间的干扰和最后时限
- kube-controller-manager(控制器)
- 节点控制(Node Controller):负责在节点出现故障进行通知和响应
- 副本控制器(Replication Controller):负责系统中每个副本控制器对象维护正确数量Pod(维护Pod副本)
- 端点控制器(Endpoints Controller):填充端点(Endpoints【endpoint是k8s集群中的一个资源对象,存储在etcd中,用来记录一个service对应的所有pod的访问地址】参考文章)对象(即加入Server 与 Pod)
- 服务账户和令牌控制器(Service Account & Token Controllers):维护默认 ServiceAccount 等对象;令牌的投射和自动创建行为须按版本核对,不把旧的长期令牌默认行为推广到当前集群
在主节点上运行控制器(控制器通过 apiserver 监控集群的公共状态,并致力于将当前状态转变为期望的状态)的组件,内含多个逻辑控制器,常在同一管理器进程运行,不能同时称为各自独立进程
- cloud-controller-manager 官方文档
- 节点控制器
- 路由控制器
- 服务控制器
- 数据卷控制器
kubernets Nodes doc
node组件在每个node上运行,维护运行Pod并提供Kubernets运行环境
- kubelet
在集群中每个节点上运行的代理,保证容器运行在Pod中;kubelet接收一组通过各类机制提供给他的PodSpecs,确保容器处于运行状态且健康、kubelet 不会管理不是由Kubernets 创建的容器
- kube-proxy
kube-proxy 实现 Service 虚拟 IP 的部分数据转发规则,把流量导向后端 Pod;具体实现和是否采用替代数据面由平台决定。它不提供应用层就绪或授权保证。
Container Runtime (容器允许环境)doc
负责运行容器的软件 原记录的运行时列表(包含旧 Docker 集成与 rktlet 历史项,不是当前支持矩阵):
- Docker
- containerd
- cri-o
- rktlet
Addons(插件)
插件使用 Kubernetes 资源 (DaemonSet, Deployment等) 实现集群功能。这些组件常放在 kube-system,但也可使用产品专用命名空间,并非一律属于 kube-system。
所选的插件如下所述:有关可用插件的扩展列表,请参见插件 (Addons)
DNS
尽管并非严格要求其他附加组件,但所有示例都依赖集群 DNS,因此所有 Kubernetes 集群都应具有 DNS。
除了您环境中的其他 DNS 服务器之外,集群 DNS 还是一个 DNS 服务器,它为 Kubernetes 服务提供 DNS 记录。
Cluster DNS 是一个 DNS 服务器,和您部署环境中的其他 DNS 服务器一起工作,为 Kubernetes 服务提供DNS记录。
Kubernetes 启动的容器自动将 DNS 服务器包含在 DNS 搜索中
Dashboard(用户界面)
Dashboard 是 Kubernetes 集群的通用基于 Web 的 UI。它使用户可以管理集群中运行的应用程序以及集群本身并进行故障排除
容器资源监控
容器资源监控将关于容器的一些常见的时间序列度量值保存到一个集中的数据库中,并提供用于浏览这些数据的界面
集群层面日志
集群层面日志 机制负责将容器的日志数据保存到一个集中的日志存储中,该存储能够提供搜索和浏览接口
继续阅读
- 知识专题
- 知识专题istio 1.7 · 历史版本
- 命令