redis使用本地磁盘做pvc
1 local 卷介绍
https://kubernetes.io/zh-cn/docs/concepts/storage/volumes/
https://kubernetes.io/zh-cn/docs/concepts/storage/storage-classes/#local
local
卷所代表的是某个被挂载的本地存储设备,例如磁盘、分区或者目录。
local
卷只能用作静态创建的持久卷。不支持动态配置。
与 hostPath
卷相比,local
卷能够以持久和可移植的方式使用,而无需手动将 Pod
调度到节点。系统通过查看 PersistentVolume
的节点亲和性配置,就能了解卷的节点约束。
然而,local
卷仍然取决于底层节点的可用性,并不适合所有应用程序。 如果节点变得不健康,那么 local
卷也将变得不可被 Pod
访问。使用它的 Pod
将不能运行。 使用 local
卷的应用程序必须能够容忍这种可用性的降低,以及因底层磁盘的耐用性特征而带来的潜在的数据丢失风险。
2 部署
设置 label
kubectl label node qa-gpu026 redis=true
如果不设置 label ,那么 pvc 会一直处于 Pending 状态,报错如下
0/3 nodes are available: 3 node(s) didn't find available persistent volumes to bind.
redis 部署文件
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: redis-sc
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
reclaimPolicy: Retain---
apiVersion: v1
kind: PersistentVolume
metadata:name: redis-pv
spec:capacity:storage: 100GiaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: redis-schostPath:path: {{redis_base_path}}/redistype: DirectoryOrCreatenodeAffinity: # Local Persistent Volume(本地持久化卷),必须使用 nodeAffinity 来跟某个具体的节点绑定required:nodeSelectorTerms:- matchExpressions:- key: redisoperator: Invalues:- "true"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: redis-pvcnamespace: infra
spec:storageClassName: redis-scaccessModes:- ReadWriteOnceresources:requests:storage: 10Gi---
apiVersion: v1
kind: Service
metadata:name: redisnamespace: infralabels:app: redis
spec:type: ClusterIPports:- name: redisport: 6379targetPort: 6379#nodePort: 30379- name: metricsport: 9121targetPort: 9121#nodePort: 31121selector:app: redis---
kind: ConfigMap
apiVersion: v1
metadata:name: redis-confignamespace: infralabels:app: redis
data:redis.conf: |-dir /dataport 6379bind 0.0.0.0appendonly yesprotected-mode norequirepass {{redis_password}}pidfile /data/redis-6379.pid
---
apiVersion: apps/v1
kind: Deployment
metadata:name: redisnamespace: infralabels:app: redis
spec:replicas: 1selector:matchLabels:app: redistemplate:metadata:annotations:prometheus.io/scrape: "true"prometheus.io/port: "9121"labels:app: redisspec:nodeSelector:redis: "true"# 进行初始化操作,修改系统配置,解决 Redis 启动时提示的警告信息initContainers:- name: system-initimage: {{init_image}}imagePullPolicy: IfNotPresentcommand:- "sh"- "-c"- "echo 2000 > /proc/sys/net/core/somaxconn && echo never > /sys/kernel/mm/transparent_hugepage/enabled"securityContext:privileged: truerunAsUser: 0volumeMounts:- name: sysmountPath: /sysreadOnly: falsecontainers:- name: redisimage: {{redis_image}}command:- "sh"- "-c"- "redis-server /usr/local/etc/redis/redis.conf"ports:- containerPort: 6379resources:limits:cpu: 4memory: 64Girequests:cpu: 0.1memory: {{memory_request}}livenessProbe:tcpSocket:port: 6379initialDelaySeconds: 300timeoutSeconds: 1periodSeconds: 10successThreshold: 1failureThreshold: 3readinessProbe:tcpSocket:port: 6379initialDelaySeconds: 5timeoutSeconds: 1periodSeconds: 10successThreshold: 1failureThreshold: 3volumeMounts:- name: datamountPath: /data- name: configmountPath: /usr/local/etc/redis/redis.confsubPath: redis.conf- name: redis-exporterimage: {{redis_exporter_image}}args: ["-redis.password", "{{redis_password}}"]resources:requests:cpu: '0.1'memory: 100Miports:- containerPort: 9121volumes:- name: datapersistentVolumeClaim:claimName: redis-pvc- name: configconfigMap:name: redis-config- name: syshostPath:path: /sys
3 结果
sc
root@qa-gpu026:~# kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
redis-sc kubernetes.io/no-provisioner Delete WaitForFirstConsumer false 16h
sc-mysql-single-node kubernetes.io/no-provisioner Delete WaitForFirstConsumer false 16h
swfs-master-sc kubernetes.io/no-provisioner Delete WaitForFirstConsumer false 16h
swfs-volume-sc kubernetes.io/no-provisioner Delete WaitForFirstConsumer false 16h
zk-local-volume kubernetes.io/no-provisioner Delete WaitForFirstConsumer false 16h
root@qa-gpu026:~#
pv
root@qa-gpu026:~# kubectl get pv redis-pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
redis-pv 100Gi RWO Retain Bound infra/redis-pvc redis-sc 16h
root@qa-gpu026:~#
pvc
root@qa-gpu026:~# kubectl -n infra get pvc redis-pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
redis-pvc Bound redis-pv 100Gi RWO redis-sc 16h
root@qa-gpu026:~#
4 问答
问:本地磁盘可以做sc(StorageClass)么
答:可以,有 local storage class,不过,这个 local 稍微有点特殊,他是 lazy provision 的(volumeBindingMode: WaitForFirstConsumer),需要创建 pod 引用才可以(waiting for first consumer to be created before binding)处于 Bound 状态
问:和nfs,cfs有啥区别
答:local 和 host path 一样,是直接做本地 mount,其他都是 网络 fs,走 fuse 挂的
注意:Local Persistent Volume(本地持久化卷),必须使用 nodeAffinity 来跟某个具体的节点绑定
redis使用本地磁盘做pvc相关推荐
- PE里在计算机本地磁盘大小,没有U盘如何在电脑本地磁盘制作一个PE系统
那假如没有U盘的话,不想去买一个但是又想用到PE系统里的功能,其实是可以利用本地磁盘里的一个分盘制作成PE系统的,今天就教大家如何制作. 先说一下,在本地磁盘做一个PE系统盘有什么好处呢? 假如电脑进 ...
- quartz持久化是指_面试必问:Redis 持久化是如何做的?RDB 和 AOF 对比分析
从这篇文章开始,我们来介绍Redis高可用相关的机制.Redis要想实现高可用,主要有以下方面来保证: 数据持久化 主从复制 自动故障恢复 集群化 这篇文章我们先介绍Redis的高可用保障的基础:数据 ...
- Redis学习总结(21)——Redis持久化是如何做的?RDB和AOF对比分析
前言 Redis要想实现高可用,主要有以下方面来保证: 数据持久化 主从复制 自动故障恢复 集群化 Redis的高可用保障的基础:数据持久化.因为Redis的主从复制和自动故障恢复,都需要依赖Redi ...
- java面试(二十六)--(1)J2EE中常用名词(2)讲一下redis的主从复制怎么做的?(3)请谈谈你对Javaweb开发中的监听器的理解?(4)按之字形顺序打印二叉树(5)内部类大全
1.J2EE中常用名词 web容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使 JSP,SERVLET直接跟容器中的环境变量接**互,不必关注其它系统问题.主要有WEB服务器来 ...
- centos查看历史指令记录_CentOS 系统通过 curlftpfs 挂载 FTP 服务器为本地磁盘
为了做个稳定的图床,缙哥哥也是拼了.计划通过 FTP 挂载对象存储为本地磁盘,以便更好的保护数据.这里就做个 Linux 的 CentOS 操作系统,安装了宝塔面板(这个有没有不影响)的情况下,使用 ...
- AIX本地磁盘io优化
什么是磁盘的IO? 当一块磁盘被格式化后,会被分成上百个磁道(tracks),每个磁道又将被分割成许多扇区(sectors),一般都是512 bytes.上下一串盘片中,相同半径的磁道所组成的一个圆柱 ...
- 计算机本地用户删除后怎么恢复,电脑本地磁盘盘符被隐藏C盘不见了恢复方法...
随着对电脑的不断操作与使用,难免会遇到这样或那样的故障问题,有用户遇到硬盘盘符(驱动盘盘符)不见了,也就是本地磁盘C.D.E盘符被隐藏,这给我们管理文件资料与软件带来很大的麻烦,出现这种现象很多用户都 ...
- 如何低格台式计算机的硬盘,最新[电脑如何格式化]台式机如何格式化本地磁盘.doc...
[入党申请书格式] 本地磁盘上放太多东西会拖慢电脑运行速度,那么台式机如何格式化本地磁盘呢?下面是台式机如何格式化本地磁盘,希望对大家有帮助~~ 台式机格式化本地磁盘的方法 方法/步骤 1用" ...
- 远程桌面连接无法显示本地磁盘终极解决
有时服务器上导出文件到客户端磁盘时无法显示本地磁盘(确定磁盘映射已经勾选的,瑞友常规检查都没有问题情况下). ①如果是所有客户端都看不到本地磁盘,此方法在服务器设置. ②如果个别客户端出现看不到本地磁 ...
最新文章
- Windows Azure Pack与SCVMM标签解析分享
- java-模拟出栈入栈
- leetcode206 反转链表
- 索尼首次展示其Airpeak电影摄制无人机
- 使用CentOS光盘镜像作为YUM源安装rpm软件包
- RedHat6使用centos6的yum源
- sqlserver联合查询注入
- win10卸载软件_【电脑软件】win10自带浏览器|教你一招,如何完美将它卸载!
- html中collapse代码怎么写,如何使用CSS中的border-collapse属性
- win10浏览器账户退出
- 阿里发布虚拟美女“俪知”,会说东北话、四川话、河南话和粤语等
- 郑州大学计算机系1996级校友,公共管理学院成功举办96级公共关系专业学生毕业20周年返校活动...
- Polyspace应用:Bug Finder检测代码漏洞
- 基于多传感器的AUV控制系统
- Mac电脑使用:隐藏苹果电脑桌面的硬盘图标
- 【Python黑科技】获取每日一句美句,并定时发送邮件到指定邮箱(保姆级图文+实现代码)
- 【Mac使用技巧】Mac中文输入法打不出来句号
- 有道翻译机,能让环球之旅一路畅通吗?
- 1-3NF,BCNF,最小依赖集,模式分解,判断是否为无损分解
- 第九章 keyhookdll windows程序设计王艳平版