k8存储卷管理

k8存储卷管理k8s支持的卷类型1.持久卷:存储的数据不会随着pod的删除消失2.临时卷:卷遵循pod的生命周期,与pod一起创建和删除3.投射卷:通过将不同的卷组合成一个统一的卷,更方地管理和使用这些资源1.持久卷(1)hostPath持久卷---kind: PodapiVersion: v1metadata:name: web1spec:volumes:                              # 卷定义- name: logdata                       # 卷名称hostPath:                           # 资源类型path: /var/weblog                 # 宿主机路径type: DirectoryOrCreate           # 目录不存在就创建containers:- name: nginximage: myos:nginxvolumeMounts:                       # mount 卷- name: logdata                     # 卷名称mountPath: /usr/local/nginx/logs  # 容器内路径	(2)nfs卷:不同的pod中共享读写数据---kind: PodapiVersion: v1metadata:name: web1spec:volumes:- name: website                       # 卷名称nfs:                                # NFS 资源类型server: 192.168.88.240            # NFS 服务器地址path: /var/webroot                # NFS 共享目录containers:- name: nginximage: myos:nginxvolumeMounts:- name: website                     # 卷名称mountPath: /usr/local/nginx/html  # 路径(3)PV和PVC(持久卷和持久卷申明):提供一种通用的api实现对卷的管理pv:---kind: PersistentVolumeapiVersion: v1metadata:name: pv-localspec:volumeMode: Filesystem   #卷的资源类型accessModes:		 #卷的访问模式(官网查阅)- ReadWriteOncecapacity:			 #卷的提供的存储空间storage: 30GipersistentVolumeReclaimPolicy: Retain  #数据回收方式,删除还是取消挂载hostPath:path: /var/weblogtype: DirectoryOrCreate---kind: PersistentVolumeapiVersion: v1metadata:                       name: pv-nfsspec:volumeMode: FilesystemaccessModes:- ReadWriteOnce- ReadOnlyMany- ReadWriteManycapacity:storage: 20GipersistentVolumeReclaimPolicy: Retain(umount)nfs:server: 192.168.88.240path: /var/webrootpvc:(自动匹配pv)---kind: PersistentVolumeClaimapiVersion: v1metadata:name: pvc1spec:volumeMode: FilesystemaccessModes:- ReadWriteOnceresources:requests:storage: 25Gi---kind: PersistentVolumeClaimapiVersion: v1metadata:name: pvc2spec:volumeMode: FilesystemaccessModes:- ReadWriteManyresources:requests:storage: 15Gi2.临时卷(1)configMap:向pod注入配置数据,用途:(1)配置环境变量(2)修改配置文件(挂载)1.1 configMap设置时区’环境变量‘---kind: ConfigMap #资源apiVersion: v1metadata:name: timezonedata:TZ: Asia/Shanghai(键值对)1.2 使用资源修改时区---kind: PodapiVersion: v1metadata:name: web1spec:volumes:- name: logdatapersistentVolumeClaim:claimName: pvc1containers:- name: nginximage: myos:nginxenvFrom:              # 配置环境变量- configMapRef:       # 调用资源对象name: timezone    # 资源对象名称volumeMounts:- name: logdatamountPath: /usr/local/nginx/logs1.1 nginx解析php,在 Pod 中增加 php 容器,与 nginx 共享同一块网卡---kind: PodapiVersion: v1metadata:name: web1spec:volumes:- name: logdatapersistentVolumeClaim:claimName: pvc1- name: websitepersistentVolumeClaim:claimName: pvc2containers:- name: nginximage: myos:nginxenvFrom:- configMapRef:name: timezonevolumeMounts:- name: logdatamountPath: /usr/local/nginx/logs- name: websitemountPath: /usr/local/nginx/html- name: php                            # 以下为新增加内容image: myos:php-fpmenvFrom:                             # 不同容器需要单独配置时区- configMapRef:name: timezonevolumeMounts:- name: website                      # 不同容器需要单独挂载NFSmountPath: /usr/local/nginx/html1.2 使用 nginx '配置文件'创建 configMap# 使用命令创建 configMap[root@master ~]# kubectl create configmap nginx-php --from-file=nginx.conf --dry-run=client -o yaml# 使用配置文件[root@master ~]# cat nginx-conf.yaml---kind: ConfigMapapiVersion: v1metadata:name: nginx-confdata:nginx.conf: |# 以下为原始配置文件内容# 注意缩进对其# ......1.3 挂载 ConfigMap[root@master ~]# vim web1.yaml---kind: PodapiVersion: v1metadata:name: web1spec:volumes:- name: logdatapersistentVolumeClaim:claimName: pvc1- name: websitepersistentVolumeClaim:claimName: pvc2- name: nginx-php     # 卷名称configMap:          # 引用资源对象name: nginx-php   # 资源对象名称containers:- name: nginximage: myos:nginxenvFrom:- configMapRef:name: timezonevolumeMounts:- name: nginx-php                              # 卷名称subPath: nginx.conf                         # 键值(以文件的方式映射,而不是目录)mountPath: /usr/local/nginx/conf/nginx.conf  # 路径- name: logdatamountPath: /usr/local/nginx/logs- name: websitemountPath: /usr/local/nginx/html- name: phpimage: myos:php-fpmenvFrom:- configMapRef:name: timezonevolumeMounts:- name: websitemountPath: /usr/local/nginx/html(2)secret卷:类似于configMap的使用,但专门用于保存机密数据(加密存储)用途:设置环境变量,配置文件,登录仓库 2.1创建secret卷的语法格式kubectl create secret 子类型 名称 [选项/参数]子类型:通用类型:kubectl create secret generic 名称 [选项/参数]kubectl create secret generic timezone --from-literal 'TZ="Asia/Shanghai"'用于认证登录私有仓库的子类型kucbectl create secret docker-registry 名称[选项/参数]用于创建TLS证书的子类型kubectl create secret tls 名称 [选项/参数]2.1 配置登录秘钥[root@master ~]# kubectl create secret docker-registry harbor-auth \--docker-server=harbor:443 \   #登录的主机名称--docker-username="用户名" \   #登录的用户名--docker-password="密码"       #登录的密码2.2认证私有仓库[root@master ~]# vim web2.yaml ---kind: PodapiVersion: v1metadata:name: web2spec:imagePullSecrets:- name: harbor-authcontainers:- name: apacheimage: harbor:443/private/httpd:latest(3)emptyDir:一个空目录,提供临时空间,同一个pod里面可实现数据共享3.1 临时空间[root@master ~]# vim web2.yaml---kind: PodapiVersion: v1metadata:name: web2spec:imagePullSecrets:- name: harbor-authvolumes:                   # 卷配置- name: cache              # 卷名称emptyDir: {}             # 资源类型containers:- name: apacheimage: harbor:443/private/httpd:latestvolumeMounts:            # 挂载卷- name: cache            # 卷名称mountPath: /var/cache  # 路径3.2 共享传递文件(同一个pod中数据的交互)---kind: PodapiVersion: v1metadata:name: web2spec:imagePullSecrets:- name: harbor-authvolumes:- name: cacheemptyDir: {}initContainers:- name: task1image: myos:latestvolumeMounts:- name: cachemountPath: /var/cachecommand: ["sh"]args:- -c- |echo -e "\n#-----------------#" |tee -a /var/cache/init.logID=${RANDOM}echo "获取随机数: ${ID}" |tee -a /var/cache/init.logecho "执行初始化任务" |tee -a /var/cache/init.logecho "随机数取余 $((ID%2))" |tee -a /var/cache/init.logecho "执行初始化任务完成" |tee -a /var/cache/init.logsleep 1exit $((ID%2))containers:- name: apacheimage: harbor:443/private/httpd:latestvolumeMounts:- name: cachemountPath: /var/cache

