kubernetes的存储卷使用

目录

一、为什么使用存储卷

二、emptyDir存储卷

1.概念

2.创建Pod emptyDir

3. 验证emptyDir存储卷

 三、hostPath存储卷

1.概念

2.创建Pod hostPath

 3.验证hostPath存储卷

三、nfs共享存储卷

1.概念

2.安装nfs,配置nfs服务

 3.创建Pod

4.验证nfs存储卷


一、为什么使用存储卷

容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题。首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失——容器以干净的状态(镜像最初的状态)重新启动。其次,在Pod中同时运行多个容器时,这些容器之间通常需要共享文件。Kubernetes 中的Volume抽象就很好的解决了这些问题。Pod中的容器通过Pause容器共享Volume。

二、emptyDir存储卷

1.概念

当Pod被分配给节点时,首先创建emptyDir卷,并且只要该Pod在该节点上运行,该卷就会存在。正如卷的名字所述,它最初是空的。Pod 中的容器可以读取和写入emptyDir卷中的相同文件,尽管该卷可以挂载到每个容器中的相同或不同路径上。当出于任何原因从节点中删除 Pod 时,emptyDir中的数据将被永久删除。

2.创建Pod emptyDir

vim pod-emptydir.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod-emptydir
  labels:
    app: myapp
    tier: frontend
spec:
  containers:
  - name: myapp
    image: nginx:1.14
    imagePullPolicy: IfNotPresent
    ports:
    - name: http
      containerPort: 80
    volumeMounts:                              #定义容器挂载详细信息
    - name: html                               #挂载存储卷的名称,如果跟下面volume字段name值相同,则表示使用volume的这个存储卷
      mountPath: /usr/share/nginx/html/        #挂载到容器中的目录路径
  - name: busybox
    image: busybox:latest
    imagePullPolicy: IfNotPresent
    volumeMounts:
    - name: html
      mountPath: /data/                        #挂载到容器中的目录路径
    command: ["/bin/sh","-c","while true;do echo $(date) >> /data/index.html;sleep 2;done"]  #执行死循环,向挂载的目录下文件写入数据
  volumes:         #定义存储卷
  - name: html     #定义存储卷名称
    emptyDir: {}   #定义存储卷类型

3. 验证emptyDir存储卷

kubectl apply -f pod-emptydir.yaml
kubectl get pods -o wide

在上面定义了2个容器,其中一个容器是输入日期到index.html中,然后验证访问nginx的html是否可以获取日期。以验证两个容器之间挂载的emptyDir实现共享。
curl 10.244.2.58

 三、hostPath存储卷

1.概念

hostPath允许挂载Node上的文件系统到Pod里面去。如果Pod需要使用Node上的文件,可以使用hostPath。在同一个节点上运行并在其hostPath卷中使用相同路径的pod可以看到相同的文件。

  • hostPath卷将 node 节点的文件系统中的文件或目录挂载到集群中。
  • hostPath可以实现持久存储,但是在node节点故障时,也会导致数据的丢失。

2.创建Pod hostPath

vim pod-hostpath.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod-hostpath
spec:
  containers:
  - name: myapp
    image: nginx:1.14
    volumeMounts:
    - name: html
      mountPath: /usr/share/nginx/html
      readOnly: false
  volumes:                       #volumes字段定义了paues容器关联的宿主机或分布式文件系统存储卷
  - name: html                   #定义存储卷名称              
    hostPath:                    #定义宿主机存储路径
      path: /data/pod/volume1    #挂载宿主机目录的路径
      type: DirectoryOrCreate    #定义类型,如果宿主机没有此目录则自动创建

 3.验证hostPath存储卷

kubectl apply -f pod-hostpath.yaml 
kubectl get pods -owide

#在node01节点
echo 'node01.com' > /data/pod/volume1/index.html

curl 10.244.2.60

三、nfs共享存储卷

1.概念

NFS是Network File System的缩写,即网络文件系统。Kubernetes中通过简单地配置就可以挂载NFS到Pod中,而NFS中的数据是可以永久保存的,同时NFS支持同时写操作。

