一、Kubernets简介
Kubernetes是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。
说明:什么是工作负载?什么是声明式配置?
工作负载时K8S中对集群内运行的容器化应用及其实例的统称,涵盖Pod、Deployment、StatefulSet等不同形态,用于定义应用的运行状态、副本数量等,是K8S进行调度、管理和运维的核心对象。
声明式配置式指在K8S中,用户只需要定义应用“期望达到的最终状态”(如Pod副本数、资源限制)。无需指定实现步骤,由K8S自动将实际状态调整未期望状态的配置方式。
1.1、容器的优势
-
敏捷性:与使用 VM 镜像相比,提高了容器镜像创建的简便性和效率。
-
及时性:通过快速简单的回滚(由于镜像不可变性),支持可靠且频繁的 容器镜像构建和部署。
-
解耦性:在构建/发布时创建应用程序容器镜像,而不是在部署时。 从而将应用程序与基础架构分离。
-
可观测性:兼顾 OS 与应用级指标,清晰掌握运行状态。
-
跨平台:跨开发、测试和生产的环境一致性:在便携式计算机上与在云中相同地运行。
-
可移植:可在 Ubuntu、RHEL、CoreOS、本地、 Google Kubernetes Engine 和其他任何地方运行。
-
简易性:以应用为核心,抽象层级更高,简化管理。
-
大分布式:支持微服务架构,应用拆分为独立单元动态部署。
-
隔离性:资源隔离保障应用性能稳定可预测。
-
高效性:高效率和高密度。
1.2、K8S核心能力精简总结
-
服务发现与负载均衡:通过 DNS 或 IP 暴露容器,流量过大时自动分配流量,保障部署稳定
-
存储编排:支持自动挂载本地存储、公有云存储等,灵活适配不同存储需求
-
自动部署与回滚:定义容器期望状态后,K8s 以受控速率调整实际状态,支持自动化容器替换与版本回滚
-
自动装箱计算:按容器指定的 CPU、内存需求,智能分配资源,优化资源管理
-
自我修复:自动重启、替换故障容器,剔除未通过健康检查的容器,确保服务就绪前不对外提供访问
-
密钥与配置管理:安全存储密码、令牌等敏感信息,可在不重建镜像、不暴露密钥的前提下更新配置
二、Kubernets集群原理

K8S的架构有三大核心部分组成,它们协同工作实现容器编排与管理:
1.控制平面(Control Plane)
作用:集群的“大脑”,负责全局决策、状态维护和调度协调
核心组件:
• API Server:集群操作的唯一入口,处理所有REST请求(如kubectl命令)
• etcd:分布式键值数据库,持久化存储集群所有状态数据(如节点、Pod、配置)
• Scheduler:调度器,监听未调度的Pod,根据资源决策将其绑定到合适的Node
• Controller Manager:运行核心控制循环(如节点状态监控、Pod副本数维护)

2.工作节点(Worker Nodes)
作用:实际运行容器的物理/虚拟机
核心组件:
• kubelet:节点上的“代理”,与API Server通信,管理本机Pod生命周期
• kube-proxy:维护节点网络规则(如Service的IPVS/iptables转发)
• 容器运行时(Container Runtime):执行容器操作(如Containerd、CRI-O)

3. 插件(Addons)
作用:扩展集群功能的非核心组件(通常以Pod形式部署)
关键类别:
-
网络插件:实现Pod网络通信(如Calico、Flannel)
-
DNS服务:为Service提供域名解析(CoreDNS)
-
Dashboard:Web管理界面
-
Ingress Controller:管理外部访问流量(如Nginx Ingress)
三部分写作流程示例
已部署Nginx为例:
1.控制平面:用户通过kubectl向API Server提交Deployment请求
2.调度决策:Scheduler将Pod绑定到Node,状态写入etcd
3.节点执行:目标Node的kubelet调用容器运行时(Container)启动容器
4.网络配置:kube-proxy和CNI插件为Pod配置IP和路由
5.插件支持:CoreDNS提供nginx.default.svc.cluster.local域名解析
注:点赞收藏,下期更深入讲解组件的作用及之间的关系。
3万+

被折叠的 条评论
为什么被折叠?



