3.云原生之kubesphere运维

news2024/11/24 16:52:19

文章目录

  • k8s节点状态介绍
  • 配置宿主机使用k8s内部域名
  • 使用KubeKey 升级kubesphere
  • 使用KubeKey添加节点
  • 使用KubeKey下架节点
  • 使用k8s命令添加新节点
  • k8s集群备份与恢复
    • 环境准备
    • 备份与还原
      • 在集群A和B中安装Velero
      • 集群A备份操作
      • 集群B还原备份操作

注意:所有节点运维操作前建议使用 Velero 来备份和迁移 Kubernetes 资源以及持久化存储卷

k8s节点状态介绍

在 Kubernetes 中,节点(Node)是集群中的工作节点,用于运行容器化应用程序。节点状态描述了节点的运行状况和可用性。以下是 Kubernetes 中节点状态的一些常见指标:

  1. Ready(就绪):表示节点已经准备好接受工作负载。节点必须处于就绪状态才能被调度器选择来运行容器。
  2. NotReady(未就绪):表示节点当前不可用或无法接受新的工作负载。可能是由于节点上的故障、网络问题或其他原因导致的。
  3. OutOfDisk(磁盘空间不足):表示节点的磁盘空间不足,无法继续运行容器。
  4. MemoryPressure(内存压力):表示节点的内存资源不足,无法继续运行容器。
  5. DiskPressure(磁盘压力):表示节点的磁盘资源不足,无法继续运行容器。
  6. PIDPressure(进程数压力):表示节点上的进程数已达到限制,无法继续运行容器。
  7. NetworkUnavailable(网络不可用):表示节点的网络连接不可用,无法与其他节点或服务通信。
  8. Unschedulable(不可调度):表示节点当前被标记为不可调度,即调度器不会将新的工作负载分配到该节点上。

这些节点状态可以通过运行 kubectl get nodes 命令来查看,其中的 STATUS 列会显示节点的状态信息。

配置宿主机使用k8s内部域名

参考:k8s篇-集群内的DNS原理与配置和K8s hosts 解析 HostAliases
集群node节点上的进程,如果希望能够访问到集群内的服务,可以修改node节点上的/etc/resolv.conf文件中的nameserver配置,将nameserver指定为集群coredns的ClusterIP来达到目的。

  1. 查找coredns的ClusterIP

image.png

  1. 修改resolv.conf文件:
vi /etc/resolv.conf

# 修改内容如下
nameserver 10.20.0.3
nameserver 114.114.114.114
nameserver 8.8.8.8   

resolv.conf 内容顺序影响:
在 CentOS 中,/etc/resolv.conf 文件用于配置系统的 DNS 解析器。该文件中的内容顺序确实会影响 DNS 解析的行为。
/etc/resolv.conf 文件可以包含多个 DNS 服务器的 IP 地址,并且按照顺序进行解析。当系统需要解析主机名时,它会按照文件中列出的 DNS 服务器的顺序进行查询,直到找到可用的 DNS 服务器或解析成功。

  1. 测试:
ping redis.kubesphere-system.svc.cluster.local

这样配置后jumpserver部署可以考虑使用docker-compse的部署方式,官网安装参考:离线安装 - JumpServer 文档

使用KubeKey 升级kubesphere

注意:升级不能跨版本,如v3.3.x 的集群集群升级到v3.4.x 的集群,需将集群挨版本升级到v3.3.x。

运行以下命令,将您的集群升级至 KubeSphere 3.4 和 Kubernetes v1.22.12:

# 在安装篇已经生成sample.yaml文件
./kk upgrade --with-kubernetes v1.22.12 --with-kubesphere v3.4.1 -f sample.yaml

若是担心新版配置文件和当前版本存在差异,可重新下载KubeKey进行对修改配置

使用KubeKey添加节点

官方文档:添加新节点
修改生成的配置文件config-sample.yaml,添加如下配置image.png

./kk add nodes -f config-sample.yaml

执行上述命令出现:参考安装篇在ksnode27节点上安装前置依赖
image.png
重新执行等待安装,出现如下信息则安装成功
image.png
验证安装结果
image.png
image.png

使用KubeKey下架节点

删除节点

# 查看集群节点
kubectl get node -o wide
# <nodeName>为下架节点名称
./kk delete node <nodeName> -f config-sample.yaml

