当前位置: 首页 > news >正文

【K8s】整体认识K8s之监控与升级/ETCD的备份和恢复/kustomization/CRD

metrics-server

先说一下metrics-server,这是一个聚合器,专门用来显示集群的资源使用情况,主要是内存和cpu。

安装   metrics-server

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.7.0/components.yaml

部署好以后,执行kubectl top命令就会返回结果

# kubectl top nodes

# kubectl pod -A

K8s中常见的维护操作

查看pod详情

# kubectl describe pod frontend

查看pod日志

# kubectl logs frontend

查看pod资源用量

# kubectl top pod frontend

查看节点资源用量

# kubectl top nodes

禁止pod调度

# kubectl cordon host1

驱逐现有pod

# kubectl drain master --ignore-daemonsets

升级K8s流程

1、apt list  确定升级到哪个版本

# apt list kubeadm -a

2、禁止master节点接受新的调度

# kubectl cordon cka-master

# kubectl get nodes   #master节点应该显示schedulingdisabled

3、驱逐master节点上现有任务

# kubectl drain cka-master --delete-emptydir-data --ignore-daemonset

4、安装目标的kubeadm

# apt-mark unload kubeadm

# apt-get update

# apt install kubeadm=1.30.3-1.1 -y

# apt-mark hold kubeadm

# kubeadm version

5、验证升级计划

# kubeadm upgrade plan

6、执行升级

# apt-mark unhold kubeadm

# kubeadm upgrade apply v1.30.3 --etcd-upgrade=false

7、升级kubelet、kubectl

# apt-mark unhold kubelet kubectl

# apt install kubelet=1.30.3-1.1 kubectl=1.30.3-1.1 -y

8、恢复调度功能

# apt-mark hold kubelet kubeadm kubectl

# systemctl daemon-reload

# systemctl restart kubelet.service

# kubectl uncordon cka-master

# kubectl get nodes

9、验证集群状态和版本

ETCD的备份和恢复过程

Etcd是一个键值存储数据库,用来存储K8s集群数据。备份过程:申明etcd api的版本;完成备份;验证备份有效性。恢复过程:停止kubelet服务;恢复etcd;启动kubelet服务;查询数据库健康状态。

备份

先安装etcd客户端(安装etcdctl命令行工具,手动安装才能执行后续的备份指令)并抓取快照进行备份(生产中应定期执行该操作)

# apt install etcd-client -y

# ETCDCTL_API=3 etcdctl \

--endpoints=https://127.0.0.1:2379 \

--cacert=/etc/kubernetes/pki/etcd/ca.crt \

--cert=/etc/kubernetes/pki/etcd/server.crt \

--key=/etc/kubernetes/pki/etcd/server.key \

snapshot save etcdbackupfile.db

# ll etcdbackupfile.db

恢复

先停止服务

# mv /etc/kubernetes/manifects /etc/kubernetes/manifects.bak

删除现有etcd并通过快照恢复数据

# mv /var/lib/etcd /var/lib/etcd.bak

# ETCDCTL_API=3 etcdctl \

--endpoints=https://127.0.0.1:2379 \

--cacert=/etc/kubernetes/pki/etcd/ca.crt \

--cert=/etc/kubernetes/pki/etcd/server.crt \

--key=/etc/kubernetes/pki/etcd/server.key \

--data-dir /var/lib/etcd \

snapshot restore etcdbackupfile.db

恢复服务并验证

# mv /etc/kubernetes/manifests.bak /etc/kubernetes/manifests

# systemctl restart kubelet.service

# kubectl get node

检查etcd是否健康

ETCDCTL_API=3 etcdctl --endpoints=https://192.168.30.130:2379 \

--cacert=/etc/kubernetes/pki/etcd/ca.crt \

--cert=/etc/kubernetes/pki/etcd/server.crt \

--key=/etc/kubernetes/pki/etcd/server.key endpoint health

命令详解参看

【K8s】ETCD备份和恢复的过程-CSDN博客

Kustomization

Kustomize是k8s的原生配置管理工具,它的作用就是对yaml配置文件进行自定义和管理,它解决了在不同环境中管理大量相似,但是又有差别的yaml文件的难题。他的工作方式就是采用base+ overlay模式,首先定义一个base,包含了1套通用的,在所有环境中都共享的yaml文件,再创建一个overlay针对特定的生产环境,只定义与base配置中不同的部分。这些不同点被称为补丁(patch),例如增加副本数量,更改镜像标签,修改config map中的配置数据。第三步就是使用这个Kustomization.yaml文件。这个文件,会告诉Kustomize基础配置在哪里,需要应用哪些补丁或者修改。Kustomize会动态的,将base和overlay合并生成最终的yaml配置,并应用到集群中。