k8存储卷管理

k8s支持的卷类型
    1.持久卷:存储的数据不会随着pod的删除消失
    2.临时卷:卷遵循pod的生命周期,与pod一起创建和删除
    3.投射卷:通过将不同的卷组合成一个统一的卷,更方地管理和使用这些资源


1.持久卷

    (1)hostPath持久卷
    ---
    kind: Pod
    apiVersion: v1
    metadata:
      name: web1
    spec:
      volumes:                              # 卷定义
      - name: logdata                       # 卷名称
        hostPath:                           # 资源类型
          path: /var/weblog                 # 宿主机路径
          type: DirectoryOrCreate           # 目录不存在就创建
      containers:
      - name: nginx
        image: myos:nginx
        volumeMounts:                       # mount 卷
        - name: logdata                     # 卷名称
          mountPath: /usr/local/nginx/logs  # 容器内路径    

    (2)nfs卷:不同的pod中共享读写数据
        ---
        kind: Pod
        apiVersion: v1
        metadata:
          name: web1
        spec:
          volumes:
          - name: website                       # 卷名称
            nfs:                                # NFS 资源类型
              server: 192.168.88.240            # NFS 服务器地址
              path: /var/webroot                # NFS 共享目录
          containers:
          - name: nginx
            image: myos:nginx
            volumeMounts:
            - name: website                     # 卷名称
              mountPath: /usr/local/nginx/html  # 路径
        
    (3)PV和PVC(持久卷和持久卷申明):提供一种通用的api实现对卷的管理
    pv:
        ---
        kind: PersistentVolume
        apiVersion: v1
        metadata:
          name: pv-local
        spec:
          volumeMode: Filesystem   #卷的资源类型
          accessModes:         #卷的访问模式(官网查阅)
          - ReadWriteOnce
          capacity:             #卷的提供的存储空间
            storage: 30Gi
          persistentVolumeReclaimPolicy: Retain  #数据回收方式,删除还是取消挂载
          hostPath:
            path: /var/weblog
            type: DirectoryOrCreate

        ---
        kind: PersistentVolume
        apiVersion: v1
        metadata:                       
          name: pv-nfs
        spec:
          volumeMode: Filesystem
          accessModes:
          - ReadWriteOnce
          - ReadOnlyMany
          - ReadWriteMany
          capacity:
            storage: 20Gi
          persistentVolumeReclaimPolicy: Retain(umount)
          nfs:
            server: 192.168.88.240
            path: /var/webroot
            
    pvc:(自动匹配pv)
        ---
        kind: PersistentVolumeClaim
        apiVersion: v1
        metadata:
          name: pvc1
        spec:
          volumeMode: Filesystem
          accessModes:
          - ReadWriteOnce
          resources:
            requests:
              storage: 25Gi

        ---
        kind: PersistentVolumeClaim
        apiVersion: v1
        metadata:
          name: pvc2
        spec:
          volumeMode: Filesystem
          accessModes:
          - ReadWriteMany
          resources:
            requests:
              storage: 15Gi

