监控与升级

主要内容

  1. 部署Metrics
  2. 升级控制平面

预备知识

Kubernetes 在每个级别上都提供了有关应用程序资源使用情况的详细信息,此信息可用来评估应用程序的性能,以及在何处可以消除瓶颈以提高整体性能。
在 Kubernetes 中,应用程序监控不依赖单个监控解决方案。在新集群上,可以使用资源度量完整度量管道来收集监视统计信息。
资源指标管道提供了一组与集群组件,例如 Horizontal Pod Autoscaler 控制器以及 kubectl top 实用程序相关的有限度量。这些指标是由轻量级的、短期、内存存储的 metrics-server 收集的,并通过 metrics.k8s.io 公开。

  1. 监控是指对特定系统、网络、设备或应用程序进行实时或定期的监视和跟踪,以确保其正常运行并及时发现和解决潜在问题。监控可以包括对系统性能、资源利用率、安全性、可用性等方面的监测。

  2. 升级是指对系统、软件、硬件或设备进行更新或升级,以提高其性能、功能或安全性。升级可以包括软件或固件的更新、硬件的更换或升级、系统配置的调整等。

  3. 监控与升级的关系是,监控可以帮助发现系统或设备的性能瓶颈、安全漏洞或其他问题,从而为升级提供依据。而升级可以通过提供新功能、修复漏洞、优化性能等方式来改善系统或设备的运行状态,从而提高监控的效果。

在实际应用中,监控和升级通常是结合使用的。例如,可以通过监控系统的性能指标来确定是否需要对系统进行升级,比如增加硬件资源、优化软件配置等;另外,也可以通过监控系统的安全事件来及时发现并修复漏洞,以提高系统的安全性。

常见的监控与升级工具包括网络监控工具、服务器监控工具、应用程序监控工具等。这些工具可以提供实时监控、报警通知、性能分析、日志记录等功能,帮助管理员及时发现和解决问题,同时也提供了升级和优化的支持。

总之,监控与升级是保障系统运行稳定和安全的重要手段,通过监控系统状态并及时进行升级,可以提高系统的性能、可用性和安全性。


一.部署Metrics

Metrics是一种用于收集、存储和展示系统或应用程序的性能指标和统计数据的工具。它可以帮助开发人员和系统管理员实时监控系统的运行状态,并提供有关系统性能、资源利用率、错误率、请求延迟等方面的数据。

部署Metrics可以通过以下步骤进行:

  1. 选择Metrics工具:根据需求选择适合的Metrics工具,常见的工具包括Prometheus、Grafana、InfluxDB等。

  2. 安装和配置Metrics工具:根据Metrics工具的官方文档,下载并安装Metrics工具,并进行必要的配置。配置通常包括指定要监控的目标、设置数据存储和展示方式等。

  3. 定义和收集指标:Metrics工具通常提供一些默认的指标,如CPU使用率、内存使用率等,但也可以根据需求定义自定义指标。定义指标时,需要确定指标的名称、类型(如计数器、测量值等)和标签(用于标识指标的维度)等。

  4. 集成Metrics工具:将Metrics工具集成到系统或应用程序中,以便在运行时收集和发送指标数据。这通常涉及到在代码中添加Metrics库、配置指标收集和发送的逻辑等。

  5. 可视化和分析指标:使用Metrics工具提供的可视化界面或API,展示和分析收集到的指标数据。这可以帮助用户实时监控系统状态、发现潜在问题,并进行性能优化和故障排查。

Metrics的用法包括但不限于以下几个方面:

  1. 监控系统性能:通过收集和展示系统的各项指标,如CPU、内存、磁盘、网络等的使用率,可以实时监控系统的运行状态,及时发现和解决性能问题。

  2. 资源利用率分析:通过收集和展示资源的使用情况,可以了解系统的资源利用率,优化资源分配,提高系统的效率和可扩展性。

  3. 错误率和异常监控:通过收集和展示错误率、异常情况等指标,可以及时发现和解决系统中的错误和异常,提高系统的稳定性和可靠性。

  4. 请求延迟和吞吐量分析:通过收集和展示请求的延迟和吞吐量等指标,可以了解系统的性能瓶颈,优化系统的响应时间和吞吐能力。

总之,部署Metrics可以帮助用户实时监控系统状态、发现问题、优化性能,并提供数据支持进行决策和规划。

1.部署

代码如下(示例):
kubectl apply -f https://gitee.com/cnlxh/Kubernetes/raw/master/cka-yaml/metrics-components.yaml

部署好之后,执行 kubectl top 命令就会返回结果:
在这里插入图片描述
在这里插入图片描述

2.解释

