当前位置: 首页 > news >正文

网站标题修改网页qq手机版

网站标题修改,网页qq手机版,全球最新数据消息,广州网站建设如何做目录 一、简单基本存储 1、EmptyDir 1.1概念 1.2作用 1.3配置文件 1.4测试 2、HostPath 2.1概念 2.2作用 2.3配置文件 2.4测试 ①、数据共享 ②、持久化存储 3、NFS 3.1概念 3.2作用 3.3NFS服务安装 ①、设置主节点为NFS服务器 ②、给副节点安装NFS客户端工…

目录

一、简单基本存储

1、EmptyDir

1.1概念

1.2作用

1.3配置文件

1.4测试

2、HostPath

2.1概念

2.2作用

2.3配置文件

2.4测试

①、数据共享

②、持久化存储

3、NFS

3.1概念

3.2作用

3.3NFS服务安装

①、设置主节点为NFS服务器

②、给副节点安装NFS客户端工具

3.4配置文件

3.4测试

①、数据共享

②、持久化存储


由于k8s中Pod的生命周期短暂,会被频繁的创建和销毁,容器的重启或迁移也会导致数据丢失,而有状态应用需求,如数据库、消息队列等需要持久化存储,确保数据在容器生命周期之外依然存在,方便用户调用,为了实现持久化保存数据,k8s引入Volume实现同一个Pod中的不同容器的数据共享和数据持久化,即使容器重启或迁移等等都不会导致Volume数据丢失。

常见Volume类型:

  • 简单基本存储:EmptyDir、HostPath、NFS

  • 高级核心存储:PV、PVC

  • 配置存储:ConfigMap、Secret

一、简单基本存储

1、EmptyDir

1.1概念

​ EmptyDir是在Pod被分配到Node时创建的,初始内容为空,无法指定宿主机对应的文件目录,一个EmptyDir相当于一个Host的空目录,当Pod销毁时,EmptyDir的数据也会被永久删除,即EmptyDir只在Pod的生命周期内有效。

1.2作用

由于EmptyDir只在Pod的生命周期内有效,故不适合做持久化的数据存储,只适合做临时存储

  • 作为临时空间,无须长久保留

  • 为同一个Pod内的不同容器实现数据共享

1.3配置文件
  apiVersion: v1kind: Podmetadata:name: nginx-busybox-lognamespace: defaultspec:containers:# ---------- Nginx ----------- name: nginximage: nginx:1.24.0           # 体积小、镜像拉取快ports:- containerPort: 80volumeMounts:- name: logs-volumemountPath: /var/log/nginx   # Nginx 默认日志目录# ---------- BusyBox ----------- name: busyboximage: busybox:1.36.1         # 推荐稳定版本command: ["/bin/sh","-c","tail -f /logs/access.log"]   # 初始命令,动态读取指定文件内容volumeMounts:- name: logs-volumemountPath: /logs            # BusyBox 内查看目录# ---------- 共享卷 ----------volumes:- name: logs-volume             # 共享卷名称emptyDir: {}                  # 数据卷类型,Pod 级临时目录,两容器共享
1.4测试

最终实现:每当我访问nginx,nginx会将访问的日志信息存储到/var/log/nginx目录下,而busybox可通过命令查看是否有日志生成,即实现同一个Pod中两个不同容器之间通过数据卷emptydir进行了数据共享。

  # 创建 Pod# 记住要在yaml文件目录下kubectl create -f nginx-busybox-emptydir.yaml​# 查看是否创建 Pod 成功kubectl get po nginx-busybox-log -o wide​# 访问 nginx kubectl exec nginx-busybox-log -- curl http://localhost​#-----------------双开终端--------------------------# 双开终端方便查看指定容器的标准输出# kubectl logs -f <你创建的数据卷名称> -n <你创建数据卷指定的命名空间> -c <指定容器>kubectl logs -f nginx-busybox-log -c busybox

  # 删除Pod,查看数据是否仍存在,是否仍可以进行数据共享kubectl delete -f nginx-busybox-emptydir.yaml​# 验证删除成功kubectl get po nginx-busybox-log -o wide​# 双开终端方便查看指定容器的标准输出# kubectl logs -f <你创建的数据卷名称> -n <你创建数据卷指定的命名空间> -c <指定容器>kubectl logs -f nginx-busybox-log -c busybox

发现数据已经不见了

2、HostPath

2.1概念

​ 当Pod销毁时,EmptyDir的数据也会被永久删除,即EmptyDir只在Pod的生命周期内有效。为了实现简单的数据持久化,即简单地将数据挂载到主机上,可选择HostPath