2.临时卷
    (1)configMap:向pod注入配置数据,
        用途:(1)配置环境变量
             (2)修改配置文件(挂载)
        1.1 configMap设置时区’环境变量‘
            ---
            kind: ConfigMap #资源
            apiVersion: v1
            metadata:
              name: timezone
            data:
              TZ: Asia/Shanghai(键值对)
    
        1.2 使用资源修改时区
            ---
            kind: Pod
            apiVersion: v1
            metadata:
              name: web1
            spec:
              volumes:
              - name: logdata
                persistentVolumeClaim:
                  claimName: pvc1
              containers:
              - name: nginx
                image: myos:nginx
                envFrom:              # 配置环境变量
                - configMapRef:       # 调用资源对象
                    name: timezone    # 资源对象名称
                volumeMounts:
                - name: logdata
                  mountPath: /usr/local/nginx/logs

        1.1 nginx解析php,在 Pod 中增加 php 容器,与 nginx 共享同一块网卡
            ---
            kind: Pod
            apiVersion: v1
            metadata:
              name: web1
            spec:
              volumes:
              - name: logdata
                persistentVolumeClaim:
                  claimName: pvc1
              - name: website
                persistentVolumeClaim:
                  claimName: pvc2
              containers:
              - name: nginx
                image: myos:nginx
                envFrom:
                - configMapRef:
                    name: timezone
                volumeMounts:
                - name: logdata
                  mountPath: /usr/local/nginx/logs
                - name: website
                  mountPath: /usr/local/nginx/html
              - name: php                            # 以下为新增加内容
                image: myos:php-fpm
                envFrom:                             # 不同容器需要单独配置时区
                - configMapRef:
                    name: timezone
                volumeMounts:
                - name: website                      # 不同容器需要单独挂载NFS
                  mountPath: /usr/local/nginx/html
                  
        1.2 使用 nginx '配置文件'创建 configMap
            # 使用命令创建 configMap
            [root@master ~]# kubectl create configmap nginx-php --from-file=nginx.conf --dry-run=client -o yaml
            # 使用配置文件
            [root@master ~]# cat nginx-conf.yaml
            ---
            kind: ConfigMap
            apiVersion: v1
            metadata:
              name: nginx-conf
            data:
              nginx.conf: |
                # 以下为原始配置文件内容
                # 注意缩进对其
                # ......
        
        1.3 挂载 ConfigMap
            [root@master ~]# vim web1.yaml
            ---
            kind: Pod
            apiVersion: v1
            metadata:
              name: web1
            spec:
              volumes:
              - name: logdata
                persistentVolumeClaim:
                  claimName: pvc1
              - name: website
                persistentVolumeClaim:
                  claimName: pvc2
              - name: nginx-php     # 卷名称
                configMap:          # 引用资源对象
                  name: nginx-php   # 资源对象名称
              containers:
              - name: nginx
                image: myos:nginx
                envFrom:
                - configMapRef:
                    name: timezone
                volumeMounts:
                - name: nginx-php                              # 卷名称
                  subPath: nginx.conf                         # 键值(以文件的方式映射,而不是目录)
                  mountPath: /usr/local/nginx/conf/nginx.conf  # 路径
                - name: logdata
                  mountPath: /usr/local/nginx/logs
                - name: website
                  mountPath: /usr/local/nginx/html
              - name: php
                image: myos:php-fpm
                envFrom:
                - configMapRef:
                    name: timezone
                volumeMounts:
                - name: website
                  mountPath: /usr/local/nginx/html
                  
    (2)secret卷:类似于configMap的使用,但专门用于保存机密数据(加密存储)
                用途:设置环境变量,配置文件,登录仓库 
    
            2.1创建secret卷的语法格式
                kubectl create secret 子类型 名称 [选项/参数]
                子类型:
                    通用类型:
                    kubectl create secret generic 名称 [选项/参数]
                    kubectl create secret generic timezone --from-literal 'TZ="Asia/Shanghai"'
                    用于认证登录私有仓库的子类型
                    kucbectl create secret docker-registry 名称[选项/参数]
                    
                    用于创建TLS证书的子类型
                    kubectl create secret tls 名称 [选项/参数]
                    
            2.1 配置登录秘钥
                [root@master ~]# kubectl create secret docker-registry harbor-auth \
                         --docker-server=harbor:443 \   #登录的主机名称
                         --docker-username="用户名" \   #登录的用户名
                         --docker-password="密码"       #登录的密码
                         
            2.2认证私有仓库
                [root@master ~]# vim web2.yaml 
                ---
                kind: Pod
                apiVersion: v1
                metadata:
                  name: web2
                spec:
                  imagePullSecrets:
                  - name: harbor-auth
                  containers:
                  - name: apache
                    image: harbor:443/private/httpd:latest
                    
    (3)emptyDir:一个空目录,提供临时空间,同一个pod里面可实现数据共享
        3.1 临时空间
            [root@master ~]# vim web2.yaml
            ---
            kind: Pod
            apiVersion: v1
            metadata:
              name: web2
            spec:
              imagePullSecrets:
              - name: harbor-auth
              volumes:                   # 卷配置
              - name: cache              # 卷名称
                emptyDir: {}             # 资源类型
              containers:
              - name: apache
                image: harbor:443/private/httpd:latest
                volumeMounts:            # 挂载卷
                - name: cache            # 卷名称
                  mountPath: /var/cache  # 路径
                  
        3.2 共享传递文件(同一个pod中数据的交互)
            ---
            kind: Pod
            apiVersion: v1
            metadata:
              name: web2
            spec:
              imagePullSecrets:
              - name: harbor-auth
              volumes:
              - name: cache
                emptyDir: {}
              initContainers:
              - name: task1
                image: myos:latest
                volumeMounts:
                - name: cache
                  mountPath: /var/cache
                command: ["sh"]
                args:
                - -c
                - |
                  echo -e "\n#-----------------#" |tee -a /var/cache/init.log
                  ID=${RANDOM}
                  echo "获取随机数: ${ID}" |tee -a /var/cache/init.log
                  echo "执行初始化任务" |tee -a /var/cache/init.log
                  echo "随机数取余 $((ID%2))" |tee -a /var/cache/init.log
                  echo "执行初始化任务完成" |tee -a /var/cache/init.log
                  sleep 1
                  exit $((ID%2))
              containers:
              - name: apache
                image: harbor:443/private/httpd:latest
                volumeMounts:
                - name: cache
                  mountPath: /var/cache

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

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

