Kubernetes核心组件及资源介绍

news2024/12/23 1:50:37

文章目录

    • 一、Kubernetes架构
    • 二、Kubernetes核心组件
    • 三、Kubernetes核心资源
    • 四、拓展
      • 1、Service和Ingress的区别是什么?
      • 2、Replicaset和Deployment的区别是什么?
      • 3、Deployment和Statefulset的区别是什么?
      • 4、Job和Cronjob的区别是什么?
      • 5、Configmap和Secret的区别是什么?

一、Kubernetes架构

请添加图片描述

Kubernetes 采用了分布式系统的架构,包括 Kubernetes Master 和 Kubernetes Node 两个组件:

  • Kubernetes Master:负责整个 Kubernetes 集群的管理和控制,包括 API Server、etcd、Scheduler、Controller Manager 等。
  • Kubernetes Node:是集群中的工作节点,运行着容器和 Kubernetes Agent。其中,容器是应用程序的运行环境,Kubernetes Agent 负责与 Kubernetes Master 进行通信,并将容器的状态信息汇报给 Kubernetes Master。

Kubernetes 通过调度器(Scheduler)将应用程序的容器自动地调度到合适的节点上,并自动进行负载均衡和服务发现等功能。同时,它还支持水平自动伸缩,根据应用程序的负载情况自动扩缩容器的数量,确保应用程序的高可用性和可扩展性。

单Master节点架构图如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6wSs3YY3-1682042665202)(D:\MD归档文档\IMG\image-20230418203733364.png)]

二、Kubernetes核心组件

  • kubectl:管理k8s的命令行工具,可以操作k8s中的资源对象,如增删改查等。

  • etcd: 是一个高可用的键值数据库,存储k8s的资源状态信息和网络信息的,etcd中的数据变更是通过api server进行的。

  • apiserver: 提供k8s api,是整个系统的对外接口,提供资源操作的唯一入口,供客户端和其它组件调用,提供了k8s各类资源对象(pod,deployment,Service等)的增删改查,是整个系统的数据总线和数据中心,并提供认证、授权、访问控制、API注册和发现等机制,并将操作对象持久化到etcd中。

  • scheduler:负责k8s集群中pod的调度的 , scheduler通过与apiserver交互监听到创建Pod副本的信息后,它会检索所有符合该Pod要求的工作节点列表,开始执行Pod调度逻辑。调度成功后将Pod绑定到目标节点上,相当于“调度室”。

  • Controller-Manager:是一个负责监控K8s系统中各个对象状态并按需处理的组件。Controller-Manager包含了多个控制器,每个控制器负责管理一类对象,如ReplicaSet、Deployment等。 控制器会监测与自己相关的对象的状态变化,并根据需要创建、更新或删除相关对象,以确保系统的实际状态与期望状态一致。 控制器还负责实现许多Kubernetes功能,如水平自动扩展、滚动更新、自愈能力等。

  • Calico: 是一套开源的网络和网络安全方案,用于容器、虚拟机、宿主机之前的网络连接。

  • kubelet:是Master在Node上的Agent,管理本机运行容器的生命周期,比如创建容器、Pod挂载数据卷、获取容器和节点状态等工作,kubelet将每个Pod转换成一组容器。

  • kube-proxy:提供网络代理和负载均衡,是实现service的通信与负载均衡机制的重要组件,kube-proxy负责为Pod创建代理服务,从apiserver获取所有service信息,并根据service信息创建代理服务,实现service到Pod的请求路由和转发,从而实现K8s层级的虚拟转发网络,将到service的请求转发到后端的pod上。

  • Cordns:一个 DNS 服务,而 DNS 作为一种常见的服务发现手段,很多开源项目以及工程师都会使用 CoreDNS 为集群提供服务发现的功能,Kubernetes 就在集群中使用 CoreDNS 解决服务发现的问题。

  • Docker:容器运行时,负责启动容器的,在k8s1.24版本之后废弃docker,使用container作为容器运行。