"kubectl apply -f https://gitee.com/cnlxh/Kubernetes/raw/master/cka-yaml/metrics-components.yaml" 是一个使用kubectl命令部署Metrics组件的命令。具体解释如下:
- "kubectl" 是 Kubernetes 命令行工具,用于与 Kubernetes 集群进行交互。
- "apply" 是 kubectl 命令的一个子命令,用于应用或更新 Kubernetes 资源。
- "-f" 是 apply 命令的一个选项,用于指定要应用的资源文件。
- "https://gitee.com/cnlxh/Kubernetes/raw/master/cka-yaml/metrics-components.yaml" 是一个包含 Metrics 组件配置的 YAML 文件的URL地址。所以,这条命令的作用是将指定的 Metrics 组件配置文件应用到 Kubernetes 集群中。kubectl会根据该文件中的配置信息,创建或更新相应的 Kubernetes 资源,以部署和配置 Metrics 组件。请注意,执行此命令需要确保kubectl已正确安装并与所需的Kubernetes集群连接。

二.升级控制平面

升级控制平面是指将Kubernetes集群的控制平面组件(如API服务器、调度器、控制器管理器等)升级到新的版本。控制平面的升级通常是为了获取新功能、修复漏洞、提高性能或改进稳定性。

升级控制平面的详细步骤如下:

1.备份数据:在进行任何升级操作之前,务必备份Kubernetes集群的数据。这样可以在升级过程中出现问题时,恢复到之前的状态。

2.查看当前版本:使用kubectl命令查看当前集群的Kubernetes版本。可以运行以下命令来获取版本信息:

kubectl version

3.查看可用版本:查看可用的Kubernetes版本,以确定要升级到的目标版本。可以查看Kubernetes官方文档或相关文档,了解可用版本的特性和变化。

4.制定升级计划:根据集群的特性和需求,制定升级计划。这包括选择升级的版本、确定升级的时间窗口、准备升级所需的资源和工具等。

5.备份配置文件:备份当前控制平面的配置文件,以便在升级过程中重新应用配置。这些配置文件通常位于/etc/kubernetes目录下。

6.升级控制平面组件:根据升级计划,逐个升级控制平面组件。具体步骤可能因所使用的部署工具而有所不同,但一般包括以下几个步骤:

  • 停止当前版本的控制平面组件。
  • 下载和安装新版本的控制平面组件。
  • 启动新版本的控制平面组件。

7.验证升级:在升级完成后,使用kubectl命令验证集群的状态和功能是否正常。可以运行一些基本的命令,如获取节点、获取Pod等,来确保集群正常运行。

8.更新客户端工具:如果升级过程中使用的kubectl命令行工具也需要升级,可以根据官方文档或相关文档的说明,下载和安装新版本的kubectl工具。

升级控制平面的用法会因部署工具的不同而有所差异。以下是一些常见的部署工具及其升级命令的示例:

  • 使用kubeadm进行部署的集群:

    • 升级kubeadm工具本身:根据官方文档的说明,下载和安装新版本的kubeadm工具。
    • 升级控制平面组件:使用kubeadm upgrade命令来升级控制平面组件。例如:
      kubeadm upgrade apply v1.21.0
      
    • 升级kubelet和kube-proxy:根据官方文档的说明,逐个升级集群中的节点上的kubelet和kube-proxy组件。
  • 使用kubespray进行部署的集群:

    • 根据kubespray的文档,下载和安装新版本的kubespray。
    • 使用kubespray提供的升级脚本来升级控制平面组件。例如:
      ansible-playbook -i inventory/mycluster/hosts.ini --become --become-user=root cluster.yml
      

总之,升级控制平面是一个重要的操作,需要仔细计划和执行。在升级之前,务必备份数据,并确保了解目标版本的特性和变化。根据所使用的部署工具,按照相应的步骤和命令来进行升级操作,并在升级完成后验证集群的状态和功能。

1.先确定要升级的版本

代码如下(示例):
apt list kubeadm -a

在这里插入图片描述

2.禁止master节点接受新调度

代码如下(示例):
kubectl cordon cka-master
kubectl get nodes

在这里插入图片描述

3.驱逐master节点上的现有任务

代码如下(示例):
kubectl drain cka-master --ignore-daemonsets --delete-emptydir-data

在这里插入图片描述

4.安装目标的kubeadm,kubectl,kubelet

代码如下(示例):
apt-get update
apt-get install -y kubelet=1.27.1-00 kubeadm=1.27.1-00 kubectl=1.27.1-00

在这里插入图片描述
在这里插入图片描述

5.查看可升级的列表并升级

代码如下(示例):
kubeadm upgrade plan
kubeadm upgrade apply v1.27.1  --etcd-upgrade=false

在这里插入图片描述
在这里插入图片描述