相关文章

npm安装electron安装报错

npm安装electron巨慢,报错,换了镜像源也不好使,一般都是网络超时导致的。 cmd窗口执行:(打开npm的配置文件) npm config edit在配置文件中粘贴,并保存: registryhttps://regis…

x64、aarch64、arm与RISC-V64:详解四种处理器架构

x64、aarch64、arm与RISC-V64:详解四种处理器架构 x64架构aarch64架构ARM架构RISC-V64架构总结与展望在计算机科学领域,处理器架构是构建计算机系统的基石,它决定了计算机如何执行指令、管理内存和处理数据。x64、aarch64、arm与RISC-V64是当前主流的四种处理器架构,它们在…

项目顺利交付,几个关键阶段

年前离放假还有10天的时候,来了一个应急项目, 需要在放假前一天完成一个演示版本的项目,过年期间给甲方领导看。 本想的最后几天摸摸鱼,这么一来,非但摸鱼不了,还得加班。 还在虽然累,但也是…

昇思打卡营第五期(MindNLP特辑)番外:硅基流动 x 华为云DeepSeek V3 API推理MindTinyRAG

1.前言 前脚,DeepSeek面临的巨头企业官宣加入vs多国政府下场质疑的冰火两重天局势尚未平静(DeepSeek在美两重天:五大巨头接入,政府诚惶诚恐);后脚,OpenAI被逼急,凌晨亮出全新推理…