三、Kubernetes核心资源

  • Pod:是K8s中的最小调度单元,k8s是通过定义一个Pod的资源,然后在Pod里面运行容器,容器需要指定镜像,用来运行具体的服务。一个Pod封装一个容器(也可以封装多个容器),Pod里的容器共享存储、网络等。也就是说,应该把整个pod看作虚拟机,然后每个容器相当于运行在虚拟机的进程。

  • Label:K8s中的资源对象大都可以打上标签,如Node、Pod、Service 等,一个资源可以绑定任意多个label,k8s 通过 Label 可实现多维度的资源分组管理,后续可通过 Label Selector 查询和筛选拥有某些 Label 的资源对象,例如创建一个 Pod,给定一个 Label是app=nginx,那么service可以通过label selector选择拥有app=nginx的pod,和其相关联,也可通过 app=nginx 删除拥有该标签的 Pod 资源。

  • Replicaset:是K8s中的副本控制器,管理Pod,使pod副本的数量始终维持在预设的个数。

  • Deployment:Deployment是管理Replicaset和Pod的副本控制器,Deployment可以管理多个Replicaset,是比Replicaset更高级的控制器,也即是说在创建Deployment的时候,会自动创建Replicaset,由Replicaset再创建Pod,Deployment能对Pod扩容、缩容、滚动更新和回滚、维持Pod数量。

  • Service(4层代理):在k8s中,Pod是有生命周期的,如果Pod重启IP很有可能会发生变化。如果我们的服务都是将Pod的IP地址写死,Pod的挂掉或者重启,和刚才重启的pod相关联的其他服务将会找不到它所关联的Pod,为了解决这个问题,在k8s中定义了service资源对象,Service 定义了一个服务访问的入口,客户端通过这个入口即可访问服务背后的应用集群实例,service是一组Pod的逻辑集合,这一组 Pod 能够被 Service 访问到,通常是通过 Label Selector实现的。

  • Ingress(七层代理):用于管理K8s群集上的入口流量。通过使用Ingress,可以轻松地将HTTP和HTTPS流量路由到K8s集群内的服务。它可以理解HTTP、HTTPS和TLS等不同的协议安全选项,并将其转发到不同的服务。

  • Statefulset:主要用于管理有状态应用程序。在StatefulSet中,每个Pod实例都具有唯一的网络标识符和稳定的存储标识符,这些标识符与Pod的名称和索引相关联。这使得StatefulSet在要求有一定顺序的应用程序部署、有状态的应用程序状态管理等方面非常有用。

  • Job:是一种用于批处理处理任务的控制器对象,通常用于一次性执行一些短暂的、非常需要完成才能继续执行下一步任务的工作。

  • CronJob:是一种基于时间调度的控制器对象,用于执行定时任务。与Job对象类似,CronJob也允许您定义一个或多个Pod,但它们是在确定的时间间隔内运行的,而不是在一次性任务完成后终止。

  • Configmap:是一种用于存储配置数据的对象。它可以存储密钥-值对、环境变量、命令行参数等应用程序配置,在应用程序部署过程中提供独立于镜像的配置和环境。

  • Secret:是一种用来存储和管理加密数据(如密码、OAuth tokem、SSL/TLS证书等)的对象,它主要解决了敏感数据在容器中存储和传输时的安全问题。

四、拓展

1、Service和Ingress的区别是什么?

Service用于将应用程序部署到集群中的节点,并公开在集群内部的其他对象中进行访问。 Service负责让Kubernetes集群内的其他对象(如Pod)可以安全地访问到应用程序,同时也支持Pod的发现和负载均衡。

Ingress是一个Kubernetes内置的对象,它定义了从集群外部到集群内部应用程序的流量路由规则。Ingress可以将所有应用程序暴露到Internet上,并根据域名和URL路径来路由请求。Ingress可以使用不同的控制器(如Nginx、Traefik等)进行实现,以提供更丰富的流量路由和负载均衡功能。