6.恢复master节点调度的能力

代码如下(示例):
systemctl restart kubelet
kubectl uncordon cka-master
kubectl get nodes

在这里插入图片描述

7.解释

- `apt list kubeadm -a`:查看可用的kubeadm版本。这个命令会列出所有可用的kubeadm版本,包括已安装的版本和可用的版本。- `kubectl cordon cka-master`:将节点 `cka-master` 标记为不可调度状态。这个命令会阻止新的Pod被调度到该节点上,但已经运行在该节点上的Pod不受影响。- `kubectl get nodes`:获取集群中所有节点的状态。这个命令会列出集群中所有节点的名称、状态、角色等信息。- `kubectl drain cka-master --ignore-daemonsets --delete-emptydir-data`:将节点 `cka-master` 上的所有Pod迁移到其他节点,并标记为删除。这个命令会触发Pod的迁移操作,确保该节点上的所有Pod被安全地迁移到其他节点上。- `apt-get update`:更新系统的软件包列表。- `apt-get install -y kubelet=1.27.1-00 kubeadm=1.27.1-00 kubectl=1.27.1-00`:安装指定版本的kubelet、kubeadm和kubectl。这个命令会下载并安装指定版本的Kubernetes组件。- `kubeadm upgrade plan`:查看当前集群的升级计划。这个命令会列出当前集群的版本和可用的升级版本,并提供升级的建议和注意事项。- `kubeadm upgrade apply v1.27.1 --etcd-upgrade=false`:执行升级操作,将集群升级到指定的版本。这个命令会自动升级控制平面组件,并根据需要升级etcd。在这个示例中,禁用了etcd的升级。- `systemctl restart kubelet`:重启kubelet服务,使其加载新版本的kubelet配置。- `kubectl uncordon cka-master`:将节点 `cka-master` 标记为可调度状态。这个命令会允许新的Pod被调度到该节点上。- `kubectl get nodes`:再次获取集群中所有节点的状态,以确认升级操作是否成功。

总结

以上是今天要讲的内容,学到了监控与升级,包括部署Metrics,升级控制平面。

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

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

相关文章

PhpStorm快速注释与取消注释

ctrl / 单行注释 ctrl shift / 多行注释 重复以上操作,取消注释。

【计算机网络】HTTPS 的加密流程

HTTPS (Hypertext Transfer Protocol Secure) 是一种安全的 HTTP 协议,采用了加密通信技术,可以保护客户端与服务器之间的数据传输安全,从而防止中间人攻击、窃听、篡改等恶意操纵。HTTPS 的加密流程包括以下几个步骤: 客户端发送…

5G投资下降,遥遥领先的主流5G或被运营商抛弃,“假5G”更获青睐

虽然媒体仍然在宣扬5G的诸多领先技术优势,不过需要付钱的运营商已在行动中做出抉择,那就是放缓主流5G的投资,大举投资曾被称为“假5G”的低频5G,现实迫使运营商做出了如此选择。 媒体披露的数据指2022年中国的5G投资下滑了2.5%&am…

vue自定义全局指令v-emoji限制input输入表情和特殊字符

问题: 后台不提供富文本存储,所以emoji表情入库会报错需求要求前端在输入的时候过滤掉表情符号全局的input 和富文本textarea输入框都需要过滤emoji表情 分析: 1.每一个input写事件写正则校验代码量实在太多了还很麻烦;所以想用…

08-类加载的时机

类加载的时机 类的生命周期 类从被加载到虚拟机内存开始,到卸载出内存为止,它的整个生命周期包括以下 7 个阶段: 加载验证准备解析初始化使用卸载 验证、准备、解析 3 个阶段统称为连接。 加载、验证、准备、初始化和卸载这 5 个阶段的顺…

jsoup的使用

本文在写作过程中参考了官方文档,传送门。 一、jsoup概述 jsoup 是一款基于 Java 的HTML解析器,它提供了一套非常省力的API,不但能直接解析某个URL地址、HTML文本内容,而且还能通过类似于DOM、CSS或者jQuery的方法来操作数据&…

已解决fatal error: Python.h: No such file or directory

ubuntu 16.04 使用matplotlibcpp的C调用python时。会报已解决fatal error: Python.h: No such file or directory&#xff0c;但是我的系统已经安装Python了&#xff0c;解决方案如下&#xff1a; 将提示报错的文件类似如下哎&#xff1a; #include <Python.h>均改成 …

DevOps持续集成-Jenkins(4)

❤️作者简介&#xff1a;2022新星计划第三季云原生与云计算赛道Top5&#x1f3c5;、华为云享专家&#x1f3c5;、云原生领域潜力新星&#x1f3c5; &#x1f49b;博客首页&#xff1a;C站个人主页&#x1f31e; &#x1f497;作者目的&#xff1a;如有错误请指正&#xff0c;将…

