k8s管理工具之lens

什么是lens

Lens 是当前市场上最强大的K8S IDE。它是一个独立的单机应用,可以同时运行在macOS、Windows和Linux上。

作为K8S IDE,该有的它基本都有了!

集群管理

导入已有集群
首先,你需要在 Lens 中添加你的 Kubernetes 集群。点击 Lens 界面左上角的 "+ "图标,然后你可以选择 kubeconfig 文件的具体位置。这份文件会包含你的集群信息,Lens 会自动读取并显示在集群列表中。

添加集群后即可查看修改对应资源信息

Overview

通过Overview CPU、内存和 Pods 的状态:
在这里插入图片描述

图像中的信息提供了对计算资源使用的一个概览,帮助用户监控和管理资源的分配和使用情况。

Applications

在 Kubernetes 中,“Applications” 通常指的是运行在集群中的应用程序实例。这些应用程序可以是由多个容器组成的复杂服务,通常通过 Kubernetes 的工作负载(如 Deployment、StatefulSet、DaemonSet 等)进行管理。

Kubernetes 使用命名空间来隔离资源。如果你在某个特定的命名空间中查看“Applications”,而实际的应用程序被部署在其他命名空间中,那么你将看不到任何应用程序实例。
如下图,我们选择所有命名空间:
在这里插入图片描述

这幅图像提供了对当前 Kubernetes 集群内所有应用程序实例的概览,帮助用户了解各应用的状态、管理工具及运行时间。
屏幕顶部显示 “Applications - demo-k8s”,表示当前查看的是名为 “demo-k8s” 的 Kubernetes 集群内的应用程序实例。

Instance(实例):每个实例的名称
Application(应用程序):提示每个实例对应的应用程序名称。

在这里插入图片描述
这幅图像展示了一个 Kubernetes 管理界面的 Pods 列表

  • Name(名称):显示 Pod 的名称
  • Namespace(命名空间):指示每个 Pod 所属的命名空间
  • Containers(容器):指每个 Pod 中的容器数量。某些 Pods 中有多个容器,条形图显示了各 Pod 中的容器资源占用情况
  • CPU:显示每个 Pod 消耗的 CPU 资源,数值较小,表示资源使用较低。Kubernetes 允许用户请求部分 CPU。例如,0.5 表示请求半个 CPU 核心,0.25 则表示请求四分之一的 CPU 核心。这使得资源管理更加灵活
  • Memor(内存):展示每个 Pod 使用的内存量,以 MiB 为单位(例如:15.1MiB、262.8MiB 等)。
  • Restart:指示 Pod 的重启次数,所有 Pods 均显示 0,表示自创建以来没有重启
  • Controlled By(控制者):显示每个 Pod 的控制器类型,如 DaemonSet 和 ReplicaSet,指示 Pods 是由哪个控制器管理的。
  • Node(节点):显示 Pod 所运行的节点名称。
  • QoS(服务质量):显示 Pods 的服务质量等级,包括 Burstable 和 BestEffort,帮助用户了解 Pods 的资源请求和限制。
  • Age(年龄):显示每个 Pod 运行的时间,所有 Pods 均为 14d,表示它们已运行了 14 天。
  • Status(状态):所有 Pods 的状态均为 “Running”,表明它们当前正在正常运行。

相关解释:
cpu小数理解:
在定义 Pods 时,可以为每个容器设置 CPU 的请求(request)和限制(limit):
请求:容器启动所需的最低资源。如果请求的 CPU 资源被设置为 0.5,Kubernetes 会确保该 Pod 至少有 0.5 个 CPU 核心可供使用。
限制:容器可以使用的最大资源。如果限制设置为 1,Pod 在运行时的 CPU 消耗不会超过这个数量。

QoS(服务质量)等级
在 Kubernetes 中,QoS(服务质量)等级用于根据 Pod 的资源请求和限制来分类 Pods,以便为调度和资源管理提供指导。QoS 分为三种主要类别:Guaranteed、Burstable 和 BestEffort。

  1. Guaranteed(保证型)

定义:如果 Pod 的每个容器都有明确设置的请求和限制,并且这两个值相等,则该 Pod 被视为 Guaranteed 类型。
特征:
提供对资源的强保证。
对于这个类型的 Pod,如因节点资源紧张,Kubernetes 会尽量保持这些 Pod 继续运行,只有在没有其他选择的情况才会驱逐它们。
适用场景:适合需要高性能和稳定性的关键应用,确保在负载变化时能维持资源使用。

  1. Burstable(突发型)

