kubernetes学习笔记(3)——存储抽象

news/2025/2/26 13:22:07

挂载

nfs是kubernetes存储层可选其中一种网络存储方式。

原生方式数据挂载

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-pv-demo
  name: nginx-pv-demo
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx-pv-demo
  template:
    metadata:
      labels:
        app: nginx-pv-demo
    spec:
      containers:
      - image: nginx
        name: nginx
        volumeMounts: # pods需要挂载
        - name: html # 挂载的名称
          mountPath: /usr/share/nginx/html #挂载的路径 
      volumes:
        - name: html #存储层所挂载的名称
          nfs:
            server: 172.31.0.4 # 存储层的ip地址
            path: /nfs/data/nginx-pv # 存储层被挂载的路径

PV和PVC

PV: PersistentVolume 持久卷
PVC:PersistentVolumecClaim,持久卷申明,申明需要使用的持久卷规格

静态供应
  1. 创建nfs的主节点
mkdir -p /nfs/data/01
mkdir -p /nfs/data/02
mkdir -p /nfs/data/03
  1. 创建PV
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv01-10m # 创建pv的名称
spec:
  capacity: #容量
    storage: 10Mi #容量为10M的pv存储空间,
  accessModes:
    - ReadWriteMany #可读可写可多节点并行
  storageClassName: nfs # 这个存储类名要与下面几个保持一致。
  nfs:
    path: /nfs/data/01
    server: 172.31.0.4
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv02-1gi
spec:
  capacity:
    storage: 1Gi  # 这个是1G,注意最后需要加一个i
  accessModes:
    - ReadWriteMany
  storageClassName: nfs
  nfs:
    path: /nfs/data/02
    server: 172.31.0.4
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv03-3gi
spec:
  capacity:
    storage: 3Gi # 这个是3G,注意最后需要加一个i
  accessModes:
    - ReadWriteMany
  storageClassName: nfs
  nfs:
    path: /nfs/data/03
    server: 172.31.0.4
  1. 创建PVC
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: nginx-pvc。 # pvc的名称
spec:
  accessModes:
    - ReadWriteMany #可读可写可并行
  resources:
    requests:
      storage: 200Mi # 容量为200M
  storageClassName: nfs #存储类名为nfs
  1. 创建pod,然后绑定相应的pvc
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-deploy-pvc
  name: nginx-deploy-pvc
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx-deploy-pvc
  template:
    metadata:
      labels:
        app: nginx-deploy-pvc
    spec:
      containers:
      - image: nginx
        name: nginx
        volumeMounts:
        - name: html
          mountPath: /usr/share/nginx/html
      volumes:
        - name: html
          persistentVolumeClaim:
            claimName: nginx-pvc  # 绑定的申明名称
动态供应

比较常见,但是等后续的学习kubersphere会学习

配置集

  1. 创建配置文件
#举例,创建一个redis的配置文件
vi redis.conf
###############写入内容:
appendonyl yes# 数据持久化
  1. 将配置文件创建成 配置集ConfigMap
kubectl create cm redis-conf --from-file = redis.conf
# 这边的cm指的就是配置集redis-conf

# 创建cm完成之后,就可以把原本的配置文件删除:
rm -rf redis.conf

对于有自带【热更新】能力的pod,只需要配置好相应的配置集信息,一旦配置集ConfigMap内部的key值修改,对应pod的配置信息也会相应修改。对于没有【热更新】能力的pod,则需要对pod进行重启,重启之后才回读取到配置集里面修改的key值。

sercet

主要设置的方式与配置集CM一样,但sercet主要存储的是较为敏感的信息,例如密码、OAuth 令牌和 SSH 密钥。 将这些信息放在 secret 中比放在 Pod 的定义或者 容器镜像 中来说更加安全和灵活。

  1. 存储密码
##命令格式
kubectl create secret docker-registry regcred \
  --docker-server=<你的镜像仓库服务器> \
  --docker-username=<你的用户名> \
  --docker-password=<你的密码> \
  --docker-email=<你的邮箱地址>

# 运行完命令,对应的账号密码会以base64加密的方式存储在kubernetes里面
  1. pull镜像
apiVersion: v1
kind: Pod
metadata:
  name: private-nginx
spec:
  containers:
  - name: private-nginx
    image: leifengyang/guignginx:v1.0
  imagePullSecrets:# 这边需要加上sercets的密码。
  - name: <你的镜像仓库服务器>  

http://www.niftyadmin.cn/n/5868754.html

相关文章

Golang学习笔记_38——享元模式

Golang学习笔记_35——代理模式 Golang学习笔记_36——装饰器模式 Golang学习笔记_37——外观模式 文章目录 享元模式&#xff08;Flyweight Pattern&#xff09;详解一、核心概念1. 定义2. 解决的问题3. 核心角色4. 类图 二、特点分析三、适用场景1. 文字编辑器2. 游戏开发3. …

R 语言科研绘图第 27 期 --- 密度图-分组

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…

从 Linux 服务器到前端到网关到后端业务逻辑的分析

前言 在现代 Web 应用程序的架构中&#xff0c;一个完整的请求处理流程涉及多个组件&#xff0c;涵盖了用户界面、服务器环境、网关层和后端业务逻辑。理解这一过程有助于优化系统性能、提高用户体验&#xff0c;并确保系统的可维护性和可扩展性。本文将详细分析从 Linux 服务…

机器学习(部分算法、模型)

一、KNN 算法 原理 K-近邻算法&#xff08;K-Nearest Neighbors&#xff0c;简称KNN&#xff09;,根据K个邻居样本的类别来判断当前样本的类别; 如果一个样本在特征空间中的k个最相似(最邻近)样本中的大多数属于某个类别&#xff0c;则该类本也属于这个类别 比如: 有10000个样…

Android开发奇葩bug:布局宽高不自动自适应了

Android开发奇葩bug:布局宽高不自动自适应了 写着写着约束布局ConstraintLayout的子控件一初始化过宽高后&#xff0c;后面就算你内容再多&#xff0c;高已经变了&#xff0c;但是它没生效。不管怎么检查代码够感觉没错。 奇怪了 差点我界面就打算重写了。 解决方案&#xff…

Spring 源码硬核解析系列专题(五):Spring Boot 自动装配的原理

在前四期及扩展篇中,我们深入探讨了 Spring 的 IoC 容器、Bean 创建、AOP 和事务管理,这些是 Spring 框架的基石。而 Spring Boot 作为 Spring 的进化版,通过自动装配大幅简化了开发流程。本篇将聚焦 Spring Boot 的自动装配机制,揭秘其如何通过源码实现“约定优于配置”的…

docker部署GPU环境

使用 Docker 部署 GPU 环境涉及到几个关键步骤,以下是详细步骤: 1. 安装 NVIDIA 驱动程序 确保你的系统已经安装了 NVIDIA GPU 驱动。这是使用 GPU 的前提条件。 2. 安装 Docker 和 nvidia-container-toolkit 首先,确保你已经安装了 Docker。然后,安装 NVIDIA Containe…

关于vue中el-date-picker type=daterange日期不回显的问题

在构建现代化的前端应用时&#xff0c;使用Element UI框架的el-date-picker组件可以帮助我们快速实现日期选择功能。然而&#xff0c;在处理日期范围选择&#xff08;daterange&#xff09;时&#xff0c;可能会遇到日期数据从后端获取并试图回显到前端界面时出现的问题。 一、…