Kubernetes v1.26 配置默认存储 StorageClass

2023-11-14

Kubernetes v1.25 引入了一个 Alpha 特性来更改默认 StorageClass 被分配到 PersistentVolumeClaim (PVC) 的方式。 启用此特性后,你不再需要先创建默认 StorageClass,再创建 PVC 来分配类。 此外,任何未分配 StorageClass 的 PVC 都可以在后续被更新。此特性在 Kubernetes v1.26 中已进阶至 Beta。

更改默认 StorageClass

启用这个 Alpha 特性后,管理员想要更改默认 StorageClass 时会有两个选项:

  • 在移除与 PVC 关联的旧 StorageClass 之前,创建一个新的 StorageClass 作为默认值。 这将导致在短时间内出现两个默认值。此时,如果用户要创建一个 PersistentVolumeClaim, 并将 storageClassName 设置为 null(指代默认 StorageClass), 则最新的默认 StorageClass 将被选中并指定给这个 PVC。
  • 先移除旧的默认值再创建一个新的默认 StorageClass。这将导致短时间内没有默认值。 接下来如果用户创建一个 PersistentVolumeClaim,并将 storageClassName 设置为 null (指代默认 StorageClass),则 PVC 将永远处于 Pending 状态。 一旦默认 StorageClass 可用,用户就不得不通过删除并重新创建 PVC 来修复这个问题。

如何启用

需要在kube-controller-managerkube-apiserver 中使用 --feature-gates 配置启用

  1. --feature-gates="...,RetroactiveDefaultStorageClass=true"

演示

创建一个PvC文件

  1. apiVersion: v1
  2. kind: PersistentVolumeClaim
  3. metadata:
  4.  name: pvc-1
  5. spec:
  6.  accessModes:
  7.  - ReadWriteOnce
  8.  resources:
  9.    requests:
  10.      storage: 1Gi

在没有默认StorageClass存储时,PVC文件为Pending状态

  1. $kubectl get pvc
  2. NAME      STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
  3. pvc-1     Pending

我们需要将本地有的StorageClass 设置为默认存储

  1. #查看storageClass
  2. [root@k8s-master-01 ~]# kubectl get sc
  3. NAME              PROVISIONER           RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
  4. csi-cephfs-sc     cephfs.csi.ceph.com   Delete          Immediate              true                   2d23h
  5. csi-rbd-sc        rbd.csi.ceph.com      Delete          Immediate              true                   2d23h
  6. local    openebs.io/local      Delete          WaitForFirstConsumer   false                  8d
  7. #变更为默认存储
  8. kubectl patch local -p '{"metadata":{"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
  9. #local为你的storageclass名称

实际上就是sc添加了下面的一行

  1.    storageclass.kubernetes.io/is-default-class: "true"

确认 PersistentVolumeClaims 现在已被正确制备,并且已使用新的默认 StorageClass

  1. $ kubectl get pvc
  2. NAME      STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS      AGE
  3. pvc-1     Bound    pvc-06a964ca-f997-4780-8627-b5c3bf5a87d8   1Gi        RWO            local   87m