定义:如果 Pod 的容器设置了请求(request)和限制(limit),但请求和限制不相等,即请求的 CPU 或内存小于限制,则该 Pod 被分类为 Burstable 。
特征:
允许 Pod 在需求高峰期使用更多资源,但仍有基础的资源请求保证。
Kubernetes 会尽量确保 Pod 拥有其请求的资源,同时在节点资源充足时可以使用更多资源。
适用场景:适合负载波动较大的应用,能够在需要时获得额外的资源,但同时又有一定的资源管理策略。

  1. BestEffort(最佳努力型)

定义:如果 Pod 的容器没有设置任何请求或限制,则该 Pod 被视为 BestEffort 类型
特征:
不对资源提供任何保证,Pod 可以使用任何可用资源,但在资源紧张时,它们是最先被驱逐的。
在资源丰富时盈利,资源不足时风险高。
适用场景:适用于对资源不敏感的非关键应用,或者对性能要求不高的工作负载。

总结
QoS 在 Kubernetes 中为 Pods 提供了不同的资源处理策略,帮助用户在资源有限的情况下平衡稳定性和弹性:
Guaranteed Pods 确保资源可用性,适用于关键任务应用。
Burstable Pods 允许灵活使用资源,适用于负载变化较大的服务。
BestEffort Pods 没有资源保障,适用于对资源需求不敏感的工作负载。
通过合理利用 QoS 机制,用户可以优化集群资源的使用,提高应用程序的性能和可靠性。

Nodes(节点)

如下显示的是名为 “demo-k8s” 的 Kubernetes 集群的节点信息。

在这里插入图片描述

表格中列出了三个节点的详细信息,主要包括以下列:
Name(名称):节点的完整域名,分别是 ip-10-230-11-22.eu-west-1.compute、ip-10-230-2-151.eu-west-1.compute 和 ip-10-230-6-128.eu-west-1.compute。
CPU:显示每个节点的 CPU 使用情况,使用条形图表示,具体数值可能隐藏,只显示使用比例。
Memory(内存):类似于 CPU,显示每个节点的内存使用情况。
Disk(磁盘):显示节点的磁盘使用情况,表格中可能包括当前使用量。
Taint(污点):显示节点的 Taint 信息,表中示例中第一个节点有 1 个 Taint。
Roles(角色):显示每个节点的角色,例如 privileged 和 app。
Version(版本):显示节点使用的 Kubernetes 版本,这里均为 v1.30.8-eks-a.e。
Age(年龄):每个节点自创建以来的时间,例如 14d 表示运行了 14 天。
Conditions(条件):显示节点的状态,所有节点状态均显示为 “Ready”,表示它们正常运行并准备接受工作负载。

Taint
/teɪnt/

tolerations
/ˌtɒləˈreɪʃənz/

taint(污点)和Toleration(容忍)可以作用于node和pod 上(即:污点是给node节点设置的,容忍度是给pod设置的)

Taint 和 toleration 相互配合,可以用来避免 pod 被分配到不合适的节点上。每个节点上都可以应用一个或多个 taint ,这表示对于那些不能容忍这些 taint 的 pod,是不会被该节点接受的。如果将 toleration 应用于 pod 上,则表示这些 pod 可以(但不要求)被调度到具有相应 taint 的节点上。

官方文档链接: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/

Workloads工作负载

通过Workloads查看集群主体资源、Pods、Deployments等资源信息

在这里插入图片描述

界面中有多个环形图表示不同类型工作负载的状态:

  • Pods:
    共 41 个 Pods,其中全部 41 个 Pods 状态为 “Running”。
  • Deployments(部署):
    共 20 个部署,所有部署状态均为 “Running”。
  • Daemon Sets(守护进程集合):
    共 7 个守护进程集合,其中 6 个在 “Running” 状态,1 个状态为 “Unknown”。
  • Stateful Sets(有状态集合):
    只有 1 个有状态集合,当前状态为 “Running”。
  • Replica Sets(副本集合):
    共 56 个副本集合,其中 20 个在 “Running” 状态,而 36 个状态为 “Unknown”。

在页面底部,有一个区域显示 Jobs 和 Cron Jobs 的数量,这两个项目目前均为 0,表示当前没有任何作业或定时作业。

