k8s-pvc/pv扩容记录

背景

一次聊天过程中,对方提及pvc的扩容,虽然有注意过 storageclass 有个AllowVolumeExpansion的配置(有些csi插件是不支持该配置的,比如local-volume-provisoner),但是没有实际用过,所以还是心里没底,所以抽时间 做了下扩容的操作。这里是基于 ceph-csi 插件,在rbd的使用方式下做的 扩容

原理

需要csi 插件的支持,更改pod的 pvc 申明的存储空间需求,csi插件便会自动对原来的rbd卷 做扩容操作

步骤

##检查当前storage class 支持的特性

wsg@k8snode1v18:~/k8s_deploy/ceph-csi/examples/rbd$ kubectl describe sc csi-rbd-sc

AllowVolumeExpansion:  True
MountOptions:discard
ReclaimPolicy:      Delete
VolumeBindingMode:  Immediate
Events:             <none>

可以看到,AllowVolumeExpansion 为true

创建test pod 并且 申明使用

测试pod 定义如下:

wsg@k8snode1v18:~/k8s_deploy/ceph-csi/examples/rbd$ cat pod-test-pv-expansion.yaml 
---
apiVersion: v1
kind: Pod
metadata:name: pod-test-pvc-expansion
spec:containers:- name: nginx-serverimage: nginxvolumeMounts:- name: mypvcmountPath: /var/lib/www/htmlvolumes:- name: mypvcpersistentVolumeClaim:claimName: rbd-pvcreadOnly: false---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: rbd-pvc
spec:accessModes:- ReadWriteOnceresources:requests:storage: 1GistorageClassName: csi-rbd-sc

进入测试pod 检查 volume 挂载情况

wsg@k8snode1v18:~/k8s_deploy/ceph-csi/examples/rbd$ kubectl exec -it pod-test-pvc-expansion – /bin/bash

/dev/rbd1 on /var/lib/www/html type ext4 (rw,relatime,stripe=16)

可以看到 声明的 1G rbd 磁盘已经 自动 mount 上了,并且采用 ext4 文件系统

写入测试数据

root@pod-test-pvc-expansion:/var/lib/www/html/wsg-inpod# md5sum before-expansion.txt >md5    
root@pod-test-pvc-expansion:/var/lib/www/html/wsg-inpod# md5sum before-expansion.txt 
0b4cfe43fc1f774cc0ed294515f626e1  before-expansion.txt
root@pod-test-pvc-expansion:/var/lib/www/html/wsg-inpod# cat md5 
0b4cfe43fc1f774cc0ed294515f626e1  before-expansion.txtroot@pod-test-pvc-expansion:/var/lib/www/html# md5sum test.txt |tee md5
798f8e998aa4c359f7ef66549866fb01  test.txt
root@pod-test-pvc-expansion:/var/lib/www/html# cat md5 
798f8e998aa4c359f7ef66549866fb01  test.txt

执行扩容(调整 pvc 声明的大小)

spec:accessModes:- ReadWriteOnceresources:requests:storage: 10GistorageClassName: csi-rbd-scvolumeMode: FilesystemvolumeName: pvc-abfad8c1-9d71-45fd-834c-60b8109c6b75wsg@k8snode1v18:~$ kubectl edit pvc rbd-pvc
persistentvolumeclaim/rbd-pvc edited
wsg@k8snode1v18:~$ 

检查 pod 状态