查看默认StorageClass已经被修改

  1. $ kubectl get storageclass
  2. NAME             PROVISIONER               AGE
  3. local         kubernetes.io/gce-pd      1d
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kubernetes v1.26 配置默认存储 StorageClass 的相关文章

  • Spring控制器是线程安全的吗

    我遇到了这个控制器示例 想知道它是否是线程安全的 我特别想知道 gson 实例变量 import org springframework stereotype Controller import org springframework we
  • 用 @DataJpaTest 注释的测试不是用 @Autowired 注释的自动装配字段

    我有一个 Spring Boot 应用程序 其中包含 Spring Data Jpa 存储库 我需要围绕这个存储库运行单元 或组件 测试 我对 Spring Data Jpa 没有太多经验 这是我的测试 这很简单 我无法让它通过 impor
  • 如何打印整个字符串池?

    我想打印包含文字的整个字符串池String使用添加的对象intern 就在垃圾收集之前 JDK有没有隐式的方法来进行这样的操作 我们如何检查字符串池 EDIT The comment suggests that there may be a
  • java.lang.Class: 在 java 程序中初始化 log4j 属性文件时出错

    我正在尝试使用 log4j 运行独立的 java 程序 但在调试时收到以下消息 控制台上没有 log4j 相关日志 log Logger 1343 java lang Class ERROR in 18b4aac2 有人可以建议这里出了什么
  • 将链接对象转换为流或集合

    我想迭代堆栈跟踪 堆栈跟踪由可抛出对象组成 其 getCause 返回下一个可抛出对象 最后一次调用 getCause 返回 null 示例 a gt b gt null 我尝试使用 Stream iterable 这会导致 NullPoi
  • 由于连接超时,无法通过 ImageIO.read(url) 获取图像

    下面的代码似乎总是失败 URL url new URL http userserve ak last fm serve 126 8636005 jpg Image img ImageIO read url System out printl
  • 有没有好的方法来解析用户代理字符串?

    我有一个Java接收模块User Agent来自最终用户浏览器的字符串的行为需要略有不同 具体取决于浏览器类型 浏览器版本甚至操作系统 例如 FireFox 7 0 Win7 Safari 3 2 iOS9 我明白了User Agent由于
  • 使用 Spring 时实例化对象,用于测试与生产

    使用 Spring 时 应该使用 Spring 配置 xml 来实例化生产对象 并在测试时直接实例化对象 这样的理解是否正确 Eg MyMain java package org world hello import org springf
  • Java 泛型/类型调度问题

    考虑以下程序 import java util List import java util ArrayList public class TypeTest public static class TypeTestA extends Type
  • 方法断点可能会大大减慢调试速度

    每当向方法声明行添加断点 在 Intellij IDEA 或 Android Studio 中 时 都会出现一个弹出窗口 方法断点可能会大大减慢调试速度 为什么会这样戏剧性地减慢调试速度 是我的问题吗 将断点放在函数的第一行有什么不同 Th
  • 如何将 Spotlight for Help 插入本地化的 macOS 应用程序?

    我正在 macOS 上使用 Swing GUI 框架实现 Java 应用程序 当使用system外观和感觉以及screen菜单栏 Swing 自动插入一个搜索栏 called 聚光灯寻求帮助 https developer apple co
  • Java 变量的作用域

    我不明白为什么这段代码的输出是10 package uno public class A int x 10 A int x 12 new B public static void main String args int x 11 new
  • spring - 强制 @Autowired 字段的 cglib 代理

    我有混合堆栈 EJB 和 Spring 为了将 Spring 自动装配到 EJB 我使用SpringBeanAutowiringInterceptor 不确定这是否会影响我遇到的问题 在尝试通过以下方式自动装配 bean 时 Scope p
  • cucumber-junit-platform-engine 中的功能文件发现

    In cucumber junit我使用的库 CucumberOptions定义功能文件位置 package com mycompany cucumber import cucumber api CucumberOptions import
  • 使用 java 按电子邮件发送日历邀请

    我正在尝试使用 java 发送每封电子邮件的日历邀请 收件人收到电子邮件 但不会显示接受或拒绝的邀请 而是将该事件自动添加到他的日历中 我正在使用 ical4j jar 构建活动 邀请 private Calendar getInvite
  • 尝试在没有 GatewayIntent 的情况下访问消息内容

    我希望每当我写一条打招呼的消息时 机器人都会在控制台中响应一条消息 但它只是给我一个错误 JDA MainWS ReadThread WARN JDA Attempting to access message content without
  • Install4j:如何在安装结束时执行命令行 java -jar filename.jar

    在 Intall4j 中 在安装结束时 我只想通过执行如下命令行来初始化某些内容 java jar filename jar 我怎样才能归档这个任务install4j Thanks 将 运行可执行文件或批处理文件 操作添加到 安装屏幕 并设
  • 如何在java中使jpeg无损?

    有没有人可以告诉我如何使用编写 jpeg 文件losslessjava中的压缩 我使用下面的代码读取字节来编辑字节 WritableRaster raster image getRaster DataBufferByte buffer Da
  • 如何移动图像(动画)?

    我正在尝试在 x 轴上移动船 还没有键盘 我如何将运动 动画与boat png而不是任何其他图像 public class Mama extends Applet implements Runnable int width height i
  • java中如何找到class文件的包

    我正在编写一个使用 class 文件的 java 程序 我希望能够读取文件系统上的 class 文件 使用 InputStream 并确定它所在的包 该 class 文件可能不在一个好的包目录结构中 它可能位于某个随机位置 我怎样才能做到这

