Kubernetes 系列:了解 k8s 架构(一)

这篇具有很好参考价值的文章主要介绍了Kubernetes 系列:了解 k8s 架构(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Kubernetes 概述

当下,我们很多项目于都在Cloud Native(云原生)的上面,这种方法旨在使组织能够确保可用性并快速响应和适应变化,云原生其实就是一组本质上支持在不同云环境(公共云、私有云或混合云)上大规模构建、运行和管理应用程序的实践和技术。

云原生离不开两个概念:容器微服务,这两个概念是任何云原生应用程序的构建块:

  • 微服务是小型、独立的服务(软件)的集合,可以在容器中轻松打包和执行。
  • 容器基于容器镜像, 容器是一个标准的软件单元,它打包代码及其所有依赖项,无论基础设施如何, 都允许应用程序快速可靠地运行
  • 容器镜像是一个轻量级的、独立的、可执行的软件包,其中包含运行应用程序所需的一切,容器镜像在运行时成为容器

使用微服务架构是确保应用程序速度、敏捷性、增长和可用性的基础,因此,它改善了用户体验。

例如,随着网络流量的增加或减少,放置在单体专用服务器上的整体应用程序比一组微服务更难扩展和缩减。

然而,微服务架构的快速采用导致生产环境中容器数量的增加,这使得容器的管理和维护变得非常困难。并且,如果服务的请求量上来,已部署的服务响应不过来的时候怎么办呢?传统的做法是,如果请求量、内存、CPU超过阈值做了告警,运维马上再加几台服务器,部署好服务之后,接入负载均衡来分担已有服务的压力。这样从监控告警到部署服务,中间需要人力介入。 因此,Kubernetes 的诞生就是为了解决这个问题。k8s实现自动完成服务的部署、更新、卸载和扩容、缩容等功能

Kubernetes(也称为 K8s)是一个开源平台,旨在自动化容器化应用程序的配置、管理、可扩展性和可用性。(或者简单地说,它是一个编排工具)

Kubernetes 最初是一个名为 Borg 的 Google 内部项目。 然后它被交给开源社区,现在由云原生计算基金会(CNCF)维护。

架构

从上图可以看到:

Kubernetes 集群由Control Plane和工作节点(Worker Node)组成。

Worker Nodes

Worker Node负责托管称为 Pod 的 k8s 对象。而Pod是k8s对象的最小单位。它在其中运行一个容器化应用程序。
所有 k8s 节点都运行三个主要代理:

  • Container Runtime: 在节点上运行容器, 负责从注册表加载容器镜像、监视容器资源、将容器彼此隔离以及管理容器生命周期(即 docker)
  • kube-proxy: 它通过监视两个主要的 k8s 对象:ServicesEndpoints 来维护 k8s 节点上的网络规则。这些网络规则允许 Pods 在 k8s 集群内部或外部可访问
  • kubelet:一个 systemd 进程。它接收 PodSpecAPI 调用并与Container Runtime通信,以确保遵守 PodSpec

PodSpec: 是描述 Pod 的文件,它的文件格式可以是 YAMLJSON 格式。每次更改后,会由 kube-controller-manager 通过 kube-apiserver 发送到 Kubelet 代理,以便 Kubelet 可以执行必要的更新以实现当前状态和所需状态之间的匹配。它还会发送到 kube-scheduler 以决定在哪个节点上运行 pod。

Control Plane Node

Control Plane由与Worker Node相同的代理加上几个其他代理组成。大多数进程在容器内执行,其中一些是 systemd 进程。他们负责确保集群的当前状态与所需状态匹配

  • kube-apiserver: apiserver k8s 集群的单一入口,它主要负责根据用户的具体请求,去通知其他组件
    从架构图可以看出k8s各个代理之间不直接通信。 数据通过kube-apiserver在代理之间传递。因此,kube-apiserver是 k8s 集群的单个入口,处理所有内部和外部的 k8s 流量(API 调用)。

apiserver调用时会为每个 API 调用执行身份验证(authentication)、授权(authorization)和admission control

authentication:当客户端提供有效的 TLS 证书时建立(有效的 TLS 证书是由集群的 CA 签名并受apiserver信任的证书)
authorization:通过RBAC,指定客户端是否可以对某些 k8s 对象执行CRUD 操作
admission controlCRUD operation: 如果客户端对 k8s对象执行的操作合法,则成立。例如,当集群有一个 ResourceQuota 对象将命名空间 dev 中可以创建的 pod 数量限制为 2 时。如果用户尝试创建 第3个 pod,则其请求将被拒绝

  • kube-controller-manager:由一组称为控制器的 k8s 对象组成
    在 k8s 中,Controller负责监控和调整在Worker Node上部署的服务的状态,比如用户要求A服务部署2个副本,当其中一个服务挂了,Controller会马上调整,让Scheduler再选择一个Worker Node重新部署服务。
  • cloud-controller-manager: 这是一个可选组件,仅在云上创建 Kubernetes 集群时才需要。该组件将 Kubernetes 集群链接到云提供商
  • kube-scheduler: K8S 所有Worker Node的调度器。当用户要部署服务时,Scheduler会选择最合适的Worker Node(服务器)来部署
  • etcd: K8S的存储服务。etcd存储了K8S的关键配置和用户配置,K8S中仅API Server才具备读写权限,其他组件必须通过API Server的接口才能读写数据

最好是始终确保有 etcd 数据的备份

总结

好了,到这里就简单的说明了k8s内部的一些组件作用和他的一个主要架构,总的来说k8sMaster Node具备:请求入口管理(API Server),Worker Node调度(Scheduler),监控和自动调节(Controller Manager),以及存储功能(etcd);而Worker Node具备:状态和监控收集(Kubelet),网络和负载均衡(Kube-Proxy)、保障容器化运行环境(Container Runtime)

下一篇我们介绍k8s里面一些重要的概念:PodVolume,ContainerDeployment 和 ReplicaSet以及Service和Ingress等。

转载:风向阅读 - Kubernetes 系列:了解 k8s 架构(一)文章来源地址https://www.toymoban.com/news/detail-499843.html

到了这里,关于Kubernetes 系列:了解 k8s 架构(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【K8s】K8s是什么,一文带你了解kubernetes

    作者简介: 辭七七,目前大二,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 kubernetes,简称K8s,是用8代替名字中间的8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主

    2024年02月03日
    浏览(37)
  • 四、Kubernetes(K8S):kubectl概述、安装、设置

    目录 概述 安装与配置kubectl 语法 命令 对象 规则结构 命令选项 资源类型 输出选项 格式化输出 自定义列 排序列表对象 常用操作示例 kubectl 是Kubernetes命令行工具。它允许用户与Kubernetes集群进行交互,并管理Kubernetes对象,如Pod、Service、Deployment等。kubectl可以在命令行界面中

    2024年02月12日
    浏览(48)
  • 4、Kubernetes 架构、理解 k8s 架构

    kubeadm 用于初始化 Cluster。 kubectl 是 Kubernetes 命令行工具。通过 kubectl 可以部署和管理应用,查看各种资源,创建、删除和更新各种组件。 kubelet 运行在 Cluster 所有节点上,负责启动 Pod 和容器。 Kubernetes Cluster 由 Master 和 Node 组成,节点上运行着若干 Kubernetes 服务。 通过 kub

    2024年02月16日
    浏览(36)
  • 【K8S】docker和K8S(kubernetes)理解?docker是什么?K8S架构、Master节点 Node节点 K8S架构图

    一、docker的问世         在LXC(Linux container)Linux容器虚拟技术出现之前,业界网红是虚拟机。虚拟机技术的代表,是VMWare和OpenStack。 虚拟机是什么?         虚拟机其实就是 在你的操作系统里面,装一个软件,然后通过这个软件,再模拟一台甚至多台“子电脑”出来。

    2024年03月26日
    浏览(42)
  • 【云原生 • Kubernetes】认识 k8s、k8s 架构、核心概念点介绍

    目录 一、Kubernetes 简介 二、Kubernetes 架构 三、Kunbernetes 有哪些核心概念? 1. 集群 Cluster 2. 容器 Container 3. POD 4. 副本集 ReplicaSet 5. 服务 service 6. 发布 Deployment 7. ConfigMap/Secret 8. DaemonSet 9. 核心概念总结 Kubernetes 简称 k8s,是支持云原生部署的一个平台,起源于谷歌。谷歌早在十几

    2024年02月03日
    浏览(60)
  • Kubernetes(k8s) 架构原理一文详解

    目录 一、k8s 概述 1.什么是k8s? 2.特性 3.主要功能 三、集群架构与组件 1.Master 组件 (1)Kube-apiserver (2)Kube-controller-manager (3)Kube-scheduler 2.配置存储中心 3.Node 组件 (1)Kubelet (2)Kube-Proxy (3)docker 或 rocket 四、k8s的工作流程 五、k8s的资源对象 1.Pod 2.Pod 控制器 2.Label 3

    2024年02月09日
    浏览(28)
  • 华为云arm架构安装k8s(kubernetes)

    先安装Docker 华为云arm架构安装Docker 设置主机名称 配置k8s的yum源 arm64的源 配置iptables 安装kubelet,kubeadm,kubectl 启动kubelet并设置开机启动服务 初始化k8s集群Master –apiserver-advertise-address=192.168.0.5 为Master的IP –image-repository registry.aliyuncs.com/google_containers 指定镜像仓库,如果不指定默

    2024年02月09日
    浏览(28)
  • 简单易学的Kubernetes(k8s):架构和源码解读

    1▲ 点击上方\\\"DevOps和k8s全栈技术\\\"关注公众号 Kubernetes(K8s)为云原生应用提供了强大的管理和编排能力。本文将深入探讨Kubernetes的架构,解剖其核心组件,以帮助读者更好地理解这个复杂而强大的系统。 第一部分: K8S基本概念和架构介绍 1. Kubernetes基本概念 Pods: 是Kubern

    2024年04月28日
    浏览(28)
  • 深入了解Kubernetes(k8s):安装、使用和Java部署指南(持续更新中)

    Docker和Kubernetes是两个不同的概念和技术,它们在容器化应用和容器编排方面有着不同的功能和作用。 Docker: Docker是一个开源的容器化平台,用于构建、打包和运行应用程序。通过使用Docker,你可以将应用程序及其依赖项打包到一个独立的轻量级容器中,使其可以在不同的环

    2024年02月10日
    浏览(27)
  • 从零开始学习K8s系列——Kubernetes指南

    作者:禅与计算机程序设计艺术 Kubernetes(简称k8s)是一个开源的,用于自动部署、扩展和管理容器化的应用的平台。它主要提供四大功能,包括: 服务发现和负载均衡 :Kubernetes集群中的服务能够自动地寻找其他运行着的服务并进行负载均衡。 存储编排 :Kubernetes允许用户

    2024年02月06日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包