2.2作用

HostPath就是将Node主机上的一个实际目录挂载到Pod中,提供给容器使用,最终实现即使Pod销毁,数据依然存在在Node主机

2.3配置文件
  apiVersion: v1kind: Podmetadata:name: nginx-busybox-lognamespace: defaultspec:containers:# ---------- Nginx ----------- name: nginximage: nginx:1.24.0           # 体积小、镜像拉取快ports:- containerPort: 80volumeMounts:- name: logs-volumemountPath: /var/log/nginx   # Nginx 默认日志目录# ---------- BusyBox ----------- name: busyboximage: busybox:1.36.1         # 推荐稳定版本command: ["/bin/sh","-c","tail -f /logs/access.log"]   # 初始命令,动态读取指定文件内容volumeMounts:- name: logs-volumemountPath: /logs            # BusyBox 内查看目录# ---------- 共享卷 ----------volumes:- name: logs-volume             # 共享卷名称hostPath:                     # 数据卷类型path: /root/logs            # 保存到K8s 节点(即 Linux 虚拟机或裸机) 上的目录type: DirectoryOrCreate     # 目录存在就直接使用,不存在就先创建后使用
2.4测试

最终实现:每当我访问nginx,nginx会将访问的日志信息存储到K8s 节点(即 Linux 虚拟机或裸机) 上的目录(路径为path: /root/logs ),而我们可以直接去节点通过命令查看是否有日志生成,即实现将数据持久化存储到Node主机上,即使Pod删除了,数据仍存在。

①、数据共享
  # 创建 Pod# 记住要在yaml文件目录下kubectl create -f nginx-busybox-hostpath.yaml​# 查看是否创建 Pod 成功,并查看是创建在哪个节点kubectl get po nginx-busybox-log -o wide​# 访问 nginx kubectl exec nginx-busybox-log -- curl http://localhost​#-----------------双开终端--------------------------# 双开终端,方便查看指定文件docker exec -it <你的Pod创建所在节点> bash# 如我的是 docker exec -it my-multi-node-cluster1-worker bash​# 进入指定的节点路径,查看共享目录ls -l /root/logs​# 查看文件日志tail -f /root/logs/access.log

②、持久化存储
  # 删除Pod,查看数据是否仍存在,是否仍可以进行数据共享kubectl delete -f nginx-busybox-hostpath.yaml​# 验证删除成功kubectl get po nginx-busybox-log -o wide​#-----------------双开终端--------------------------# 双开终端,方便查看指定文件docker exec -it <你的Pod创建所在节点> bash# 如我的是 docker exec -it my-multi-node-cluster1-worker bash​# 进入指定的节点路径,查看共享目录ls -l /root/logs​# 查看文件日志是否仍然存在tail -f /root/logs/access.log

发现数据仍然存在

3、NFS

3.1概念

​ 虽然HostPath可以解决数据的持久化问题,但当数据存储所在的Node节点崩溃时,其内部的Pod和数据也会一并丢失,Pod此时需要转移到其他节点,需要准备单独的网络存储系统,此时可选NFS或CIFS等其他,这里只是使用NFS作为例子进行学习。

3.2作用

NFS作为一个网络文件的存储系统,我们可通过搭建一台NFS服务器,然后将Pod中的数据直接存储其中,这样即使Pod在节点上如何转移,我们只需要保证Node和NFS连接正常,数据即可正常访问。

NFS服务器一般需要备份,设置为高可用

3.3NFS服务安装
①、设置主节点为NFS服务器
  # 获取已有节点,找到control-plane容器记下输出容器内 IP( INTERNAL-IP )例如 172.18.0.2kubectl get node -o wide​# 进入控制面(control-plane)容器docker exec -it my-multi-node-cluster1-control-plane bash​# ---- 容器内执行 ----# 更新并安装NFS服务apt update && apt install -y nfs-kernel-server# 创建共享目录mkdir -p /root/logs# 把共享目录权限改成 “任何人可读可写可执行”chmod 777 /root/logs# 向 /etc/exports 追加一行 导出规则# 当然也可以手动进入 /etc/exports 然后编辑添加规则echo "/root/logs *(rw,sync,no_subtree_check,no_root_squash)" >> /etc/exports# 重新加载 /etc/exports 并立即生效exportfs -rav# 重启 NFS 服务进程systemctl restart nfs-kernel-server# 如果不可用systemctl,可改为:service nfs-kernel-server restart​# 退出控制面容器exit
②、给副节点安装NFS客户端工具