当出现如下信息则下架成功:
image.png
验证下架是否成功:
image.png
image.png
使用k8s命令优雅下架节点
k8s 下线node正确处理姿势
:::info
在 Kubernetes 集群中下架节点需要执行以下步骤:
:::
标记节点不可调度:在下架节点之前,你需要将节点标记为不可调度,以防止 Kubernetes 在该节点上调度新的 Pod。你可以使用以下命令将节点标记为不可调度:
转移 Pod:在将节点下架之前,你需要将节点上的 Pod 转移到其他节点上。你可以使用以下命令将节点上的 Pod 转移到其他节点上:
从集群中删除节点:在将节点下架并转移 Pod 后,你可以将节点从 Kubernetes 集群中删除。你可以使用以下命令将节点从集群中删除:

  1. 查看集群节点
kubectl get node -o wide
  1. 节点不可调度
kubectl cordon <node-name>

在上面的命令中, 是要下架的节点的名称。

节点重新调度:

kubectl uncordon <node-name>
  1. 节点驱逐
kubectl drain <node-name>

在上面的命令中, 是要下架的节点的名称。kubectl drain 命令将停止节点上的所有 Pod,并将它们转移到其他节点上。如果你希望在转移 Pod 之前强制删除它们,可以使用 --force 和 --delete-local-data 标志。

  1. 节点下架
kubectl delete node <node-name>

在上面的命令中, 是要下架的节点的名称。
完成上述步骤后,节点将被从 Kubernetes 集群中删除,并且该节点上的 Pod 将被转移到其他节点上。请注意,在将节点下架之前,你需要确保节点上的所有应用程序都已停止,并且在下架节点期间不会有任何重要的任务运行。

使用k8s命令添加新节点

要将新节点添加到 Kubernetes 集群中,需要完成以下步骤:

  1. 安装 Kubernetes 软件和依赖项:在新节点上安装 Docker 和 Kubernetes 软件,以便在该节点上运行容器和管理集群。
  2. 加入集群:使用 kubeadm join 命令将新节点加入到 Kubernetes 集群中。在加入集群之前,需要获取 kubeadm join 命令的参数,这些参数可以从运行 kubeadm init 命令时生成的输出中获取。在新节点上执行以下命令:
kubeadm join <control-plane-host>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash <hash>

在上面的命令中, 是 Kubernetes 控制平面节点的主机名或 IP 地址, 是 Kubernetes 控制平面节点的端口号, 是加入集群所需的令牌, 是用于发现集群的 CA 证书哈希。这些参数可以从运行 kubeadm init 命令时生成的输出中获取。

  1. 验证节点状态:使用 kubectl get nodes 命令验证新节点已成功添加到 Kubernetes 集群中。在节点成功加入集群后,节点状态应为 Ready。
  2. 在将新节点添加到 Kubernetes 集群之前,你需要确保新节点具有与其他节点相同的操作系统、软件和配置。否则,在节点加入集群后可能会出现不兼容或不一致的情况,从而导致集群出现问题。

k8s集群备份与恢复

备份源环境的多节点 KubeSphere 集群 A,在目标环境上恢复此多节点 KubeSphere 集群。

注意:建议定期备份,或在节点运维前进行备份
参考:Velero Kubernetes备份恢复之velero实战

环境准备

  1. 源集群 A (master, node1, node2):已经部署 KubeSphere-v3.0.0
  2. 目标集群 B (master, node1, node2): 已经部署 Kubernetes-v1.17.9
  3. 独立的对象存储 Minio (虚机)
  4. 虚机操作系统:Centos 7

备份与还原

在集群A和B中安装Velero

  1. 安装Velero

image.png
image.png

  1. 进入解压目录,创建Velero和minio的凭证

image.png

  1. 创建备份目标源

image.png

集群A备份到minio,集群B从minio恢复

集群A备份操作

  1. 【集群A master上操作】首先备份存储对象文件,因为还原的时候不会生成存储对象
kubectl get sc local -o yamlopenebs-sc.yaml
  1. 【集群A master上操作】将存储对象文件拷贝到集群B master上
scp -r openebs-sc.yaml root@192.168.0.8:/root/
  1. 查看mster端的污点

image.png

  1. 取消master端的污点

image.png

  1. 查看PV挂载情况

image.png

  1. 注释挂载PV【没挂载才能备份】

image.png

  1. 备份名称空间

image.png
image.png

集群B还原备份操作

  1. 查看备份资源,确认还原顺序

image.png

  1. 还原kube-system数据