工作负载类型
  • Pods:
    Pods 是 Kubernetes 的基本执行单元,包含一个或多个紧密耦合的容器。Pods 最适合用于运行单个实例的应用程序。
  • Deployments(部署):
    Deployments 提供了一种声明式的方式来管理 Pods 的部署和扩缩。它能够确保指定数量的 Pods 持续运行,并支持版本控制和滚动更新,使得可以方便地更新和回滚应用程序。
  • Stateful Sets(有状态集合):
    Stateful Sets 用于管理有状态应用程序,这类应用需要持久性存储和唯一的标识。它确保 Pods 启动、停止以及扩展时的顺序性,并为每个 Pod 提供一个独特的网络标识和持久存储。
  • Daemon Sets(守护进程集合):
    Daemon Sets 确保每个节点上都运行一个 Pod 的副本,适用于一些需要在每个节点上运行的后台服务,例如日志收集、监控或者网络管理工具。
  • Replica Sets(副本集合):
    Replica Sets 确保在任意时间有指定数量的 Pods 正在运行。虽然通常使用 Deployments 来管理副本集,但本身也是工作负载的一种,适合需要手动管理副本的场景。
  • Jobs(作业):
    Jobs 用于一次性任务的执行,确保指定数量的 Pods 成功完成特定的计算任务。作业完成后,Pods 会变为 Completed 状态,不再运行。
  • Cron Jobs(定时作业):
    Cron Jobs 是一种特殊的类型,用于定期执行的作业,类似于 Unix 系统中的 cron 任务。它能在指定的时间和频率下创建 Jobs。
Deployments 和 Pods

Pods

  • 基本单位:
    Pods 是 Kubernetes 中的基本执行单元,用于封装一个或多个紧密耦合的容器(通常是一个容器)。一个 Pod 中的容器可以共享网络、存储等资源
  • 生命周期管理:
    Pods 的生命周期短暂,可以被创建和销毁。它们不具备自我管理能力,例如检测到失败后自动重启。Pods 一旦被删除,所运行的容器也会随之终止。
  • 适用场景:
    Pods 适合用于运行简单应用程序或服务的单个实例,通常不需要进行复杂的管理。

Deployments

  • 高级管理:
    Deployments 是一种对 Pod 的管理抽象,提供了一种声明式方式来管理应用的部署。用户可以定义所需的 Pod 数量和其他策略,Deployments 会负责创建、更新和维护这些 Pods 的状态
  • 自我修复:
    Deployments 会自动监控 Pods 的健康状态,并确保所需数量的 Pods 始终在运行。如果某个 Pod 出现故障或被删除,Deployment 会自动创建新的 Pod 以替代它
  • 版本控制和更新:
    Deployments 支持版本控制和滚动更新,使得应用程序的版本更新可以逐步进行,降低了更新过程中的风险。如果需要,可以轻松回滚到先前的版本
  • 适用场景:
    Deployments 适用于需要高可用性和灵活性的应用程序,特别是那些需要频繁更新和管理的微服务架构。

用户通常通过创建一个 Deployment 来管理多个 Pod,而每个 Deployment 可以创建和管理多个 Pods,以确保应用的水平扩展和高可用性。
一般情况下,使用 Deployments 是推荐的做法,因为它提供了更高级的管理功能,而 Pods 则常常是 Deployments 管理的对象。

Config(配置)

通过Configuration来查看集群ConfigMaps、Secrets、HPA等信息:

在这里插入图片描述

每个条目代表 Kubernetes 中的不同配置资源:

  • Config Maps:用于存储配置信息,方便应用程序动态加载配置。
  • Secrets:用于存储敏感信息,如密码、密钥等,提供了额外的安全性。
  • Resource Quotas:用于限制命名空间中资源的使用量,以确保资源的公平分配。
  • Limit Ranges:定义在命名空间中 Pod 和容器的资源请求和限制的范围。
  • Horizontal Pod Autoscalers:用于根据 CPU 使用率或其他指标自动调整 Pod 的副本数量。
  • Pod Disruption Budgets:用于定义在操作(如升级)期间可以被中断的 Pod 数量。
  • Priority Classes:为 Pods 设置优先级,以便在资源紧张时决定哪些 Pods 最先得到资源。
  • Runtime Classes:定义不同的运行时环境,以便为 Pods 提供不同的配置和特性。
  • Leases:用于协调控制器之间的租约管理,帮助处理资源访问的竞争。
  • Mutating Webhook Configurations:用于在创建或更新 Kubernetes 资源时动态修改请求的对象。
  • Validating Webhook Configurations:用于在创建或更新 Kubernetes 资源时验证请求的对象是否合法。
