8.1 k8s使用PV/PVC做数据持久化运行redis服务,数据保存至NFS
1.制作redis docker镜像
1.1 准备alpine基础镜像
# 下载
docker pull alpine:3.13
# 更改tag
docker tag alpine:3.13 192.168.1.110/base/alpine:3.13
# 上传到本地harbor
docker push 192.168.1.110/base/alpine:3.13
1.2 准备redis安装包及配置文件
下载redis安装包
wget http://download.redis.io/releases/redis-4.0.14.tar.gz
修改redis.conf
tar xf redis-4.0.14.tar.gz
cp redis-4.0.14/redis.conf .
vim redis.conf
...
save 5 1
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /data/
...
镜像中redis的启动脚本
cat run_redis.sh
#!/bin/bash
/usr/local/redis/bin/redis-server /etc/redis.conf
tail -f /etc/hosts
1.3 编写Dockerfile
FROM 192.168.1.110/base/alpine:3.13
ADD redis-4.0.14.tar.gz /tmp/
ADD run_redis.sh /usr/local/redis/
ADD redis.conf /etc/redis.conf
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
&& apk add gcc g++ make libffi-dev openssl-dev libtool \
&& mkdir /data/redisdata -p \
&& cd /tmp/redis-4.0.14 \
&& make PREFIX=/usr/local/redis install \
&& rm -rf /tmp/redis-4.0.14
EXPOSE 6379
CMD ["/usr/local/redis/run_redis.sh"]
1.4 制作镜像并上传到本地harbor
# ls -l
总用量 1772
-rw-r--r-- 1 root root 471 10月 22 14:37 Dockerfile
-rw-r--r-- 1 root root 1740967 10月 22 13:58 redis-4.0.14.tar.gz
-rw-r--r-- 1 root root 58792 10月 22 16:30 redis.conf
-rwxr-xr-x 1 root root 82 10月 22 14:15 run_redis.sh
# docker build -t 192.168.1.110/base/alpine3.13-redis4.0.14:v20211022-1631 .
# docker push 192.168.1.110/base/alpine3.13-redis4.0.14:v20211022-1631
2.为redis数据存储部署PV/PVC
2.1 NFS server创建目录
mkdir /data/k8s-data/redis/datadir-pv-1 -p
2.2 编写pv/pvc yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: redis-datadir-pv-1
spec:
capacity:
storage: 20Gi
accessModes:
- ReadWriteOnce
nfs:
server: 192.168.2.10
path: /data/k8s-data/redis/datadir-pv-1
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: redis-datadir-pvc-1
namespace: yan-test
spec:
accessModes:
- ReadWriteOnce
volumeName: redis-datadir-pv-1
resources:
requests:
storage: 10Gi
2.3 创建pv/pvc并验证
创建namespace
# kubectl create ns yan-test
创建pv/pvc
# kubectl apply -f redis_pv_pvc.yaml
验证
# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
redis-datadir-pv-1 20Gi RWO Retain Bound yan-test/redis-datadir-pvc-1 78m
# kubectl get pvc -n yan-test
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
redis-datadir-pvc-1 Bound redis-datadir-pv-1 20Gi RWO 78m
3.在k8s上部署redis
3.1 编写yaml
# cat redis_svc_deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-deployment
labels:
app: redis
namespace: yan-test
spec:
replicas: 1
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis-container
image: 192.168.1.110/base/alpine3.13-redis4.0.14:v20211022-1631
imagePullPolicy: IfNotPresent
volumeMounts:
- mountPath: /data/
name: redis-data
volumes:
- name: redis-data
persistentVolumeClaim:
claimName: redis-datadir-pvc-1
---
apiVersion: v1
kind: Service
metadata:
name: redis-svc
namespace: yan-test
spec:
ports:
- name: http
port: 6379
targetPort: 6379
nodePort: 36379
type: NodePort
selector:
app: redis
3.2 创建redis
# kubectl apply -f redis_svc_deploy.yaml
3.3 验证是否创建成功
root@k8-deploy:~/k8s-yaml/redis# kubectl get svc -n yan-test
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
redis-svc NodePort 10.0.12.138 <none> 6379:36379/TCP 36m
root@k8-deploy:~/k8s-yaml/redis# kubectl get pod -n yan-test
NAME READY STATUS RESTARTS AGE
redis-deployment-75b9b94b64-rtj95 1/1 Running 0 36m
4.验证redis服务及数据存储是否正常
# 通过Nodeport端口连接redis
root@k8-deploy:~/k8s-yaml/redis# redis-cli -h 192.168.2.17 -p 36379
192.168.2.17:36379> INFO
# Server
redis_version:4.0.14
redis_git_sha1:00000000
...
# 写入数据测试
192.168.2.17:36379> DBSIZE
(integer) 0
192.168.2.17:36379> set a 1
OK
# 查看NFSsever上redis的目录是否有redis的数据文件
root@k8-deploy:~/k8s-yaml/redis# ls /data/k8s-data/redis/datadir-pv-1/
dump.rdb redis.log
8.1 k8s使用PV/PVC做数据持久化运行redis服务,数据保存至NFS的更多相关文章
- k8s存储 pv pvc ,storageclass
1. pv pvc 现在测试 glusterfs nfs 可读可写, 多个pod绑定到同一个pvc上,可读可写. 2. storageclass 分成两种 (1) 建立pvc, 相当于多个 ...
- 通过DataWorks数据集成归档日志服务数据至MaxCompute进行离线分析
通过DataWorks归档日志服务数据至MaxCompute 官方指导文档:https://help.aliyun.com/document_detail/68322.html但是会遇到大家在分区上或 ...
- 7.2 k8s 基于PV、PVC搭建zookeeper 3节点集群
1.PV,PVC介绍 1.1.StorageClass & PV & PVC关系图 Volumes 是最基础的存储抽象,其支持多种类型,包括本地存储.NFS.FC以及众多的云存储,我们 ...
- Kubernetes 存储卷管理 PV&PVC(十)
目录 一.emptyDir 二.hostPath 三.PV & PVC 1.NFS PersistentVolume 2.创建 PVC 3.创建 Pod 进行挂载 为了持久化保存容器的数据,可 ...
- IOS开发--数据持久化篇之文件存储(一)
前言:个人觉得开发人员最大的悲哀莫过于懂得使用却不明白其中的原理.在代码之前我觉得还是有必要简单阐述下相关的一些知识点. 因为文章或深或浅总有适合的人群.若有朋友发现了其中不正确的观点还望多多指出,不 ...
- Redis之数据持久化RDB与AOF
Redis之数据持久化RDB与AOF https://www.cnblogs.com/zackku/p/10087701.html 大家都知道,Redis之所以性能好,读写快,是因为Redis是一个内 ...
- 进阶的Redis之数据持久化RDB与AOF
大家都知道,Redis之所以性能好,读写快,是因为Redis是一个内存数据库,它的操作都几乎基于内存.但是内存型数据库有一个很大的弊端,就是当数据库进程崩溃或系统重启的时候,如果内存数据不保存的话,里 ...
- Redis数据持久化,安全
一.redis数据持久化 由于redis是一个内存数据库,如果系统遇到致命问题需要关机或重启,内存中的数据就会丢失,这是生产环境所不能允许的.所以redis提供了数据持久化的能力. redis提供了两 ...
- Redis进阶:数据持久化,安全,在PHP中使用
一.redis数据持久化 由于redis是一个内存数据库,如果系统遇到致命问题需要关机或重启,内存中的数据就会丢失,这是生产环境所不能允许的.所以redis提供了数据持久化的能力. redis提供了两 ...
随机推荐
- 分布式系统ID
Leaf--美团点评分布式ID生成系统 前言 在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识.如在美团点评的金融.支付.餐饮.酒店.猫眼电影等产品的系统中,数据日渐增长,对数据分库分表后需 ...
- linux Samba 搭建
Samba is a free and open-source software package that provides seamless file and print services to S ...
- Java:创建对象小记
Java:创建对象小记 对 Java 中的创建对象的内容,做一个微不足道的小小小小记 创建对象的方式概述 使用 new 关键字:Person person = new Person(); 反射创建:使 ...
- Beta阶段第三次会议
Beta阶段第三次会议 完成工作 姓名 工作 难度 完成度 ltx 1.掌握小程序代码和相关知识2.构思小程序游客模式 轻 90% xyq 1.修改场地表格信息2.对原页面活动申请场地部分进行修改 轻 ...
- java调用js脚本语言
在我们开发的过程中,可能有这么一种情况,在java中需要取调用js方法完成一些事情.那么什么时候可能出现这种情况呢.比如我们使用爬虫模拟登录别的网站,但有些网站前台使用js对密码进行了加密处理,那么就 ...
- 零基础入门该如何实现C 语言面向对象编程(很有帮助)
零基础如果更快更好的入门C语言,如何在枯燥的学习中找到属于自己的兴趣,如果把学习当成一种事务性的那以后的学习将会很难有更深入的进步,如果带着乐趣来完成学习那将越学越有意思这样才会让你有想要更深入学习的 ...
- numpy数组的计算
1.数组的形状 查看数组的形状: import numpy as np a = np.array([[1, 2, 3, 4, 5], [5, 6, 7, 8, 9]]) print(a.shape) ...
- [个人开源]vue-code-view:一个在线编辑、实时预览的代码交互组件
组件简介 vue-code-view是一个基于 vue 2.x.轻量级的代码交互组件,在网页中实时编辑运行代码.预览效果的代码交互组件. 使用此组件, 不论 vue 页面还是 Markdown 文档中 ...
- tarjan知识点梳理
tarjan在图论中还是挺重要的.这里就简要的梳理一下tarjan的知识点. tarjan算法与无向图连通性. 首先说一下图中割点和桥的定义. 桥:也称割边,定义类似,在无向图中,若去掉某条边,导致整 ...
- SkyWalking部署及.Net Core简单使用
SkyWalking官方网站非常详细,以下只是本人学习过程的整理 一.SkyWalking简介 1.概念 SkyWalking是分布式系统的应用程序性能监视工具,专为微服务.云原生架构而设计 SkyW ...