image.png 查看pod,还原情况
image.png

  1. 还原不会创建存储对象,需手动创建

image.png
查看状态
image.png

  1. 还原污点

image.png

  1. 还原kubesphere-system数据

image.png

  1. 还原kubesphere-controls数据

image.png

  1. 还原kubesphere-monitoring命名空间数据

image.png

  1. 还原test空间数据

image.png

  1. 查看还原状态

image.png

  1. 登录ks验证还原情况

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

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

相关文章

TON 入门之旅:从 0 到 1 探索 TON 生态钱包开发路径

TON 区块链被设计为分布式超级计算机或“超级服务器&#xff08;superserver&#xff09;”&#xff0c;旨在提供各种产品和服务&#xff0c;以促进去中心化的发展。顺利从 TON 生态入门区块链开发世界需要理解哪些智能合约语言&#xff0c;掌握哪些应用搭建技巧&#xff1f;第…

Apache Flink连载(二十):Flink On Yarn运行 - Yarn Per-Job模式(弃用)

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录 1. 任务提交命令 2. 任务…

DM、Oracle、GaussDB、Kingbase8(人大金仓数据库)和HIVE给列增加注释

DM数据库给列增加注释 1、创建表 CREATE TABLE test222 ( id int NOT NULL PRIMARY KEY, name varchar(1000) DEFAULT NULL, email varchar(1000) DEFAULT NULL, phone varchar(1000) DEFAULT NULL ) 2、给列添加注释 comment on column TEST222.NAME is 这是一个列注释; 例如…

WPF+Halcon 培训项目实战(7):目标匹配助手

前言 为了更好地去学习WPFHalcon&#xff0c;我决定去报个班学一下。原因无非是想换个工作。相关的教学视频来源于下方的Up主的提供的教程。这里只做笔记分享&#xff0c;想要源码或者教学视频可以和他联系一下。 相关链接 微软系列技术教程 WPF 年度公益课程 Halcon开发 CSD…

HarmonyOS4.0系统性深入开发08服务卡片架构

服务卡片概述 服务卡片&#xff08;以下简称“卡片”&#xff09;是一种界面展示形式&#xff0c;可以将应用的重要信息或操作前置到卡片&#xff0c;以达到服务直达、减少体验层级的目的。卡片常用于嵌入到其他应用&#xff08;当前卡片使用方只支持系统应用&#xff0c;如桌…

封装uniapp签字板

新开发的业务涉及到签字功能&#xff0c;由于是动态的表单&#xff0c;无法确定它会出现在哪里&#xff0c;不得已封装模块。 其中涉及到一个难点就是this的指向性问题&#xff0c; 第二个是微信小程序写法&#xff0c; 我这个写法里用了u-view的写法&#xff0c;可以自己修改组…

java中如何使用elasticsearch—RestClient操作文档(CRUD)

目录 一、案例分析 二、Java代码中操作文档 2.1 初始化JavaRestClient 2.2 添加数据到索引库 2.3 根据id查询数据 2.4 根据id修改数据 2.4 删除操作 三、java代码对文档进行操作的基本步骤 一、案例分析 去数据库查询酒店数据&#xff0c;导入到hotel索引库&#xff0…

最新Jasmine博客模板:简洁美观的自适应Typecho主题

Jasmine是一个专为博客类网站设计的Typecho主题。它以简洁为基础&#xff0c;力求展现出精致而美观的风格。主题采用了响应式设计&#xff0c;即使在移动设备上也能提供良好的使用体验。此外&#xff0c;主题还进行了针对性的优化&#xff0c;包括SEO、夜间模式和代码高亮等方面…

楼宇对讲门铃选型分析

目前很多的高层住宅都使用了对讲门铃了&#xff0c;在频繁使用中&#xff0c;门铃会出现的越来越多种类&#xff0c;下面我就简单的介绍会有用到的几款芯片. 语音通话芯片&#xff1a;D34018,D34118,D5020,D31101; D34018 单片电话机通话电路&#xff0c;合并了必 需的放大器…

【23.12.29期--Redis缓存篇】谈一谈Redis的集群模式

谈一谈Redis的集群模式 ✔️ 谈一谈Redis的集群模式✔️主从模式✔️ 特点✔️Redis主从模式Demo ✔️哨兵模式✔️Redis哨兵模式Demo✔️特点 ✔️Cluster模式✔️Redis Cluster模式Demo✔️特点 ✔️ 谈一谈Redis的集群模式 Redis有三种主要的集群模式&#xff0c;用于在分布…