Network

在这里插入图片描述

  • Services(服务):用于定义和管理 Kubernetes 中的服务,负责将网络请求路由到正确的 Pods。
  • Endpoints(端点):用于显示与服务关联的 Pod 的网络地址,帮助识别服务的实际后端。
  • Ingresses(入口):用于管理外部访问到 Kubernetes 集群中服务的路由规则。
  • Ingress Classes(入口类):定义不同类型的入口控制器,帮助对不同的路由方式进行分类。
  • Network Policies(网络策略):用于定义 Pod 之间的网络访问控制,限制 Pod 之间的通信。
  • Port Forwarding(端口转发):允许将请求转发到集群中的 Pods,便于开发和调试。
其他控制组件

在这里插入图片描述

Namespaces(命名空间):用于组织 Kubernetes 集群中的资源,有助于实现资源隔离和管理。
Events(事件):用于查看 Kubernetes 集群中发生的事件,帮助用户监控和调试集群状态。
Helm:指向 Helm,Kubernetes 的包管理工具,帮助用户管理应用程序的发布和更新。
Access Control(访问控制):涉及权限和访问管理,确保用户可以根据需要访问集群资源。
Custom Resources(自定义资源):用于管理 Kubernetes 中的自定义资源类型,可以扩展 Kubernetes 的功能。
Definitions(定义):可能用于进一步展示自定义资源的定义和配置选项。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SynthDetoxM - 现代LLM是少样本的并行去毒化数据标注器

SynthDetoxM: Modern LLMs are Few-Shot Parallel Detoxification Data Annotators https://arxiv.org/html/2502.06394v1 1. 主要内容 这篇论文提出了一个 用于生成多语言平行去毒化数据的管道,并介绍了SynthDetoxM,一个包含16,000个高质量去毒化句子对…

云服务器流量包用尽(中病毒)

1. 情况 腾讯云提示我账号欠费了,服务器存在恶意文件。。。 一看,流量包用尽超额了,CPU直接爆了。 用iftop监测一下网络流量。可以看到向多个IP发送了大量的流量。 看来是中病毒了,被当成 “肉鸡”,纳入“僵尸网络”…

RK3588视觉控制器与AI 算法:开启工业视觉检测新境界

在实际应用中,工业相机拍摄产品的图像,RK3588 迅速接收并进行预处理。AI 算法随即对图像进行深入分析,提取特征并与预设的标准进行对比,从而准确判断是否存在缺陷。 例如,在电子元件生产线上,RK3588 和 AI…

android的ViewModel这个类就是业务逻辑层吗

android的ViewModel这个类就是业务逻辑层吗? 相似:业务逻辑代码应该放在ViewModel这个类吗? 嗯,我现在在学习Android架构组件,特别是ViewModel。用户问ViewModel是否就是业务逻辑层,我需要仔细思考这个问题…

Gui-Guider1.8.1 数字时钟控件找不到定义,无法编译

我们在Gui-Guider中使用的一些控件,生成后会发现在LVGL源码中找不到该控件的定义,这时因为Gui-Guider中的一些控件是其自己编写的而不是LVGL提供的,那么我们该如何应用呢?这里拿Digital Clock数字时钟控件举例: 这里我…

使用 SDKMAN! 在 Mac(包括 ARM 架构的 M1/M2 芯片)安装适配 Java 8 的 Maven

好的,这是使用 SDKMAN! 安装适配 Java 8 的 Maven 的步骤: 前提条件: 安装 SDKMAN!: 如果你的系统上没有安装 SDKMAN!,请按照以下说明进行安装: curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-i…

【Stable Diffusion模型测试】测试ControlNet,没有线稿图?

相信很多小伙伴跟我一样,在测试Stable Diffusion的Lora模型时,ControlNet没有可输入的线稿图,大家的第一反应就是百度搜,但是能从互联网上搜到的高质量线稿图,要么收费,要么质量很差。 现在都什么年代了&a…

oracle表分区--范围分区

文章目录 oracle表分区分区的原因分区的优势oracle表分区的作用oracle表分区类型一、范围分区二、 创建分区表和使用:1、按照数值范围划分2、按照时间范围3、MAXVALUE2. 向现有表添加新的分区3、 分区维护和重新组织(合并/删除) oracle表分区…