因此,Service主要是为了在Kubernetes集群内部提供服务,并支持内部流量的路由和负载均衡;而Ingress是为了将应用程序暴露到Internet上,并根据域名和URL路径进行流量路由。在实际应用中,如果需要将应用程序暴露到Internet上,则需要使用Ingress;如果仅需要在Kubernetes集群内部提供服务,则可以使用Service。

2、Replicaset和Deployment的区别是什么?

Kubernetes中的ReplicaSet和Deployment都是用于管理Pod副本的控制器,它们的作用和职责是有些不同的。

ReplicaSet是一个用于确保在Kubernetes集群中指定数量的Pod副本副本的控制器。它通过不断地对比当前Pod副本数量与期望Pod副本数量,保持两者的一致性,确保在节点故障或删除Pod的情况下,能够自动创建新的Pod副本。 ReplicaSet仅仅关注Pod副本数量,而不关心Pod的版本更新。

Deployment是一个高级别的控制器,它可以协调多个ReplicaSet来实现Pod的滚动更新、回滚、版本管理等功能。Deployment定义了期望的Pod副本数量以及如何创建、更新和删除Pod,它会管理多个ReplicaSet版本之间的切换。Deployment还支持滚动更新的策略,可以控制每个Pod的更新时间间隔和并发更新数量等。

因此,ReplicaSet是一个较为基础的控制器,它主要用于确保Pod副本数量的管理,而Deployment是一个对ReplicaSet的高级封装,它提供了更多的功能和控制,使得管理和更新应用程序变得更加方便和灵活。在实际应用中,如果需要对Pod进行简单的管理,则可以使用ReplicaSet,如果需要进行版本管理、滚动更新等高级功能,则建议使用Deployment。

3、Deployment和Statefulset的区别是什么?

StatefulSet和Deployment都是Kubernetes的控制器对象,但它们在应用程序的部署和管理上有一些区别。

Deployment通常用于管理无状态应用程序,而StatefulSet通常用于管理有状态应用程序,提供了更严格的Pod顺序控制和滚动更新支持。

4、Job和Cronjob的区别是什么?

Kubernetes中的Job和CronJob都是用于处理任务的控制器对象,但它们之间有一些区别:

  • 执行方式:Job对象通常用于一次性执行一些短暂的、非常需要完成才能继续执行下一步任务的工作。而CronJob对象则是基于时间调度定期执行任务。

  • 运行时间:Job通常只运行一次,完成一项任务后即停止,而CronJob则可以根据您设置的时间表定期运行任务。

  • 创建方式:Job只需要定义一个Pod模板即可,而CronJob除了定义一个Pod模板外,还需要定义一个时间调度表。

  • 自动清理:在任务完成后,Job会自动删除Pod,而CronJob会保留Pod以便日后查看任务日志或进行审计。

总的来说,Job对象更适用于一次性任务,例如数据处理、数据导入/导出等。CronJob则更适用于周期性的任务,例如系统清理、日志归档、数据备份等。

5、Configmap和Secret的区别是什么?

ConfigMap和Secret都是Kubernetes中用于存储配置信息的对象,但它们在使用场景和安全性上有一些不同。

  • 用途不同:ConfigMap用于存储非敏感信息,如应用程序配置文件、命令行参数等;而Secret用于存储敏感信息,如密码、证书等。

  • 存储方式不同:ConfigMap将配置信息存储为键值对的形式,可以使用Volume在Pod中挂载;而Secret也是将敏感信息存储为键值对,但会对其进行加密保护,可以使用Volume、环境变量等方式在Pod中使用。

  • 安全性不同:ConfigMap中的信息一般为明文,可以通过kubectl get configmap命令查看其内容;而Secret中的信息是加密的,只有具有访问权限的用户才能查看其内容。

  • 更新方式不同:ConfigMap可以使用kubectl edit或kubectl apply更新配置信息;而Secret通常不建议使用kubectl edit或kubectl apply更新敏感信息,最好使用kubectl create或kubectl apply等命令创建新的Secret,并删除旧的Secret。

