Kubernetes 架构图和组件

news2024/12/25 4:30:11

🧑 博主简介:CSDN博客专家历代文学网(PC端可以访问:历代文学,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程高并发设计Springboot和微服务,熟悉LinuxESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分享所学,希望通过我的实践经历和见解,启发他人的创新思维。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。
技术合作请加本人wx(注明来自csdn):foreast_sea

在这里插入图片描述

 


介绍

Kubernetes 已成为众多企业的超级英雄,为微服务实施中复杂的 API 结构可能引起的潜在混乱带来了秩序。

然而,就像任何超级英雄一样,Kubernetes 也有其局限性。这就是理解 Kubernetes 架构图变得至关重要的地方。

了解 Kubernetes 架构图使您能够掌握 Kubernetes 架构的重要元素并对其进行微调以实现有效操作。不可否认,Kubernetes 赋予了自动化功能,简化了应用程序的管理和部署。但是,为了实现高效的 Kubernetes 部署,利用适当的工具和技术来确保更好的投资回报至关重要。

本文将探讨 Kubernetes 架构的关键组件以及如何优化它们以实现高效的容器部署。

定义

什么是 Kubernetes?

Kubernetes 是一个开源系统,用于自动部署、扩展和管理容器化应用程序。

它将构成应用程序的容器分组到逻辑单元中,以便于管理和发现。Kubernetes 是一个可移植的可扩展平台,可促进声明式配置和自动化。它最初由 Google 设计,现在由全球贡献者社区维护。

undefined

什么是 Kubernetes 架构?

Kubernetes 是一个强大的开源容器编排平台,它彻底改变了组织管理和部署容器化应用程序的方式。Kubernetes 的核心是提供了一个强大的框架,用于自动部署、扩展和管理容器化工作负载。

了解架构

Kubernetes 架构遵循主工作模型,其中控制平面监督和管理集群,而工作节点执行实际的容器化应用程序。

Kubernetes 架构组件:控制平面

控制平面是 Kubernetes 集群的大脑,负责编排和管理各种组件。它由几个关键要素组成:

1. kube-apiserver:

  • 处理 API 请求和管理集群状态的中央通信中心。
  • 充当用户和其他组件与集互的网关。
  • 验证 API 请求、验证和授权用户,并协调控制平面和 Worker 节点之间的流程。
  • 使用 etcd 存储和检索集群状态信息。

2. etcd (等注):

  • 一个高度可用的分布式键值存储,用于存储有关集群配置和状态的关键信息。
  • 由 kube-apiserver 用于存储和检索有关 Pod、服务、部署和其他 Kubernetes 对象的数据。
  • 保证集群状态的一致性和可靠性。

3. kube-scheduler 调度器:

  • 负责根据资源需求、约束和调度策略将 Pod 分配给 worker 节点。
  • 使用 etcd 中存储的信息来做出调度决策。
  • 考虑节点容量、关联规则和反关联规则等因素。

4. kube-controller-manager:

  • 管理负责集群内特定任务的各种控制器。
  • 包括用于复制集、部署、有状态集、守护程序集和作业的控制器。
  • 通过根据需要创建、更新和删除 Pod 来确保集群的所需状态得到维护。

5. cloud-controller-manager(可选):

  • 将 Kubernetes 与云提供商集成,以获得特定于云的功能。
  • 提供用于与云资源(如虚拟机、负载均衡器和存储卷)交互的 API。
  • 简化云环境中 Kubernetes 集群的管理。

Kubernetes 架构组件:Worker 节点

Worker 节点是 Kubernetes 集群的基本组件,用于执行实际的容器化应用程序。他们负责运行 Pod,Pod 是 Kubernetes 中最小的部署单元,可以包含一个或多个容器。

Worker 节点的关键组件:

  1. kubelet 的
    • 在每个 worker 节点上运行的代理,充当节点和控制平面之间的接口。
    • 负责向 control plane 注册节点,管理节点上的 Pod,以及与 kube-apiserver 通信。
    • 处理创建、启动、停止和删除容器以及管理卷和网络接口等任务。
  2. kube-proxy 的
    • 负责集群内的服务发现和负载均衡。
    • 创建网络规则,以根据服务定义将流量路由到 Pod。
    • 确保可以从集群内部和外部访问服务。
  3. 容器运行时:
    • 在 worker 节点上运行容器的引擎。
    • 常用容器运行时的示例包括 Docker、containerd 和 CRI-O。
    • 负责拉取容器镜像、创建和管理容器以及为容器提供资源。

Worker 节点的工作原理:

  • 控制平面根据各种因素(例如资源需求和约束)安排在 worker 节点上执行 pod。
  • worker 节点上的 kubelet 接收 Pod 规范,并使用容器运行时创建必要的容器。
  • kube-proxy 确保服务向外界公开,并确保流量在服务的多个实例之间进行负载均衡。
  • Worker 节点为运行容器化应用程序提供底层基础设施和资源。

Kubernetes 集群附加组件

附加组件组件是可选组件,可以添加到 Kubernetes 集群中以增强其功能并满足特定要求。这些组件通常提供核心 Kubernetes 发行版中未包含的专用服务或功能。

附加组件的重要性:

  • 增强功能:附加组件可以提供其他特性和功能,例如网络管理、DNS 解析和资源监控。
  • 定制:您可以选择最适合您的特定需求和使用案例的附加组件。
  • 集成:许多附加组件与 Kubernetes 无缝集成,因此可以轻松地将它们整合到您的集群中。

流行的附加组件:

  • CNI 插件:容器网络接口 (CNI) 插件用于为 Kubernetes 集群中的容器提供网络连接。流行的 CNI 插件包括 Calico、Flannel 和 Weave Net。
  • CoreDNS 的:一个 DNS 服务器,为 Kubernetes 集群中的服务提供 DNS 解析。
  • Metrics 服务器:一种收集和公开 Kubernetes 集群资源使用指标的工具,允许您监控和优化资源分配。

Web 用户界面:用于管理 Kubernetes 集群的基于 Web 的用户界面,提供了一种更加用户友好的方式来与平台交互。

顶级 Kubernetes 工具

Kubernetes 为管理容器化应用程序提供了一个强大的平台,但掌握其功能需要一套强大的工具。以下是按用途分类的一些基本工具的细分:

1. Kubernetes CLI 工具:

这些命令行工具提供了一种直接与 Kubernetes 集互的强大方式。

  • kubectl 的Kubernetes 工具的瑞士军刀。它允许您执行各种任务,包括管理部署、Pod、服务和命名空间。
  • 掌舵:适用于 Kubernetes 的软件包管理器,可简化应用程序的部署和管理。Helm 图表提供了一种在 Kubernetes 集群中打包和安装应用程序的标准化方法。
  • 脚手架:一种开发工具,可简化容器化应用程序的本地开发和测试。它可以自动构建、推送镜像并将其部署到 Kubernetes 集群。
  • Customize:用于自定义 Kubernetes 清单和部署的工具。它简化了对多个资源的更改应用过程,而无需修改原始配置文件。
  • Kubeval:用于在部署之前验证 Kubernetes YAML 文件的工具。它有助于确保您的配置在语法上正确并符合最佳实践。

2. Kubernetes 监控工具:

有效监控对于维护正常运行的 Kubernetes 集群至关重要。这些工具提供对资源利用率、应用程序运行状况和整体集群性能的见解。

  • 语义文本监控:一个全面的监控解决方案,提供对 Kubernetes 集群的详细见解,包括资源使用情况、应用程序性能和基础设施指标。
  • Kubernetes 仪表板:一个简单的基于 Web 的 UI,用于查看和管理 Kubernetes 集群。它概述了资源、部署和 Pod 运行状况。
  • 普罗 米修斯: 一种流行的开源监控系统,用于收集和存储来自容器化应用程序和 Kubernetes 资源的指标。
  • Grafana:一种可视化工具,允许您创建自定义控制面板,用于可视化 Prometheus 和其他监控工具收集的指标。
  • Jaeger:一个分布式跟踪平台,可帮助您了解通过微服务应用程序的请求流。Jaeger 可以与 Kubernetes 集成,以监控容器化服务的性能和运行状况。

3. Kubernetes 安全工具:

安全性对于任何容器化环境都至关重要。这些工具可帮助您强化 Kubernetes 集群并识别潜在的安全漏洞。

  • 开放策略代理 (OPA): 一个强大的策略引擎,允许您在 Kubernetes 集群内的各个级别实施安全策略。
  • KubeLinter 的 KubeLinter 中: 一种分析 Kubernetes YAML 文件以获取安全最佳实践和潜在漏洞的工具。
  • Kube-bench 的实例: 对 Kubernetes 集群配置执行安全审计的工具。它可以识别潜在的安全风险并建议补救措施。
  • Kube-hunter 的:一种安全工具,通过识别未经授权的部署、特权容器和错误配置来扫描 Kubernetes 集群中的漏洞。
  • Terrascan:用于基础设施安全扫描的工具。它可以与 Kubernetes 集成,以扫描您的集群配置是否存在安全风险。

4. Kubernetes 部署工具:

这些工具可自动执行容器化应用程序的构建、测试和部署过程,使您能够简化 CI/CD(持续集成/持续交付)管道。

  • 詹金斯: 一种流行的开源 CI/CD 工具,可用于自动构建、测试和将容器化应用程序部署到 Kubernetes 集群。
  • Spinnaker:一个强大的 CI/CD 平台,提供持续交付功能,用于将容器化应用程序部署到 Kubernetes。
  • Fluxcd.io:一种 GitOps 工具,使用 Git 作为在 Kubernetes 中管理部署的事实来源。它根据对 Git 存储库所做的更改自动部署应用程序。

选择正确的工具

最佳工具的选择取决于您的具体需求和用例。考虑集群的大小和复杂性、监控和安全要求以及您首选的 CI/CD 管道结构等因素。通过利用正确的工具组合,您可以有效地管理 Kubernetes 环境、优化性能并确保容器化应用程序的可靠性和安全性。

Kubernetes 架构最佳实践

Kubernetes 作为一个强大的容器编排平台,提供了许多特性和功能来有效地管理容器化应用程序。为了优化 Kubernetes 部署并确保最佳性能、可靠性和安全性,必须遵守最佳实践。

1. 利用命名空间:

  • 逻辑隔离:命名空间提供了一种将集群逻辑划分为不同环境或项目的方法。
  • 资源管理:它们通过隔离不同的团队或应用程序来帮助更有效地管理资源。
  • 安全:命名空间可用于实现基于角色的访问控制 (RBAC) 并限制对特定资源的访问。

2. 实施就绪情况和活跃度探测:

  • 健康检查:就绪情况探测检查 Pod 是否已准备好接收流量,而存活度探测确保容器仍在运行且运行状况良好。
  • 自动重启:Kubernetes 可以自动重启未通过运行情况探测或未准备好接收流量的 Pod。

3. 设置资源请求和限制:

  • 资源配置:定义 Pod 所需的最小和最大资源(CPU 和内存)。
  • 防止过度使用: 设置限制有助于防止 Pod 消耗过多资源并影响其他应用程序。
  • 服务质量:保证关键应用程序达到一定级别的性能。

4. 利用高级部署对象:

  • 抽象: 使用更高级别的部署对象(如 Deployments、ReplicaSets、StatefulSets 和 DaemonSets)来简化应用程序管理。
  • 声明式配置:描述应用程序的所需状态,Kubernetes 将自动协调实际状态以匹配所需状态。
  • 滚动更新:使用滚动更新等功能轻松更新应用程序,无需停机。

5. 在多个节点之间分配工作负载:

  • 可用性: 将 Pod 分布在多个节点上,以提高容错能力和可用性。
  • 负载均衡:在 Pod 之间均匀分配流量,以防止单个节点过载。
  • 资源优化: 确保整个集群的资源得到有效利用。

6. 实施基于角色的访问控制 (RBAC):

  • 安全:根据用户角色和权限限制对资源的访问。
  • 粒度控制: 为不同的用户或组授予特定权限,防止未经授权的访问。
  • 合规: 确保遵守安全法规和最佳实践。

7. 考虑为外部托管提供云服务:

  • 托管 Kubernetes:利用 AWS EKS、Azure AKS 或 Google Kubernetes Engine 等云托管的 Kubernetes 服务来简化管理和可扩展性。
  • 附加功能:受益于负载均衡、自动扩展和集成监控工具等内置功能。

8. 定期更新到最新版本:

  • 安全补丁:及时了解最新的 Kubernetes 版本,以从安全补丁和错误修复中受益。
  • 新功能: 访问较新版本中引入的新功能和增强功能。
  • 改进的性能: 享受性能改进和优化。

9. 监控集群资源和审计策略日志:

  • 故障 排除: 监控资源使用情况、识别瓶颈并排查性能问题。
  • 安全:审核策略日志以检测和解决安全威胁。
  • 优化: 做出数据驱动的决策,以提高集群效率和资源分配。

10. 对配置文件使用版本控制:

  • 协作: 使用 Git 等版本控制系统协作管理 Kubernetes 配置文件。
  • 跟踪更改:轻松跟踪更改、恢复到以前的版本并与团队成员协作。
  • 自动化: 将版本控制与 CI/CD 管道集成,以实现自动化部署。

通过遵循这些最佳实践,您可以优化 Kubernetes 部署、提高性能、增强安全性并确保容器化应用程序的可靠性。

undefined

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2265082.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GESP2024年12月认证C++五级( 第三部分编程题(2))

参考程序&#xff1a; #include<bits/stdc.h> using namespace std; #define ll long long int n, m; int cnt[1010]; vector<int> cs[1010]; ll calc(int aim) {int cur_cnt cnt[1];ll res 0;vector<int> tmp;for (int i 2; i<n; i){int buy max((…

基于DockerCompose搭建Redis主从哨兵模式

linux目录结构 内网配置 哨兵配置文件如下&#xff0c;创建3个哨兵配置文件 # sentinel26379.conf sentinel26380.conf sentinel26381.conf 内容如下 protected-mode no sentinel monitor mymaster redis-master 6379 2 sentinel down-after-milliseconds mymaster 60000 s…

npm error code ETIMEDOUT

参考:https://blog.csdn.net/qq_38572963/article/details/142052986 二、解决办法 1、清空缓存 npm cache clean --force 2、查看当前的npm镜像设置 npm config get registry 3、切换新镜像源 npm config set registry https://registry.npmmirror.com 4、查看新源是否设置成功…

【终端工具】FinalShell v4.5.12 官方版

1.下载地址 【终端工具】FinalShell v4.5.12 官方版 2.简介 FinalShell是一款免费的跨平台远程管理工具&#xff0c;专为开发者和运维人员设计。它支持通过 SSH、SFTP 等方式连接到 Linux 和 Windows 服务器&#xff0c;提供类似于终端的操作界面。除了常规的远程登录功能&a…

微前端qiankun的使用——实践

qiankun 创建主应用项目——vue2 main.js注册子应用 $ yarn add qiankun # 或者 npm i qiankun -Simport { registerMicroApps, start } from qiankun; import Vue from "vue"; import App from "./App.vue"; import router from "./router"; …

ansible play-book玩法

使用ansible-playbook实现安装nginx_ansible 安装nginx-CSDN博客文章浏览阅读1.5k次&#xff0c;点赞14次&#xff0c;收藏19次。本文详细介绍了如何在Linux环境中准备Ansible环境&#xff0c;包括配置主机、下载和安装Ansible&#xff0c;以及使用yum模块和tar包源码安装Nginx…

Require:离线部署 Sourcegraph

Sourcegraph 使读取、编写和修复代码变得容易——即使在庞大而复杂的代码库中。 代码搜索&#xff1a;搜索所有分支和所有代码主机的所有存储库。代码智能&#xff1a;导航代码、查找引用、查看代码所有者、跟踪历史记录等。修复和重构&#xff1a;一次对许多存储库进行大规模更…

大数据新视界 -- Hive 集群性能监控与故障排查(2 - 16 - 14)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

Windows搭建域控服务器时本地administrator账户密码不符合要求解决办法

cmd命令行执行以下命令&#xff0c;再重试&#xff1a; net user administrator /passwordreq:yesWindows Server 2016 域控服务器搭建教程&#xff1a;https://blog.csdn.net/u010091664/article/details/122072506

【研究生必备|学术会议|高录用|见刊后1个月检索】第三届材料科学与智能制造国际学术会议(MSIM2025)

用处 1. 学术交流 参加学术会议是展示您研究成果和获取反馈的绝佳机会。在会议上&#xff0c;您可以与来自各地的研究者进行深入交流&#xff0c;讨论最新的研究动态与趋势&#xff0c;分享经验与观点。 2. 拓展人脉 学术会议汇聚了来自不同高校和研究机构的优秀学者和学生。…

ubuntu开机进入initramfs状态

虚拟机卡死成功起后进入了initramfs状态&#xff0c;可能是跟文件系统有问题或者检索不到根文件系统&#xff0c;或者是配置错误&#xff0c;系统磁盘等硬件问题导致 开机后进入如下图的界面&#xff0c; 文中有一条提示 要手动fsck 命令修复 /dev/sda1 命令如下 fsck /de…

C# 线程安全集合

文章目录 引言一、ConcurrentBag<T>二、ConcurrentQueue<T>三、ConcurrentStack<T>四、ConcurrentDictionary<TKey, TValue>五、总结引言 在多线程编程环境中,多个线程可能同时访问和操作集合数据。如果使用普通集合,很容易引发数据不一致、错误结果…

S32K324 MCAL中的Postbuild和PreCompile使用

文章目录 前言Postbuild和PreCompile的概念MCAL中配置差异总结 前言 之前一直看到MCAL配置中有这个Postbuild和PreCompile的配置&#xff0c;但是不太清楚这两个的区别和使用方法。最近在使用中出现了相关问题&#xff0c;本文介绍一下MCAL中这两种配置的区别和使用。 Postbu…

中国电信网络下多方通话 SIP消息交互记录

如下表格记录了一个日志中,在中国电信网络下多方语音通话 发起方的 SIP消息交互记录,省略部分SIP消息,记录下和多方通话的重要SIP消息。 progress1:发起方A通过拨号盘呼叫B 此操作建立A和B之间的通话,网络会向终端分配QCI=1的专有承载。 同时此专有承载包含四个pkt_filt…

应用(APP)部署容器化演进之路

应用&#xff08;Application&#xff09;部署容器化演进之路 一、应用程序部署痛点 1.1 应用程序部署流程 举例&#xff1a;部署一个JAVA编程语言开发的Web应用&#xff0c;以War包放入Tomcat方式部署。 部署过程如下&#xff1a; 服务器配置运行环境:JAVA代码运行环境&am…

SDMTSP:粒子群优化算法PSO求解单仓库多旅行商问题,可以更改数据集和起点(MATLAB代码)

一、单仓库多旅行商问题 单仓库多旅行商问题&#xff08;Single-Depot Multiple Travelling Salesman Problem, SD-MTSP&#xff09;&#xff1a;&#x1d45a;个推销员从同一座中心城市出发&#xff0c;访问其中一定数量的城市并且每座城市只能被某一个推销员访问一次&#x…

AI在线医生

第一章:背景介绍与Unit的使用 1.1背景介绍 1.2 Unit对话API的使用 第二章:在线医生的总体架构与工具介绍 第三章:neo4j图数据库 第四章:离线部分 第五章:命名实体审核任务 第六章:命名实体识别任务 第七章:在线部分 第八章:句子主题相关任务 第九章:系统联调与测试

LiteFlow决策系统的策略模式,顺序、最坏、投票、权重

个人博客&#xff1a;无奈何杨&#xff08;wnhyang&#xff09; 个人语雀&#xff1a;wnhyang 共享语雀&#xff1a;在线知识共享 Github&#xff1a;wnhyang - Overview 想必大家都有听过或做过职业和性格测试吧&#xff0c;尤其是现在的毕业生&#xff0c;在投了简历之后经…

ubuntu paddle ocr 部署bug问题解决

ubuntu paddle ocr 部署会出现异常报错。 尝试安装以下版本&#xff1a; pip install paddlepaddle2.5.2 -i https://pypi.tuna.tsinghua.edu.cn/simpl ​​​​​​ 助力快速掌握数据集的信息和使用方式。 数据可以如此美好&#xff01;

华为云计算HCIE笔记02

第二章&#xff1a;华为云Stack规划设计 交付总流程 准备工作&#xff1a;了解客户的基本现场&#xff0c;并且对客户的需求有基本的认知。 HLD方案BOQ报价设备采购和设备上架 2.安装部署流程 硬件架构设计 硬件设备选配 设备上架与初始化配置 准备相关资料&#xff08;自动下载…