emptyDir可以提供不同容器间的文件共享,但不能存储;hostPath可以为不同容器提供文件的共享并可以存储,但受制于节点限制,不能跨节点共享;这时需要网络存储 (NAS),即既可以方便存储容器又可以从任何集群节点访问,本文以NFS为例做测试。

2.安装nfs,配置nfs服务

#配置nfs服务
mkdir /data/volumes -p
chmod 777 /data/volumes
echo '<h1> nfs <h1>' > /data/volumes

vim /etc/exports
/data/volumes 192.168.88.0/24(rw,no_root_squash,sync)

systemctl start rpcbind
systemctl start nfs

showmount -e

 3.创建Pod

vim pod-nfs.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod-nfs
spec:
  containers:
  - name: myapp
    image: nginx:1.14
    volumeMounts:
    - name: html
      mountPath: /usr/share/nginx/html
  volumes:
  - name: html
    nfs:                          #定义nfs存储卷信息
      path: /data/volumes         #挂载nfs服务器的共享目录
      server: 192.168.88.60       #nfs服务器的ip地址

4.验证nfs存储卷

kubectl apply -f pod-nfs.yaml

curl 10.244.2.61

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Electron-builder打包和自动更新

前言 文本主要讲述如何为 electron 打包出来软件配置安装引导和结合 github 的 release 配置自动更新。 electron-builder 是将 Electron 工程打包成相应平台的软件的工具&#xff0c;我的工程是使用 electron-vite 构建的&#xff0c;其默认集成了 electron-builder &#x…

欧拉算法与埃氏筛法比较

#include<iostream> using namespace std; bool data[100000005]; // zhishu用于存储质数的数组 &#xff0c;cnt下标 int zhishu[100000000],cnt0;int main() {data[1] 1;// 1表示素数 int n;cin >> n;// 循环遍历for(int i2;i<n;i){if(data[i] 0){// 表明是…

SDXL1.0大模型安装与使用

个人网站&#xff1a; 文章目录 前言一、模型下载使用&#xff08;简单体验&#xff09;二、模型下载使用&#xff08;繁琐版&#xff09;三、ComfyUI 前言 使用 Stable Diffusion XL&#xff0c;您可以使用较短的提示创建描述性图像&#xff0c;并在图像中生成文字。该模型在…

vue自定义穿梭框支持远程滚动加载

分享-2023年资深前端进阶&#xff1a;前端登顶之巅-最全面的前端知识点梳理总结&#xff0c;前端之巅 *分享一个使用比较久的&#x1fa9c; 技术框架公司的选型(老项目)&#xff1a;vue2 iview-ui 方案的实现思路是共性的&#xff0c;展现UI样式需要你们自定义进行更改&#…

【Unity每日一记】向量操作摄像机的移动(向量加减)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

Linux知识点 -- 进程概念(补充)

Linux知识点 – 进程概念&#xff08;补充&#xff09; 文章目录 Linux知识点 -- 进程概念&#xff08;补充&#xff09;一、进程地址空间的堆区二、虚拟地址到物理地址之间的转化三、虚拟地址到物理地址之间的映射 一、进程地址空间的堆区 在用户每次使用malloc等函数在进程的…

【设计模式——学习笔记】23种设计模式——策略模式Strategy(原理讲解+应用场景介绍+案例介绍+Java代码实现)

文章目录 案例引入传统方案实现实现分析 介绍基本介绍登场角色 案例实现案例一类图实现 案例二类图实现问答 策略模式在JDK源码中的使用总结文章说明 案例引入 有各种鸭子&#xff0c;比如野鸭、北京鸭、水鸭等。 鸭子有各种行为&#xff0c;比如走路、叫、飞行等。不同鸭子的…

[NLP]LLM 训练时GPU显存耗用量估计

以LLM中最常见的Adam fp16混合精度训练为例&#xff0c;分析其显存占用有以下四个部分&#xff1a; GPT-2含有1.5B个参数&#xff0c;如果用fp16格式&#xff0c;只需要1.5G*2Byte3GB显存, 但是模型状态实际上需要耗费1.5B*1624GB. 比如说有一个模型参数量是1M&#xff0c;在…

