k8s的概念和作用
是一个开源的Docker容器编排系统
源于google的borg,2015年7月k8s v1.0正式发布,调度计算机群节点,动态管理节点上的作业, 使用【labels】和【pods】概念,将应用按逻辑单元分组,
主要用途
自动化部署,扩展和管理容器应用 服务发现
资源调度 扩展缩容 (指的是某个资源的自动缩减)
部署管理 监控
k8s的好处
裸容器的不足
宿主机宕机造成主机的容器不可用,无法自行恢复
容器的健康状态的检擦不到位,容器在运行,却无法访问
应用程序的部署,回滚,扩缩苦难
数千个容器和端口,难以维护
使用k8s的好处
可以管理大量跨主机的容器
快速部署和扩展应用
无缝对接的应用功能
节省资源,优化硬件资源的使用
k8s的组件
Master组件
kube-apiserver
- 功能:API 服务器是 Kubernetes 控制平面的前端,它提供了 HTTP REST API,用于处理集群的增删改查(CRUD)操作和监听资源变化。
- 特点:支持水平扩展,通过部署多个实例并平衡流量来增强性能。
Etcd
- 功能:etcd 是一个一致且高度可用的键值存储系统,用作 Kubernetes 所有集群数据的后备存储。
- 特点:etcd 的数据需要定期备份以防止数据丢失。
Kube-scheduler
功能:负责监视新创建的没有分配节点的 Pod,并基于调度算法(如资源需求、硬件/软件/策略约束等)为它们选择合适的节点运行
kube-contrcller-maneger
- 功能:运行控制器进程,负责维护集群的状态,确保所有资源对象(如节点、Pod、服务等)处于期望的状态。
- 包含的控制器示例:Node 控制器(负责节点故障响应)、Job 控制器(处理一次性任务)、Service 控制器(管理服务和端点)等。
[节点控制器,复制控制器,端点控制器,服务账户和命令控制器]
Node组件
Kubelet
- 功能:负责维护容器的生命周期,如启动、停止、更新容器等。
- 特点:与容器运行时(如 Docker 或 containerd)交互,确保容器按预期运行。
kube-proxy
- 功能:负责提供集群内部的服务发现和负载均衡。通过 iptables 或 IPVS 规则将服务流量转发到后端的 Pod。
- 特点:支持多种网络模式,确保服务的高可用性和负载均衡。
Docker Engin
- 是Docker Engine的后台进程,负责管理所有Docker容器的创建、启动、停止和删除。
- 还负责管理Docker镜像的下载、构建和保存。
- 通过REST API与Docker客户端进行通信,以便管理Docker容器和镜像。