##扩容中看到 pod 没有重启的记录(扩容前 kubectl exec的 会话 也是一直保持正常,没有中断)
pod-test-pvc-expansion                                         1/1     Running   0          25m##进一步检查 pod 的event,发现已经有 成功扩容的记录
wsg@k8snode1v18:~$ kubectl describe  pod pod-test-pvc-expansion
Name:         pod-test-pvc-expansion
Namespace:    default
Priority:     0
Node:         k8snode1v18/172.17.73.53
Start Time:   Sat, 27 Nov 2021 14:05:46 +0800
Labels:       <none>
Annotations:  cni.projectcalico.org/podIP: 10.106.176.31/32
Status:       Running
IP:           10.106.176.31
IPs:IP:  10.106.176.31
Containers:nginx-server:Container ID:   docker://ce3e35282b5ff3dcd62848ab69efb751f592510e67aed9ad3183eaf817f54f21Image:          nginxImage ID:       docker-pullable://nginx@sha256:097c3a0913d7e3a5b01b6c685a60c03632fc7a2b50bc8e35bcaa3691d788226ePort:           <none>Host Port:      <none>State:          RunningStarted:      Sat, 27 Nov 2021 14:06:35 +0800Ready:          TrueRestart Count:  0Environment:    <none>Mounts:/var/lib/www/html from mypvc (rw)/var/run/secrets/kubernetes.io/serviceaccount from default-token-gc5x4 (ro)
Conditions:Type              StatusInitialized       True Ready             True ContainersReady   True PodScheduled      True 
Volumes:mypvc:Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)ClaimName:  rbd-pvcReadOnly:   falsedefault-token-gc5x4:Type:        Secret (a volume populated by a Secret)SecretName:  default-token-gc5x4Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300snode.kubernetes.io/unreachable:NoExecute for 300s
Events:Type     Reason                      Age        From                     Message----     ------                      ----       ----                     -------Warning  FailedScheduling            <unknown>  default-scheduler        persistentvolumeclaim "rbd-pvc" not foundWarning  FailedScheduling            <unknown>  default-scheduler        persistentvolumeclaim "rbd-pvc" not foundWarning  FailedScheduling            <unknown>  default-scheduler        running "VolumeBinding" filter plugin for pod "pod-test-pvc-expansion": pod has unbound immediate PersistentVolumeClaimsNormal   Scheduled                   <unknown>  default-scheduler        Successfully assigned default/pod-test-pvc-expansion to k8snode1v18Normal   SuccessfulAttachVolume      17m        attachdetach-controller  AttachVolume.Attach succeeded for volume "pvc-abfad8c1-9d71-45fd-834c-60b8109c6b75"Normal   Pulling                     17m        kubelet, k8snode1v18     Pulling image "nginx"Normal   Pulled                      16m        kubelet, k8snode1v18     Successfully pulled image "nginx"Normal   Created                     16m        kubelet, k8snode1v18     Created container nginx-serverNormal   Started                     16m        kubelet, k8snode1v18     Started container nginx-serverNormal   FileSystemResizeSuccessful  48s        kubelet, k8snode1v18     MountVolume.NodeExpandVolume succeeded for volume "pvc-abfad8c1-9d71-45fd-834c-60b8109c6b75"
wsg@k8snode1v18:~$ 

扩容前后 pvc 的对比

rbd-pvc                                                                                                  Bound    pvc-abfad8c1-9d71-45fd-834c-60b8109c6b75   1Gi        RWO            csi-rbd-sc          13m//扩容后
rbd-pvc                                                                                                  Bound    pvc-abfad8c1-9d71-45fd-834c-60b8109c6b75   10Gi       RWO            csi-rbd-sc          19m
wsg@k8snode1v18:~$

可以看到 容量的变化,并且 绑定的 pv编号 也是没有变化的,说明是同一个pv

检查 pod 中的数据

root@pod-test-pvc-expansion:/var/lib/www/html/wsg-inpod# md5sum before-expansion.txt 
0b4cfe43fc1f774cc0ed294515f626e1  before-expansion.txt
root@pod-test-pvc-expansion:/var/lib/www/html/wsg-inpod# cat md5 
0b4cfe43fc1f774cc0ed294515f626e1  before-expansion.txt
root@pod-test-pvc-expansion:/var/lib/www/html/wsg-inpod# 

知识点

pod 可以看到 host mount namespce

