k8s技术架构

2024-09-07 02:44
文章标签 云原生 技术 k8s 架构

本文主要是介绍k8s技术架构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • Kubernetes 核心概念
      • 主要组件
        • 1. Master 节点
        • 2. Worker 节点
      • 核心对象
      • 工作流程
      • 扩展性和插件化
    • kubernetes网络
      • Kubernetes 集群网络
        • Pod 网络
        • Service 网络
        • Ingress 网络
        • 网络策略
      • 主机网络
        • 主机网络配置
        • 主机与集群网络的集成

Kubernetes 核心概念

Kubernetes(通常简称为 K8s,因为“K”到“s”之间有 8 个字母)是一个用于自动化部署、扩展和管理容器化应用的强大平台。Kubernetes 的架构设计旨在提供高度可扩展、高可用性和易于管理的基础设施。下面是 Kubernetes 架构的主要组成部分及其功能解析:

主要组件

1. Master 节点

Master 节点是集群的大脑,它负责集群的管理和协调。Master 节点通常包含以下几个组件:

  • API Server

    • API Server 是集群的前端,它暴露了 RESTful API 接口,允许客户端与集群进行交互。
    • API Server 是集群状态的主要来源,它还负责验证和配置数据,并提供集群的认证和授权。
  • etcd

    • etcd 是一个分布式的键值存储,用于保存集群的状态数据,如配置、密钥等。
    • etcd 确保了数据的一致性和可靠性。
  • Controller Manager

    • Controller Manager 负责运行多个控制器,这些控制器负责执行集群的状态变更。
    • 控制器的例子包括 ReplicaSet 控制器、Deployment 控制器、Endpoint 控制器等。
  • Scheduler

    • Scheduler 负责监听待调度的 Pod,并选择合适的 Node 来运行它们。
    • Scheduler 会考虑 Node 的资源可用性、亲和性规则等因素来做出决策。
2. Worker 节点

Worker 节点(也称作 Node 或者 Minion)是集群中实际运行工作负载的地方。每个 Worker 节点包含以下组件:

  • kubelet

    • kubelet 是一个位于每个节点上的代理,它负责维护 Node 上的 Pod 状态与 API Server 中定义的状态一致。
    • kubelet 负责启动和停止容器,并报告 Pod 的状态。
  • Container Runtime(如 Docker、Containerd、rkt 等):

    • Container Runtime 负责拉取镜像、运行容器,并管理容器的生命周期。
    • Kubernetes 支持多种容器运行时。
  • kube-proxy

    • kube-proxy 负责实现 Kubernetes 服务(Services)的网络规则。
    • 它通过 iptables 或 IPVS 实现服务的负载均衡。

核心对象

Kubernetes 使用一组核心对象来定义和管理集群的状态。以下是几个重要的核心对象:

  • Pod

    • Pod 是 Kubernetes 中最小的可部署单位,它包含一个或多个容器。
    • Pod 代表了一个或一组容器的逻辑主机。
  • ReplicaSet

    • ReplicaSet 确保任意时刻都有指定数量的副本(Pod)在运行。
    • 它通常用于保证应用的高可用性。
  • Deployment

    • Deployment 是用于声明式更新应用状态的更高层次抽象。
    • 它使用 ReplicaSet 来保证应用的副本数,并支持滚动更新。
  • Service

    • Service 定义了一个逻辑组的 Pod 以及如何访问它们(例如,网络流量应该如何到达 Pod)。
    • Service 提供了一个稳定的 IP 地址和 DNS 名称,即使后端的 Pod 发生变化。
  • PersistentVolume (PV) 和 PersistentVolumeClaim (PVC)

    • PV 是集群中的一部分存储资源,可以由用户申请。
    • PVC 是用户对存储资源的请求,当一个 PVC 被绑定到一个 PV 后,用户就可以使用这个存储空间。

工作流程

  1. 用户通过 kubectl 发送命令:用户使用 kubectl 工具向 API Server 发送命令,如查询、创建、更新或删除资源。

  2. API Server 接收请求:API Server 接收到请求后,验证请求并将其存储在 etcd 中。

  3. Controller Manager 检测并同步状态:Controller Manager 中的控制器检测到状态的变化,并尝试使集群的状态与期望状态保持一致。

  4. Scheduler 分配 Pod:当 Pod 创建后,如果没有指定具体的 Node,Scheduler 会选择一个合适的 Node 来运行 Pod。

  5. kubelet 创建和管理容器:kubelet 根据 API Server 中的描述创建和管理容器。

  6. kube-proxy 设置网络规则:kube-proxy 设置必要的网络规则,以便 Pod 可以相互通信,并对外暴露服务。

扩展性和插件化

Kubernetes 设计为高度可扩展和插件化的,支持通过自定义控制器、Webhook、Admission Controller 等机制来扩展其功能。此外,Kubernetes 支持多种存储插件、网络插件等,使其能够适应不同的基础设施环境。