NFS 客户端功能已经内置在 Linux 内核nfs 文件系统模块,所以一般不需要额外安装

3.4配置文件

直接挂 NFS,无 PV/PVC

  apiVersion: v1kind: Podmetadata:name: nginx-busybox-lognamespace: defaultspec:containers:# ---------- Nginx ----------- name: nginximage: nginx:1.24.0           # 体积小、镜像拉取快ports:- containerPort: 80volumeMounts:- name: logs-volumemountPath: /var/log/nginx   # Nginx 默认日志目录# ---------- BusyBox ----------- name: busyboximage: busybox:1.36.1         # 推荐稳定版本command: ["/bin/sh","-c","tail -f /logs/access.log"]   # 初始命令,动态读取指定文件内容volumeMounts:- name: logs-volumemountPath: /logs            # BusyBox 内查看目录# ---------- 共享卷 ----------volumes:- name: logs-volume             # 共享卷名称nfs:                          # 数据卷类型path: /root/logs            # 共享目录路径(与上方在控制面容器创建的共享目录相同)server: 172.18.0.2          # nfs服务器地址(控制面容器的内部 IP )
3.4测试
①、数据共享
# 创建 Pod
# 记住要在yaml文件目录下
kubectl create -f nginx-busybox-nfs.yaml# 查看是否创建 Pod 成功kubectl get po nginx-busybox-log -o wide# 访问 nginx 
kubectl exec nginx-busybox-log -- curl http://localhost#-----------------双开终端--------------------------
# 双开终端,方便查看指定文件
kubectl logs -f nginx-busybox-log -c busybox# 进入主节点
docker exec -it my-multi-node-cluster1-control-plane bash# 查看共享目录
ls /tmp/logs# 查看是否含访问记录
cat /tmp/logs/access.log

②、持久化存储
# 删除Pod,查看数据是否仍存在,是否仍可以进行数据共享
kubectl delete pod nginx-busybox-log# 验证删除成功
kubectl get po nginx-busybox-log -o wide# 立即重新创建同名 Pod(只读验证)
kubectl apply -f nginx-busybox-nfs.yaml# 查看是否创建成功
kubectl get po nginx-busybox-log -o wide# 进入主节点,查看历史日志是否存在
docker exec -it my-multi-node-cluster1-control-plane bash
ls /tmp/logs
cat /tmp/logs/access.log
exit# 退出主节点后,立即查看busybox历史日志
kubectl exec nginx-busybox-log -c busybox -- cat /logs/access.log

发现数据仍然存在,并没有随着Pod的生命周期而丢失

PS:为什么我的snipaste截图的照片,过一段时间会自动消失,导致我又要重新做一遍演示,有没有大佬救救我QAQ

http://www.dtcms.com/a/538538.html

相关文章:

  • 校园门户网站建设公司天津制作公司网站
  • 百度网站名称及网址小程序引流推广平台
  • 2025年Office新版图标变化记录
  • 亚马逊官方网站怎么做一个空间建多个网站的方法
  • 昆明网站设计制作公司电子商务网站建设读书笔记
  • 阿里网站怎么建设网站seo推广方案
  • 做网站还需要搜狗吗在线网站seo诊断
  • 网络营销网站平台有哪些114啦网址导航建站系统
  • 效果图制作网站有哪些如何建立和设计公司网站
  • 广州网站制作怎么做网站实现用户登录
  • 如何使用阿里云建设网站抚州市建设局官网站
  • 蓝图网站建设高端响应式网站开发
  • 网站推广信息获客软件
  • 网站宣传与推广的方法设计公司logo大全
  • 中国知名的建网站的公司河南省住建厅官网
  • 如何远程连接 网站 数据库如何把网站放到域名上
  • 怎么用wordpress搭建免费网站丹东 网站开发
  • 网站seo优化免费开发公司网签合同条件
  • 网站访问量怎么增加seo标题生成器
  • 算法题(246):负环(bellman_ford算法)
  • 宿州网站建设Wordpress控制上传文件大小
  • 做网站哪个效果好酒店网站模板
  • Pandas 缺失值最佳实践:用 pd.NA 解决缺失值的老大难问题
  • 公司网站备案需要每年做吗网站和管理系统的区别
  • 淘宝联盟 网站建设 内容少手机免费建网站
  • 天津 网站建设wordpress柚子皮5.31
  • 网站建设服务内容济南网站建设伍际网络
  • 网站建设的总体设计思想58同城网络营销
  • 什么企业网站能自己做二级域名做网站有哪些缺点
  • 辽宁官方网站做辣白菜WordPress换域名更新