Qt之自定义事件

在Qt中,自定义事件的步骤大概如下: 1.创建自定义事件,自定义事件需要继承QEvent 2.使用QEvent::registerEventType()注册自定义事件类型,事件的类型需要在 QEvent::User 和 QEvent::MaxUser 范围之间,在QEvent::User之前是预留给系统的事件 3.使用sendEvent() 和 postEv…

创建 Edge 浏览器扩展教程(上)

创建 Edge 浏览器扩展教程&#xff08;上&#xff09; 介绍开始之前后续步骤开始之前1&#xff1a;创建清单 .json 文件2 &#xff1a;添加图标3&#xff1a;打开默认弹出对话框 介绍 在如今日益数字化的时代&#xff0c;浏览器插件在提升用户体验、增加功能以及改善工作流程方…

搜维尔科技:Varjo-最自然和最直观的互动

创建真实生活虚拟设计 Varjo让你沉浸在最自然的混合和虚拟现实环境中。 世界各地的设计团队可以聚集在一个摄影现实的虚拟空间中,以真实的准确性展示新的概念-实时的讨论和迭代。这是一个充满无限创造潜力的新时代,加速了人类前所未有的想象力。 虚拟现实、自动反应和XR设计的…

用*画田字形状,numpy和字符串格式化都可以胜任

numpy的字符型元素矩阵&#xff0c;可以方便画&#xff1b;直接python字符串手撕&#xff0c;也可以轻巧完成。 (本笔记适合熟悉循环和列表的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《…

Monocular arbitrary moving object discovery and segmentation 论文阅读

基本信息 题目&#xff1a;Monocular Arbitrary Moving Object Discovery and Segmentation 作者&#xff1a; 来源&#xff1a;BMVC 时间&#xff1a;2021 代码地址&#xff1a;https://github.com/michalneoral/Raptor Abstract 我们提出了一种发现和分割场景中独立移动的…

TDengine(taos)数据库导出历史数据

业务需求&#xff1a;导出某个站点的累计充电量&#xff0c;累计放电量&#xff0c;光伏总放电量&#xff0c;进线总功率的所有数据‘ 1、登录taos&#xff0c;使用存数据的库&#xff1b; 提示Database changed&#xff1b;即为使用成功&#xff1b; 2、找到你想要导出的字段…

Spring Boot Web 项目配置解决跨域

文章归档&#xff1a;https://www.yuque.com/u27599042/coding_star/xc80n6opewy92kfp 通过编写配置类实现 WebMvcConfigurer 接口解决跨域 在项目中增加 WebMvcConfigurer 接口的实现配置类 WebMvcConfig import org.springframework.context.annotation.Configuration; imp…

制作macOS Ventura U盘启动盘教程

macOS 14更新一段时间了&#xff0c;发现某些应用不适配想要无损降级&#xff0c;如何进行macOS的降级呢&#xff0c;除了备份好的时间机器备份&#xff0c;还需要一个可以引导的macOS U盘安装器&#xff0c;如何制作macOS 13 Ventura 系统启动U盘呢&#xff0c;小编带来对新手…

【uniapp】小程序开发7:自定义组件、自动注册组件

一、自定义轮播图组件、自动注册 以首页轮播图组件为例。 1、创建组件文件src/components/my-swipper.vue 代码如下&#xff1a; <template><view><view class"uni-margin-wrap"><swiper class"swiper" circular :indicator-dots…

ES6初步了解生成器

生成器函数是ES6提供的一种异步编程解决方案&#xff0c;语法行为与传统函数完全不同 语法&#xff1a; function * fun(){ } function * gen(){console.log("hello generator");}let iterator gen()console.log(iterator)打印&#xff1a; 我们发现没有打印”hello…

前端(二十三)——轮询和长轮询

&#x1f62b;博主&#xff1a;小猫娃来啦 &#x1f62b;文章核心&#xff1a;实现客户端与服务器实时通信的技术手段 文章目录 前言轮询技术轮询的概念轮询的实现原理轮询的优缺点轮询的使用场景 长轮询技术长轮询的概念长轮询的实现原理长轮询的优缺点长轮询的使用场景 轮询与…

《C和指针》笔记34:字符串函数

文章目录 1. 获取字符串长度strlen 2. 复制字符串strcpystrncpy 3. 拼接字符串strcatstrncat 4. 字符串比较strcmpstrncmp 1. 获取字符串长度 strlen 库函数strlen的原型如下&#xff1a; size_t strlen( char const *string );注意strlen返回一个类型为size_t的值。这个类型…