MYSQL索引与视图

一、新建数据库 mysql> create database mydb15_indexstu; mysql> use mydb15_indexstu; 二、新建表 (1)学生表Student mysql> create table Student(-> Sno int primary key auto_increment,-> Sname varchar(30) not null unique,-…

使用java代码操作rabbitMQ收发消息

SpringAMQP 将来我们开发业务功能的时候,肯定不会在控制台收发消息,而是应该基于编程的方式。由于RabbitMQ采用了AMQP协议,因此它具备跨语言的特性。任何语言只要遵循AMQP协议收发消息,都可以与RabbitMQ交互。并且RabbitMQ官方也…

介绍10个比较优秀好用的Qt相关的开源库

记录下比较好用的一些开源库 1. Qt中的日志库“log4qt” log4qt 是一个基于 Apache Log4j 设计理念的 Qt 日志记录库,它为 Qt 应用程序提供了强大而灵活的日志记录功能。Log4j 是 Java 领域广泛使用的日志框架,log4qt 借鉴了其优秀的设计思想&#xff…

【远程控制】安装虚拟显示器

todesk远程发现没显示器的机器有问题 电脑如果不外接一个显示器那么会默认为1024 768 分辨率需要安装虚拟显示器参考 竟然是一个隐私屏幕的解决方案。 虚拟显示器 Parsec-vdd 项目地址 Parsec-vdd 最大的优点是:支持 4K 高刷、可添加多个虚拟屏、 H-Cursor&#…

嵌入式面试题 C/C++常见面试题整理_7

一.什么函数不能声明为虚函数? 常见的不能声明为虚函数的有:普通函数(非成员函数):静态成员函数;内联成员函数;构造函数;友元函数。 1.为什么C不支持普通函数为虚函数?普通函数(非成员函数)只能被overload,不能被override,声明为虚函数也没有什么意思…

赛博算命之 ”梅花易数“ 的 “JAVA“ 实现 ——从玄学到科学的探索

hello~朋友们!好久不见! 今天给大家带来赛博算命第三期——梅花易数的java实现 赛博算命系列文章: 周易六十四卦 掐指一算——小六壬 更多优质文章:个人主页 JAVA系列:JAVA 大佬们互三哦~互三必回!&#xf…

UNI-MOL: A UNIVERSAL 3D MOLECULAR REPRESENTATION LEARNING FRAMEWORK

UNI-MOL: A UNIVERSAL 3D MOLECULAR REPRESENTATION LEARNING FRAMEWORK Neurips23 推荐指数:#paper/⭐⭐⭐#​(工作量不小) 动机 在大多数分子表征学习方法中,分子被视为 1D 顺序标记或2D 拓扑图,这限制了它们为下游任务整合…

【DeepSeek论文精读】3. DeepSeekMoE:迈向混合专家语言模型的终极专业化

欢迎关注[【AIGC论文精读】](https://blog.csdn.net/youcans/category_12321605.html)原创作品 【DeepSeek论文精读】1. 从 DeepSeek LLM 到 DeepSeek R1 【DeepSeek论文精读】2. DeepSeek LLM:以长期主义扩展开源语言模型 【DeepSeek论文精读】3. DeepS…

AI 编程工具—Cursor 进阶篇 文章改写生成整理爬取

AI 编程工具—Cursor 进阶篇 文章改写生成整理爬取 其实对做自媒体的人而言,整理素材其实是一件非常耗时的事情,今天我们来看一下如何使用Cursor来帮我们解决这些问题,首先我们要建一个单独的项目,因为这个项目不涉及任何代码操作,只是文字相关的事情,还有就是这个项目需…

【Android开发AI实战】基于CNN混合YOLOV实现多车牌颜色区分且针对车牌进行矫正识别(含源码)

文章目录 引言单层卷积神经网络(Single-layer CNN)📌 单层 CNN 的基本结构📌 单层 CNN 计算流程图像 透视变换矫正车牌c实现🪄关键代码实现:🪄crnn结构图 使用jni实现高级Android开发&#x1f3…

LSSVM最小二乘支持向量机多变量多步光伏功率预测(Matlab)

代码下载:LSSVM最小二乘支持向量机多变量多步光伏功率预测(Matlab) LSSVM最小二乘支持向量机多变量多步光伏功率预测 一、引言 1.1、研究背景与意义 随着全球能源危机和环境问题的日益严重,可再生能源的开发利用成为了世界各国…

设计模式Python版 代理模式

文章目录 前言一、代理模式二、代理模式示例三、远程代理四、虚拟代理五、虚拟代理示例 前言 GOF设计模式分三大类: 创建型模式:关注对象的创建过程,包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模式。结构型…

自动化测试(selenium篇)

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、什么是自动化测试 自动化测试通俗一些来讲,就是相当于将人工测试手段进行转换,让代码去自动执行。 自动化测试主要分为:单元…

【大模型】DeepSeek与chatGPT的区别以及自身的优势

目录 一、前言二、核心技术对比2.1 模型架构设计2.1.1 ChatGPT的Transformer架构2.1.2 DeepSeek的混合架构 2.2 训练数据体系2.2.1 ChatGPT的数据特征2.2.2 DeepSeek的数据策略 三、应用场景对比3.1 通用场景表现3.1.1 ChatGPT的强项领域3.2.2 DeepSeek的专项突破 3.3 响应效率…

RK3568平台开发系列讲解(ConfigFS篇)ConfigFS核心数据结构

🚀返回专栏总目录 文章目录 一、数据结构二、结构体关系三、案例3.1、configfs_subsystem 实例3.2、config_group 实例化四、属性和方法五、config_item实例化沉淀、分享、成长,让自己和他人都能有所收获!😄 理解 ConfigFS 的核心数据结构对于深入使用和定制 ConfigFS 非…

Spring Boot Web 入门

目录 Spring Boot Web 是 Spring Boot 框架的一个重要模块,它简化了基于 Spring 的 Web 应用程序的开发过程。以下是一个 Spring Boot Web 项目的入门指南,涵盖了项目创建、代码编写、运行等关键步骤。 1. 项目创建 使用 Spring Initializr 使用 IDE …