随机推荐

  • 【Docker安装Gitlab管理项目代码并整合Sonarqube分析代码质量】

    Docker安装Gitlab管理项目代码并整合Sonarqube分析代码质量 完整操作步骤 一 前言 二 准备工作 三 安装Gitlab 3 1 Docker安装最新版Gitlab 3 2 访问Gitlab登录页面 http 192 168
  • 如何使用R语言

    R 语言是一种流行的数据分析和统计计算软件 要使用 R 语言 您需要先安装 R 软件 可以在 CRAN 网站 https cran r project org 上下载并安装 R 软件 安装完成后 可以通过打开 R 终端或使用 R 编辑器来使
  • 前端页面判断手机号

    function submitHandler var phone phone val var myreg 1 3 4 5 7 8 9 0 9 9 if myreg test phone modal alertWarning 请输入正确的手机
  • 【2】测试用例设计方法-场景法

    场景法 事件触发 基本流 备选流 画流程图 覆盖每条路径 场景法也是路径覆盖的方法 也是流程分析法 优先级根据两个来判断 1 使用率 2 重要性 一条路径可能有多个用例 用等价类边界值 每个数据就是一个用例
  • 天美服务器未响应,王者荣耀服务器上热搜,无数玩家遭遇掉线烦恼,天美该怎么办?...

    原标题 王者荣耀服务器上热搜 无数玩家遭遇掉线烦恼 天美该怎么办 王者荣耀服务器上热搜 无数玩家遭遇掉线烦恼 天美该怎么办 目前国内依旧处于一个比较特殊的时期 宅在家里无法上班的游戏玩家们也还有不少 当这些玩家集中到热门时间段上游戏的时候
  • 妖怪屋 服务器维护中,《阴阳师:妖怪屋》3月3日维护更新公告

    亲爱的家主大人 为了给大家带来更好的游戏体验 服务器将于3月3日 周三 早上7 00 8 30进行停服维护 如未能按时完成 则开服时间将会顺延 维护期间将暂时无法进入服务器进行游戏 给各位带来的不便 敬请谅解 非常感谢大家的支持和理解 鞠躬
  • Docker的相关命令及自定义centos和tomcat的镜像

    1 docker命令 1 docker的安装 yum install docker 2 docker的启动 systemctl start docker 3 查看docker的所有镜像 docker images 4 运行docker的he
  • JavaFX——添加图片ImageView

    Image 用于加载图片文件ImageView 用于显示图片位置 Javafx scence image Image 目前支持BMP GIF JPEG PNG JPG图片格式 Image image new Image URL 其中 URL
  • 在Xcode中使用Git进行源码版本控制

    本文翻译自Understanding Git Source Control in Xcode 译者myShire 欢迎您加入我们的翻译小组 在应用程序开发过程中 很重要的一部分工作就是如何进行源码的版本控制 当代码出现问题时 我们就需要将代
  • 计算机网络速成课【体系结构】

    计算机网络体系结构 计算机网络概述 计算机网络 组成 从组成部分上看 一个完整的计算机网络主要由硬件 软件 协议三大部分组成 缺一不可 硬件主要指 主机 通信链路 交换设备和通信设备等 软件主要指 用户使用的各种软件 协议指 网络传输数据时
  • 【通览一百个大模型】Anthropic LLM(Anthropic)

    通览一百个大模型 Anthropic LLM Anthropic 作者 王嘉宁 本文章内容为原创 仓库链接 https github com wjn1996 LLMs NLP Algo 订阅专栏 大模型 NLP 算法 可获得博主多年积累的全
  • Office2016+math type出错 word无法加载此加载程序

    今天遇到一个非常非常非常奇葩的问题 关于网上的答案 想必大部分人都试过 但是如果你不幸看到我这篇文章 那么恭喜你 这个问题会让你无语 首先贴出问题 说明一下配置 我的电脑是64位 安装的office也是64位 微软诚不欺我 个蛋 就在我翻来
  • Redis两种客户端:lettuce和Jedis的区别

    spring boot 2的spring boot starter data redis中 默认使用的是lettuce作为redis客户端 它与jedis的主要区别如下 Jedis是同步的 不支持异步 Jedis客户端实例不是线程安全的 需
  • 【MATLAB傅里叶级数3D动画演示】

    傅里叶级数3D动画演示 编写环境 MATLAB2021b classdef Msg lt event EventData MSG 定义事件消息 event EventData子类 消息中封装有要发布的数据 Data 数据可以是任意类型 pr
  • Jmeter之接口测试流程详解

    前言 今天笔者呢 想给大家聊聊Jmeter接口测试流程详解 废话不多说直接进入正题 一 jmeter简介 Jmeter是由Apache公司开发的java开源项目 所以想要使用它必须基于java环境才可以 Jmeter采用多线程 允许通过多个
  • C#简单练习一

    namespace Demo练习 internal class Program static void Main string args 输入a b两个整数 编程求出a除以b得到的商和余数 输入 两行 只有两个整数 输出 输出只有一行 两个
  • 使用GPU训练(PyTorch demo)

    cuda 对网络模型 数据 损失函数这三种变量调用 cuda 来在GPU上进行训练 将网络模型在gpu上训练 model Model model model cuda 损失函数在gpu上训练 loss fn nn CrossEntropyL
  • PCL调错:合集

    1 error C4996 pcl visualization PointCloudColorHandler
  • QT-线程池

    在程序逻辑中经常会碰到需要处理大批量任务的情况 比如密集的网络请求 或者日志分析等等 一般会创建一个队列 用一个或者多个线程去消费这个队列 一般也要处理队列的加锁和解锁的问题 除非在设计时就能够做到专列专用 否则锁是不可避免的 而且在入队和
  • Kubernetes v1.26 配置默认存储 StorageClass

    Kubernetes v1 25 引入了一个 Alpha 特性来更改默认 StorageClass 被分配到 PersistentVolumeClaim PVC 的方式 启用此特性后 你不再需要先创建默认 StorageClass 再创建