通过理解 Kubernetes 的架构和核心组件,你可以更好地利用 Kubernetes 来管理容器化的应用和服务。

kubernetes网络

在 Kubernetes(K8s)环境中,“集群网络”指的是在集群内部如何管理和配置网络,以便容器化的应用程序能够互相通信,并且可以与外部网络进行交互。而“主机网络”则是指运行 Kubernetes 工作负载的物理或虚拟机器上的网络配置。

Kubernetes 集群网络

Pod 网络
  • Pod 网络模型:在 Kubernetes 中,每个 Pod 都被视为拥有独立的网络栈,即每个 Pod 都有一个唯一的 IP 地址,并且所有的容器共享这个 IP 地址和端口空间。这意味着 Pod 内部的容器可以直接通过 localhost 相互访问。
  • Pod 间的通信:Pod 之间的通信通常是通过 Kubernetes 内置的网络功能实现的,比如使用默认的 bridge 网络或其他第三方网络插件,如 Calico、Flannel、Cilium 等。
Service 网络
  • Service:Kubernetes 的 Service 对象定义了一组 Pod 的逻辑集合以及访问它们的策略。Services 提供了一个抽象层来定义一组 Pod 的逻辑集合,并且提供了访问这些 Pod 的方法。
  • Service 类型
    • ClusterIP:默认类型,为 Service 分配一个集群内部的 IP 地址。只有集群内部的客户端可以访问此 Service。
    • NodePort:为 Service 分配一个每个 Node 上的静态端口。任何 Node 上的客户端都可以通过 <nodeIP>:<nodePort> 访问此 Service。
    • LoadBalancer:创建一个外部负载均衡器(云提供商或负载均衡硬件),并将外部 IP 地址映射到 NodePort 上的 Service。
    • ExternalName:通过返回 CNAME 和其值来返回 Service 的外部 DNS 名称。
Ingress 网络
  • Ingress 控制器:处理进入集群的 HTTP(S) 流量,并根据域名和路径将请求路由到相应的 Services。Ingress 控制器通常与负载均衡器一起工作,以提供更高级别的路由和负载均衡功能。
网络策略
  • NetworkPolicy:允许集群管理员控制 Pod 间的通信规则,包括允许来自哪些 Pod 的入站流量,以及允许向哪些 Pod 发送出站流量。

主机网络

在 Kubernetes 集群中,主机网络指的是底层物理或虚拟机器的网络配置。这些机器可以是裸金属服务器、虚拟机或云实例。主机网络的重要性在于它影响了 Kubernetes 如何在其上构建和维护集群网络。

主机网络配置
  • 物理网络接口:每个主机都至少有一个物理网络接口,用于连接到物理网络或虚拟交换机。
  • 网络配置:主机的网络配置包括 IP 地址、子网掩码、网关、DNS 设置等信息。这些配置决定了主机如何与外部网络通信。
  • 防火墙规则:为了安全起见,通常会在主机上配置防火墙规则来控制进出流量。
主机与集群网络的集成
  • 网络插件:Kubernetes 集群使用的网络插件(如 Flannel、Calico 等)通常会在主机上安装代理程序,这些代理程序负责配置必要的网络接口、路由表项和其他网络资源,以支持集群内的网络通信。
  • NAT 和路由:在多主机环境中,集群网络通常依赖于 NAT 和路由来确保 Pod 之间的通信能够跨越多个主机。

总之,Kubernetes 集群网络关注的是如何在集群内部实现容器间的通信和服务发现,而主机网络则关注的是如何配置和管理底层主机的网络设置,以支持集群网络的功能。两者相互作用,共同实现了 Kubernetes 集群的整体网络架构。

这篇关于k8s技术架构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1143830

相关文章

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。

90、k8s之secret+configMap

一、secret配置管理 配置管理: 加密配置:保存密码,token,其他敏感信息的k8s资源 应用配置:我们需要定制化的给应用进行配置,我们需要把定制好的配置文件同步到pod当中容器 1.1、加密配置: secret: [root@master01 ~]# kubectl get secrets ##查看加密配置[root@master01 ~]# kubectl get se

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵魂,TTS 技术都扮演着至关重要的角色。从最初的拼接式方法到参数化技术,再到现今的深度学习解决方案,TTS 技术经历了一段长足的进步。这篇文章将带您穿越时

系统架构设计师: 信息安全技术

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师: 信息安全技术前言信息安全的基本要素:信息安全的范围:安全措施的目标:访问控制技术要素:访问控制包括:等保

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

前端技术(七)——less 教程

一、less简介 1. less是什么? less是一种动态样式语言,属于css预处理器的范畴,它扩展了CSS语言,增加了变量、Mixin、函数等特性,使CSS 更易维护和扩展LESS 既可以在 客户端 上运行 ,也可以借助Node.js在服务端运行。 less的中文官网:https://lesscss.cn/ 2. less编译工具 koala 官网 http://koala-app.