综上所述,ConfigMap和Secret都是Kubernetes中非常重要的存储配置信息的对象,但ConfigMap适用于存储一些非敏感信息,而Secret则适用于存储一些敏感信息,需要更高的安全性。

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

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

相关文章

【FAQ】统一扫码服务常见问题及解答

1.隐私政策是怎么样的?收集哪些信息? 关于Scan Kit的隐私政策及收集的信息,请查看SDK隐私安全说明。 Android:SDK隐私安全说明 iOS:SDK隐私安全说明 2.如何使用多码识别?多码模式下如何实现指定条码&am…

vue生命周期的理解?

目录标题 一、什么是生命周期?二、生命周期的流程图: 一、什么是生命周期? Vue 实例有一个完整的生命周期,也就是从开始创建、初始化数据、编译版、挂载Dom ->染、更新 ->渲染、卸载 等一系列过程,称这是Vue的生…

简单清晰了解B树和B+树

一.学习背景 在MySQL的学习中,我们了解到了索引的知识,而关于MySQL索引背后的数据结构,我们在这里进行学习. 首先,我们要了解到的是,MySQL的索引用到的数据结构为B树. 使用B树是因为,在数据量大的时候,内存不够用,大部分数据只能存放在磁盘上,只有需要…

【Linux命令行与Shell脚本编程】第七章 Linux文件权限

Linux命令行与Shell脚本编程 第七章 Linux文件权限 文章目录 Linux命令行与Shell脚本编程七,Linux文件权限7.1,Linux的安全性7.1.1,用户信息 /etc/passwd文件7.1.2,用户密码 /etc/shadow文件7.1.3,useradd 添加新用户7.1.4,userdel 删除用户7.1.5, 修改用户1,usermod2,passwd…

Hystrix Dashboard图形化监控

👉🏻 SpringCloud 入门实战系列不迷路 👈🏻: SpringCloud 入门实战(一)什么是SpringCloud?SpringCloud 入门实战(二)-SpringCloud项目搭建SpringCloud 入门实…

【云计算•云原生】1.什么是云计算?它为什么这么火?

文章目录 1.云计算基础什么是云计算云计算的分类开源软件、自由软件、免费软件 2.云计算机制云基础设施机制云管理机制云安全机制基本云架构 3.虚拟化技术服务器虚拟化服务器虚拟化技术CPU虚拟化内存虚拟化设备和I/O虚拟化存储虚拟化网络虚拟化桌面虚拟化 KVM 4.网络与存储基础…

90后,第一批接棒白酒的“年轻人”

【潮汐商业评论/原创】 又到了每月的公司团建,“团建必喝酒”似乎已经成为了大家的共识。 但在酒水的选择上,有红的、啤的、洋的,还有低度果酒,唯独不见听谁说聚会喝白的。当Jason询问为什么没有白酒时,得到了几乎一…

C语言函数大全-- o 开头的函数

C语言函数大全 本篇介绍C语言函数大全-- o 开头的函数 1. obstack_init,obstack_free,obstack_alloc,obstack_blank,obstack_grow 1.1 函数说明 函数声明函数功能void obstack_init(struct obstack *obstack_ptr);它是 POSIX …

Python采集某网站小sp内容, m3u8内容下载

前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 环境使用: Python 3.8 Pycharm 模块使用: import requests >>> pip install requests import re 正则表达式 解析数据 import json 本次案例所用知识点: python基础语法: 字典创建/取值 print输出函数使用…

【人工智能概论】 RNN、LSTM、GRU简单入门与应用举例、代码耗时计算