k8s 自身原理之 Service

好不容易&#xff0c;终于来到 k8s 自身的原理之 关于 Service 的一部分了 前面我们用 2 个简图展示了 pod 之间和 pod 与 node 之间是如何通信息的&#xff0c;且通信的数据包是不会经过 NAT 网络地址转换的 那么 Service 又是如何实现呢&#xff1f; Service 我们知道是用…

Flask-SQLAlchemy

认识Flask-SQLAlchemy Flask-SQLAlchemy 是一个为 Flask 应用增加 SQLAlchemy 支持的扩展。它致力于简化在 Flask 中 SQLAlchemy 的使用。SQLAlchemy 是目前python中最强大的 ORM框架, 功能全面, 使用简单。 ORM优缺点 优点 有语法提示, 省去自己拼写SQL&#xff0c;保证SQL…

Unity游戏源码分享-俄罗斯方块unity2017

Unity游戏源码分享-俄罗斯方块unity2017 工程地址&#xff1a; https://download.csdn.net/download/Highning0007/88204011

【Linux初阶】system V - 共享内存

文章目录 前言一、共享内存初识1.共享内存的原理2.理解共享内存3.共享的内存的概念 二、共享内存函数1.shmget函数2.shmat函数3.shmdt函数4.shmctl函数 三、共享内存的查看方法及其特征四、共享内存的代码实现五、共享内存优缺点分析1.共享内存的优点2.共享内存的缺点 六、共享…

【Nacos2.24持久化到Postgres数据库适配——详细版】

Nacos2.24持久化到Postgres数据库适配 前言步骤拉取源码添加依赖修改源码编译打包修改配置测试运行 参考 前言 公司基于springboot实现了一套单体框架&#xff0c;目前我负责搭建SpringCloud微服务框架&#xff0c;需要用到nacos&#xff0c;但是由于公司特殊性&#xff0c;na…

1022.从根到叶的二进制之和

目录 一、题目 二、代码 一、题目 二、代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nu…

玩转 VS code 之下载篇

VSCode 简介 Visual Studio Code (简称 VS Code / VSC)&#xff0c;是2015 年由微软公司推出的一款免费开源的现代化轻量级代码编辑器&#xff0c;支持几乎所有主流的开发语言的语法高亮、智能代码补全、GIT 等特性&#xff0c;支持插件扩展等等 可用于 Windows&#xff0c;ma…

等保测评标准和规范有哪些?

等保测评标准和规范的出现&#xff0c;为我国信息安全等级保护制度的建立和健全提供了重要的保障。 作为信息安全领域的重要评估标准&#xff0c;等保测评旨在通过对信息系统、网络安全设备和安全产品等的安全性能、安全功能、安全管理、安全控制和安全审计等方面的要求进行检查…

【golang】怎样判断一个变量的类型?

怎样判断一个变量的类型&#xff1f; package mainimport "fmt"var container []string{"zero", "one", "two"} func main() {container : map[int]string{0: "zero", 1: "one", 2: "two"}fmt.Printf…

AWS中Lambda集成SNS

1.创建Lambda 在Lambda中&#xff0c;创建名为AWSSNSDemo的函数 use strict console.log(loading function); var aws require(aws-sdk); var docClient new aws.DynamoDB.DocumentClient(); aws.config.regionap-southeast-1;exports.handler function(event,context,cal…

stop job is running for Advanced key-value store

今天虚拟机磁盘撑满了&#xff0c;本来还能凑合运行&#xff0c;结果重启了下&#xff0c;就报了这个 stop job is running for Advanced key-value store (1min 59s / no limit) 解决方式很简单&#xff0c; 1、虚拟机关电源&#xff0c;任务管理器&#xff0c;关闭VM&#x…

LeetCode_03Java_1572. 矩阵对角线元素的和

给你一个正方形矩阵 mat&#xff0c;请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 输入&#xff1a;mat [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;25 解释&#xff1a;对角线的和为&#xff1a;1 5 9 3 7 2…