CRD意义

 custom resource definition自定义资源定义,它就像一个新的模板,告诉k8s api有一种新的资源类型,它是元数据,定义了新资源的结构,但本身不做任何事情。CR自定义资源是根据CR户这个模板创建的一个具体的实例,它是数据,是用句声明的期望状态,还通常是一个yaml文件,由用户提交给k8s。它的意义首先k8s只能管理它内置的对象,比如pod service但是有了CRD,k8s就可以管理任何东西,比如数据库、中间件,它变成了一个云原生的操作系统,可以使用统一的k8s api来管理整个数据中心的所有资源。第二它实现了声明式的api,你只要提交一个yaml文件,就可以得到一个,你想要的资源。第三只有CRD或者CR是不够的,它们只是静态的声明,还需要operator去控制它operator=crd+controlle(控制器)r,控制器监听特定类型的CR的增删改查,当用户创建一CR时,控制器会解决这个yaml文件,然后通过一系列的操作驱动整个系统达到期望状态。最后,构建了丰富的生态系统,几乎所有的顶级的云原生项目(如 IstioArgo CD 等),这些复杂系统的安装和管理,只需要kubectl apply -f一个yaml文件即可。

CRD应用场景

CRD 的典型应用场景主要有:

1. 数据库管理:如 MySQLRedis 等数据库实例的声明式管理。

2. 应用部署:自定义应用部署资源(如 Application CRD)。

3. 监控告警:Prometheus ServiceMonitorAlertRule 等。

4. 网络策略:自定义网络配置和安全策略。

5. 备份恢复:定时备份任务的声明式定义。

6. CI/CD 流水线:自定义 Pipeline 资源。

CRD的创建和使用过程

1、创建一个yaml文件来定义CRD

2、Kubectl apply -f myapp-crd.yaml  创建CRD

Kubectl api-resources | grep -i CustomResourceDefinition 可以查看创建的CRD资源

创建一个yaml文件来定义CR

3、Kubectl apply -f myapp-sample.yaml  创建CR

4、创建控制器

5、部署控制器pod

6、使用CR

http://www.dtcms.com/a/361037.html

相关文章:

  • MySQL DBA请注意 不要被Sleep会话蒙蔽了双眼
  • Python云原生与Serverless架构:2025年的开发新范式
  • 005 从会议全貌到模型本质:会议介绍与语言模型概述的深度融合
  • DevOps篇之通过GitLab CI 流水线实现k8s集群中helm应用发布
  • 深入解析 PyTorch 核心类:从张量到深度学习模型
  • 秋招笔记-8.29
  • 20.29 QLoRA适配器实战:24GB显卡轻松微调650亿参数大模型
  • 从理论到实践,深入剖析数据库水平拆分的安全平滑落地
  • 6 种可行的方法:小米手机备份到电脑并恢复
  • QT中的HTTP
  • 贝叶斯向量自回归模型 (BVAR)
  • 佐糖PicWish-AI驱动的在线图片编辑神器
  • 齿轮里的 “双胞胎”:分度圆与节圆
  • 3-6〔OSCP ◈ 研记〕❘ WEB应用攻击▸WEB应用枚举B
  • Coolutils Total PDF Converter中文版:多功能PDF文件转换器
  • DL00212-基于YOLOv11的脑卒中目标检测含完整数据集
  • 专题:2025全球新能源汽车供应链核心领域研究报告|附300+份报告PDF、数据仪表盘汇总下载
  • Ubuntu 服务器实战:Docker 部署 Nextcloud+ZeroTier,打造可远程访问的个人云
  • 开源模型应用落地-模型上下文协议(MCP)-为AI智能体打造的“万能转接头”-“mcp-use”(十二)
  • 2025年AI智能体开源技术栈全面解析:从基础框架到垂直应用
  • CSS 选择器完全指南:从基础到高级的全面解析
  • lesson51:CSS全攻略:从基础样式到前沿特性的实战指南
  • 面试常考css:三列布局实现方式
  • 前端必看:为什么同一段 CSS 在不同浏览器显示不一样?附解决方案和实战代码
  • LangChain开源LLM集成:从本地部署到自定义生成的低成本落地方案
  • 开源 React 脚手架推荐
  • LeetCode每日一题,2025-09-01
  • 视频提取文字用什么软件好?分享6款免费的视频转文字软件!
  • vizard-将长视频变成适合社交的短视频AI工具
  • (3dnr)多帧视频图像去噪 (二)