Unity Meta Quest 一体机开发(十二):【手势追踪】Poke 交互 - 用手指点击由 3D 物体制作的 UI 按钮

文章目录 &#x1f4d5;教程说明&#x1f4d5;给玩家配置 HandPokeInteractor&#x1f4d5;用 3D 物体制作可以被点击的 UI 按钮⭐搭建物体层级⭐给物体添加脚本⭐为脚本变量赋值 &#x1f4d5;模仿官方样例按钮的样式&#x1f4d5;在按钮上添加文字&#x1f4d5;修改按钮图片 …

面试题:说一下Spring 中的 @Cacheable 缓存注解?

文章目录 1 什么是缓存2 本地缓存和集中式缓存3 本地缓存的优点4 Spring对于缓存的支持4.1 spring支持的CacheManager4.2 GuavaCache4.3 引入依赖4.4 创建配置类4.5 缓存注解4.6 Cacheable的用法 5 Cacheable失效的原因 1 什么是缓存 第一个问题&#xff0c;首先要搞明白什么是…

6130 树的最长路

思路&#xff1a;树的最长路问题可以通过两次 DFS 求解&#xff0c;具体思路如下&#xff1a; 1.第一次 DFS 求树的直径 以任意一个点为起点进行深度优先遍历&#xff08;DFS&#xff09;&#xff0c;找到与该点距离最远的点 u 。 以 u 为起点进行 DFS &#xff0c;找到与 u 距…

MySQL 执行过程

MySQL 的执行流程也确实是一个复杂的过程&#xff0c;它涉及多个组件的协同工作&#xff0c;故而在面试或者工作的过程中很容易陷入迷惑和误区。 MySQL 执行过程 本篇将以 MySQL 常见的 InnoDB 存储引擎为例&#xff0c;为大家详细介绍 SQL 语句的执行流程。从连接器开始&…

uniapp门店收银,点击右边商品,商品会进入左边的购物车,并且,当扫码枪扫描商品条形码,商品也会累计进入购物车

效果&#xff1a; 代码&#xff1a; <template><view class"container"><view class"top" style"height: 10%; margin-bottom: 20rpx; box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.2);"><view class"box" style&q…

QML 怎么调用 C++ 中的内容?

以下内容为本人的学习笔记&#xff0c;如需要转载&#xff0c;请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/z_JlmNe6cYldNf11Oad_JQ 先说明一下测试环境 编译器&#xff1a;vs2017x64 开发环境&#xff1a;Qt5.12 这里主要是总结一下&#xff0c;怎么在…

【教学类-43-03】20231229 N宫格数独3.0(n=1、2、3、4、6、8、9) (ChatGPT AI对话大师生成 回溯算法)

作品展示&#xff1a; 背景需求&#xff1a; 大4班20号说&#xff1a;我不会做这种&#xff08;九宫格&#xff09;&#xff0c;我做的是小格子的&#xff0c; 他把手工纸翻过来&#xff0c;在反面自己画了矩阵格子。向我展示&#xff1a;“我会做这种&#xff01;” 原来他会…

MYSQL 深入探索系列六 SQL执行计划

概述 好久不见了&#xff0c;近期一直在忙项目的事&#xff0c;才有时间写博客&#xff0c;近期频繁出现sql问题&#xff0c;今天正好不忙咱们看看千万级别的表到底该如何优化sql。 案例 近期有个小伙伴生产环境收到了告警&#xff0c;有个6千万的日志表&#xff0c;查询耗时大…

YOLO训练results.csv文件可视化(原模型与改进模型对比可视化)

一、单独一个文件可视化&#xff08;源码对应utils文件夹下的plots.py文件的plot_results类&#xff09; from pathlib import Path import matplotlib.pyplot as plt import pandas as pd def plot_results(fileruns/train/exp9/results.csv, dir):# Plot training results.c…

java 企业工程管理系统软件源码+Spring Cloud + Spring Boot +二次开发+ 可定制化

工程项目管理软件是现代项目管理中不可或缺的工具&#xff0c;它能够帮助项目团队更高效地组织和协调工作。本文将介绍一款功能强大的工程项目管理软件&#xff0c;该软件采用先进的Vue、Uniapp、Layui等技术框架&#xff0c;涵盖了项目策划决策、规划设计、施工建设到竣工交付…