| 自动装箱 |
| 自我修复 |
| 水平扩展 |
| 服务发现 |
| 滚动更新 |
| 版本回退 |
| 密钥和配置管理 |
| 存储编排 |
| 批处理 |
- K8S架构主要包含两部分:Master(主控节点)和 node(工作节点)
| master:主控节点 |
| API Server:集群统一入口,以restful风格进行操作,同时交给etcd存储 |
| 提供认证、授权、访问控制、API注册和发现等机制 |
| scheduler:节点的调度,选择node节点应用部署 |
| controller-manager:处理集群中常规后台任务,一个资源对应一个控制器 |
| etcd:存储系统,用于保存集群中的相关数据 |
| |
| Work node:工作节点 |
| Kubelet:master派到node节点代表,管理本机容器 |
| 一个集群中每个节点上运行的代理,它保证容器都运行在Pod中 |
| 负责维护容器的生命周期,同时也负责Volume(CSI) 和 网络(CNI)的管理 |
| kube-proxy:提供网络代理,负载均衡等操作 |
| Pod |
| Pod是K8s中最小的单元 |
| 一组容器的集合 |
| 共享网络【一个Pod中的所有容器共享同一网络】 |
| 生命周期是短暂的(服务器重启后,就找不到了) |
| |
| Volume |
| 声明在Pod容器中可访问的文件目录 |
| 可以被挂载到Pod中一个或多个容器指定路径下 |
| 支持多种后端存储抽象【本地存储、分布式存储、云存储】 |
| |
| Controller |
| 确保预期的pod副本数量【ReplicaSet】 |
| 无状态应用部署【Deployment】 |
| 无状态就是指,不需要依赖于网络或者ip |
| 有状态应用部署【StatefulSet】 |
| 有状态需要特定的条件 |
| 确保所有的node运行同一个pod 【DaemonSet】 |
| 一次性任务和定时任务【Job和CronJob】 |
| |
| Deployment |
| 定义一组Pod副本数目,版本等 |
| 通过控制器【Controller】维持Pod数目【自动回复失败的Pod】 |
| 通过控制器以指定的策略控制版本【滚动升级、回滚等】 |
| |
| Service |
| 定义一组pod的访问规则 |
| Pod的负载均衡,提供一个或多个Pod的稳定访问地址 |
| 支持多种方式【ClusterIP、NodePort、LoadBalancer】 |
| image-20201122161132055 |
| 可以用来组合pod,同时对外提供服务 |
| |
| Label |
| label:标签,用于对象资源查询,筛选 |
| image-20201122161713638 |
| |
| Namespace |
| 命名空间,逻辑隔离 |
| 一个集群内部的逻辑隔离机制【鉴权、资源】 |
| 每个资源都属于一个namespace |
| 同一个namespace所有资源不能重复 |
| 不同namespace可以资源名重复 |
| |
| API |
| 我们通过Kubernetes的API来操作整个集群 |
| 同时我们可以通过 kubectl 、ui、curl 最终发送 http + json/yaml 方式的请求给API Server,然后控制整个K8S集群,K8S中所有的资源对象都可以采用 yaml 或 json 格式的文件定义或描述 |

| 多个master节点,管理多个node节点,同时中间多了一个负载均衡的过程 |

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)