【人工智能概论】 RNN、LSTM、GRU简单入门与应用举例、代码耗时计算 文章目录 【人工智能概论】 RNN、LSTM、GRU简单入门与应用举例、代码耗时计算一. RNN简介1.1 概念简介1.2 方法使用简介 二. 编码层embedding2.1 embedding的参数2.2 embedding的理解 三. Linear层与CrossEnt…

全景图像算法简述

全景图像拼接是一种将多个图像合成为一个大型全景图像的技术。这种技术广泛应用于虚拟现实、游戏开发、文化遗产保护等领域。本文将介绍三种主流的全景图像拼接算法,并对它们进行综合比较。 一、基于特征点匹配的拼接算法 特征点匹配是全景图像拼接中最常用的一种算…

深入讲解ARMv8 异常处理简介

内核稳定性问题复杂多样,最常见的莫过于“kernel panic”,意为“内核恐慌,不知所措”。这种情况下系统自然无法正常运转,只能自我结束生命,留下死亡信息。诸如: “Unable to handle kernel XXX at virtual …

直播系统开发中哪些技术架构是必不可少的

在当今数字化时代,直播已成为一种极其受欢迎的娱乐和营销方式。由于直播应用的复杂性,架构师在直播系统的开发和设计中扮演着至关重要的角色。本文将介绍直播系统开发中技术架构师所必不可少的技术和工具。 什么是直播系统? 直播系统是一种通…

uni-app入门到实战

🍿*★,*:.☆( ̄▽ ̄)/$:*.★* 🍿 🍟欢迎来到前端初见的博文,本文主要讲解uni-app入门到实战🍟 👨‍🔧 个人主页 : 前端初见 🥞喜欢的朋友可以关注一下&#xff…

【Linux】浏览器写代码!部署code-server远程vscode网页

部署code-server远程vscode网页,在浏览器上写代码! 参考文档 https://developer.aliyun.com/article/876967#slide-7 本文首发于 慕雪的寒舍 1.什么是code-server? 注意,这不是在linux系统上安装vscode软件(和windo…

虹科分享 | 如何主动保护个人信息 | 网络安全评级

网上报税和支付越来越流行,针对毫无防备的纳税人的税务欺诈也越来越频繁。以下是一些需要避免的常见网上税务骗局: 网络钓鱼诈骗 骗子利用电子邮件、短信或电话伪装成相关机构或报税软件提供商,诱骗人们提供他们的个人信息,或点击…

走进梦龙冰淇淋的生产线 揭晓“灯塔工厂”背后的秘密

作为一家积极履行社会责任的公司,联合利华和路雪在今年3月携手京东“青绿计划”,推出了包含梦龙、可爱多、千层雪、和路雪等多款可持续组合装产品,这一助力实现双碳目标的举措也引发了消费者的关注。其实,自联合利华太仓食品生产基…

我们都被 ChatGPT 给骗了?

引言: 用过 ChatGPT 的人都知道,当你与 chatgpt 对话的时候,它是“逐字输出”的,就像真的有个人在跟你打字一样。其实,这种技术并没有那么神奇,这种技术叫做“实时文本生成”或“逐字输出”技术&#xff0…

分布式事务Seata-AT模式

承接上文分布式事务-二阶段提交 Seata是开源的分布式事务解决方案,提供高性能和简单易用的分布式事务服务,包含AT、TCC、 SAGA、XA四种事务模式,为用户打造一站式的分布式解决方案。 Seata提供的4种事务模式都是由2PC(二阶段提交…

【C++的内联函数】

文章目录 一、什么是内联函数二、内联函数的优缺点三、使用内联函数的注意事项 一、什么是内联函数 用关键字inline修饰的函数叫做内联函数。 C编译器编译时会自动在被调用的地方展开。 二、内联函数的优缺点 内联函数的优点: 没有函数栈帧创建,提升…