InspurServer服务器监控指标详解

在现代信息化环境中,服务器的稳定运行对于业务连续性至关重要。InspurServer作为高性能服务器解决方案,其性能监控与优化更是不可或缺。本文将基于监控易一体化运维软件,深入探讨InspurServer服务器的关键监控指标,包括响应时间、…

基于opencv的 24色卡IQA评测算法源码-可完全替代Imatest

1.概要 利用24色卡可以很快的分析到曝光误差,白平衡误差,噪声,色差,饱和度,gamma值。IQA或tuning工程一般用Imatest来手动计算,不便于产测部署,现利用opencv实现了imatest的全部功能&#xff0c…

Django开发入门 – 4.创建Django app

Django开发入门 – 4.创建Django app Create A Django App Under An Existing Project By JacksonML 1. 什么是Django app? Django项目面向Web应用程序,它会由一个或多个子模块组成,这些子模块称为apps。 Django apps负责执行完整Web应用程序中涉及…

string

string 概念 string 字符串其实是一种更加高级的封装,string字符串中包含大量的方法, 这些方法使得字符串的操作变得更加简单。 C中将字符串直接作为一种类型,也就是string类型,使用string类型创建的 对象就是C的字符串。 使用C中提供的string是,必须添加头文件string。 st…

如何在Excel和WPS中进行翻译

文档翻译我们可以用在线翻译工具,Excel工作表的翻译使用在线翻译工具就不是特别方便,那么如何快速进行翻译呢,我们今天介绍在不同的场景下如何利用翻译函数和Python程序来实现单元格的快速翻译。 一、在wps中进行翻译 WPS是我们常用的办公软…

Docker Desktop Windows 之 安装 SqlServer

Docker 安装SqlServer 》》拉取 Pull docker pull mcr.microsoft.com/mssql/server:2022-latest 》》运行 run docker run -e “ACCEPT_EULAY” -e “MSSQL_SA_PASSWORDSA12345” -p 1400:1433 --name sql-server2022 -h sql-server2022 -d mcr.microsoft.com/mssql/server:20…

【STM32】ADC|多通道ADC采集

本次实现的是ADC实现数字信号与模拟信号的转化,数字信号时不连续的,模拟信号是连续的。 1.ADC转化的原理 模拟-数字转换技术使用的是逐次逼近法,使用二分比较的方法来确定电压值 当单片机对应的参考电压为3.3v时,0~ 3.3v(模拟信…

pdf.js默认显示侧边栏和默认手形工具

文章目录 默认显示侧边栏(切换侧栏)默认手形工具(手型工具) 大部分的都是在viewer.mjs中的const defaultOptions 变量设置默认值,可以使用数字也可以使用他们对应的变量枚举值 默认显示侧边栏(切换侧栏) 在viewer.mjs中找到defaultOptions,大概在732行,或则搜索sidebarViewOn…

使用DeepSeek和Kimi快速自动生成PPT

目录 步骤1:在DeepSeek中生成要制作的PPT主要大纲内容。 (1)在DeepSeek网页端生成 (2)在本地部署DeepSeek后,使用chatBox生成PPT内容 步骤2:将DeepSeek成的PPT内容复制到Kimi中 步骤3&…

PADS多层板减少层数

前提 PADS是硬件工程师必备的画图软件,相信很多朋友遇到过为降低成本把6层板改为4层,或8层改为6层的经历,正常是把不需要的两层上所有东西删掉,然后修改层设置,下面举例说明。 首先是将要删除的层上的数据全部删除&a…

Spring 项目接入 DeepSeek,分享两种超简单的方式!

⭐自荐一个非常不错的开源 Java 面试指南:JavaGuide (Github 收获148k Star)。这是我在大三开始准备秋招面试的时候创建的,目前已经持续维护 6 年多了,累计提交了 5600 commit ,共有 550 多位贡献者共同参与…

【LeetCode】689、三个无重叠子数组的最大和

【LeetCode】689、三个无重叠子数组的最大和 文章目录 一、dp1.1 dp 二、多语言解法 一、dp 1.1 dp // go // 输入: nums[] // 计算: 找三段长度为 k 的不重叠的子数组. 要求这 3k 个元素之和最大 // 输出: 三段子数组的 起始位置. 若有多个结果, 返回字典序最小的一个 func …