root@pod-test-pvc-expansion:/# lsblk 
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0    7:0    0   2.5M  1 loop 
loop1    7:1    0  99.4M  1 loop 
loop2    7:2    0  61.8M  1 loop 
loop3    7:3    0   2.5M  1 loop 
loop4    7:4    0  61.8M  1 loop 
loop5    7:5    0 242.3M  1 loop 
loop6    7:6    0   548K  1 loop 
loop7    7:7    0     4K  1 loop 
loop8    7:8    0   704K  1 loop 
loop10   7:10   0   704K  1 loop 
loop11   7:11   0  65.1M  1 loop 
loop12   7:12   0 140.7M  1 loop 
loop13   7:13   0   548K  1 loop 
loop14   7:14   0   2.5M  1 loop 
loop15   7:15   0 247.9M  1 loop 
loop16   7:16   0   219M  1 loop 
loop17   7:17   0   2.5M  1 loop 
loop18   7:18   0  65.2M  1 loop 
loop19   7:19   0   219M  1 loop 
loop20   7:20   0  55.5M  1 loop 
loop21   7:21   0 140.7M  1 loop 
loop22   7:22   0  99.4M  1 loop 
loop23   7:23   0  55.5M  1 loop 
sda      8:0    0   500G  0 disk 
`-sda1   8:1    0   500G  0 part /etc/hosts
rbd0   252:0    0    60G  0 disk 
rbd1   252:16   0     1G  0 disk /var/lib/www/html
root@pod-test-pvc-expansion:/# 

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

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

相关文章

数据分析实战:城市房价分析

流程图&#xff1a; 1.读数据表 首先&#xff0c;读取数据集。 CRIMZNINDUSCHASNOXRMAGEDISRADTAXPTRATIOBLSTATtarget0.00632182.3100.5386.57565.24.09129615.3396.94.98240.0273107.0700.4696.42178.94.9671224217.8396.99.1421.60.0272907.0700.4697.18561.14.9671224217…

【MySQL数据库专项 一】一个例子讲清楚数据库三范式

好的&#xff0c;让我们以学校数据库中的一个表为例来说明第一范式&#xff08;1NF&#xff09;、第二范式&#xff08;2NF&#xff09;和第三范式&#xff08;3NF&#xff09;的概念。 什么是数据库三范式 数据库的范式&#xff08;Normalization&#xff09;是一组关于数据…

UI -- Vue2

Vue2 模板 Vue2 UI package.json同级components/slButton/element.vue <template><div class"d1"><span>测试123</span></div> </template><script>export default {name:"sl-button",data() {return {};}} …

大英第四册课后翻译答案

目录 Unit 1Unit 2Unit 3Unit 4小结&#xff1a; Unit 1 中庸思想&#xff08;Doctrine of the Mean&#xff09;是儒家思想的核心内容。孔子所谓的“中”不是指“折中”&#xff0c;而是指在认识和处理客观事物时的一种“适度”和“恰如其分”的方法。孔子主张不仅要把这种思…

街机模拟游戏逆向工程(HACKROM)教程:[14]68K汇编-标志寄存器

在M68K中&#xff0c;有许多条件分支指令&#xff0c;和jmp指令一样也会修改PC达到程序跳转或分支的目的&#xff0c;不过这些会根据一些情况或状态来选择是否跳转。而在M68K中&#xff0c;有一个特别的寄存器来标记这些情况。 CCR(状态标志寄存器) CCR寄存器是用来保存一些对…

微前端-无界wujie

无界微前端方案基于 webcomponent 容器 iframe 沙箱&#xff0c;能够完善的解决适配成本、样式隔离、运行性能、页面白屏、子应用通信、子应用保活、多应用激活、vite 框架支持、应用共享等用户的核心诉求。 主项目安装无界 vue2项目&#xff1a;npm i wujie-vue2 -S vue3项目…

HttpServletRequest getHeader、getHeaders、getIntHeader、getDateHeader区别

request.getHeader(“name”)&#xff1a; 获取请求头中指定名称的单个值&#xff0c;多个值时通常是返回最先出现的那个值 String contentLength request.getHeader("Content-Length"); request.getHeaders(“name”)&#xff1a; 获取请求头中所有具有指定名称…

77. 组合 - 力扣(LeetCode)

题目描述 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 输入示例 n 4, k 2输出示例 [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4], ]解题思路 我们使用回溯、深度优先遍历的思想&#xff0c;我们使用一个栈 path…

Kotlin的数据类

引言 我们在做项目中涉及到各种数据类的处理&#xff0c;很多很杂乱。难免一个人的知识点有盲点&#xff0c;所以想着做个整理。 定义 在平时的使用中&#xff0c;我们会用到一些类来保持一些数据或状态&#xff0c;我们习惯上成为bean或者entity&#xff0c;也有的定义为mod…

SpringSecurity+OAuth2.0 搭建认证中心和资源服务中心

目录 1. OAuth2.0 简介 2. 代码搭建 2.1 认证中心&#xff08;8080端口&#xff09; 2.2 资源服务中心&#xff08;8081端口&#xff09; 3. 测试结果 1. OAuth2.0 简介 OAuth 2.0&#xff08;开放授权 2.0&#xff09;是一个开放标准&#xff0c;用于授权第三方应用程序…

【笔记】Helm-3 主题-13 Helm v2迁移到 v3

Helm v2 迁移到 v3 该指南介绍如何将Helm v2迁移到v3.Helm v2需要被安装且在一个或多个集群中管理版本。 Helm 3变化概述 Helm 2 to 3完整的变化列表在FAQ部分。以下是用户在迁移之前应该要注意的一些改变的概述&#xff1a; Helm | Docs 1.移除了Tiller&#xff1a; 1、用…

Leetcode的AC指南 —— 栈与队列:225.用队列实现栈

摘要&#xff1a; **Leetcode的AC指南 —— 栈与队列&#xff1a;225.用队列实现栈 **。题目介绍&#xff1a;请你仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&#xff0c;并支持普通栈的全部四种操作&#xff08;push、top、pop 和 empty&#xff09;。 …

简单了解AJAX

文章目录 1、什么是AJAX2、AJAX快速入门3、Axios异步框架3.1、Axios 快速入门3.2、Axios 请求方式别名 1、什么是AJAX 概念&#xff1a;AJAX(Asynchronous JavaScript And XML)&#xff1a;异步的 JavaScript 和 XML AJAX作用&#xff1a; 与服务器进行数据交换&#xff1a;通…

图卷积GCN实战基于网络结构图的网络表示学习实战

下面的是数据&#xff1a; from,to,cost 73,5,352.6 5,154,347.2 154,263,392.9 263,56,440.8 56,96,374.6 96,42,378.1 42,58,364.6 58,95,476.8 95,72,480.1 72,271,419.5 271,68,251.1 134,107,344.0 107,130,862.1 130,129,482.5 227,167,1425.7 167,298,415.7 298,209,42…

GPT属于AI,是LLM的一种实现

GPT&#xff08;Generative Pre-trained Transformer&#xff09;作为一种创新的语言模型&#xff0c;既属于人工智能&#xff08;AI&#xff09;的一部分&#xff0c;也是大规模语言模型&#xff08;LLM&#xff09;的一种实现。本文将探讨GPT在AI和LLM领域的重要性和影响。 …

kafka入门(十):副本数据同步

副本 副本&#xff08;Replica&#xff09;&#xff0c;指的是分布式系统对数据和服务提供的一种冗余方式。 Kafka通过多副本机制实现故障自动转移&#xff0c;在Kafka集群中某个broker节点失效的情况下仍然保证服务可用。 失效副本 在ISR集合之外&#xff0c;也就是处于同…

js监听返回当前页面的方法

要监听用户返回当前页面的操作&#xff0c;可以使用JavaScript中的window.onpopstate事件。这个事件会在浏览器的历史记录发生变化时被触发&#xff0c;其中包括用户点击了浏览器的后退按钮或者通过编程方式调用了history.back()方法。 以下是一个简单的示例代码&#xff0c;演…

PG DBA培训25:PostgreSQL性能分析与优化调整

本课程由风哥发布的基于PostgreSQL数据库的系列课程&#xff0c;本课程属于PostgreSQL Performance analysis and adjustment&#xff0c;学完本课程可以掌握PostgreSQL优化概述与优化方案&#xff0c;PostgreSQL操作系统层优化调整与建议&#xff0c;PostgreSQL存储系统层优化…

Unity3D学习之Unity基础——3D数学

文章目录 1. 前言2 Mathf和Math基础2.1 一般用于只计算一次的函数2.1.1 PI Π PI2.1.2 取绝对值 Abs2.1.3 向上取整 CeilToInt2.1.4 向下取整 FloorToInt2.1.5 钳制函数 Clamp2.1.6 获取最大值 Max2.1.7 获取最小值 Min2.1.8 一个数的n次幂 Pow2.1.9 四舍五入 RoundToInt2.1.10…

腾讯云建站教程,三种方式,随意选

腾讯云怎么建站&#xff1f;使用腾讯云搭建网站有三种方式&#xff0c;可以直接购买腾讯云建站服务如网站建设和CloudPages&#xff0c;也可以购买腾讯云服务器&#xff0c;然后使用开源程序搭建网站。腾讯云百科txybk.com分享腾讯云建站教程&#xff1a; 1、网站建设&#xf…