k8s 部署redis
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: redis
labels:
app: redis
annotations:
security.alpha.kubernetes.io/unsafe-sysctls: net.core.somaxconn=65535
spec:
#securityContext:
#privileged: true
serviceName: redis
replicas: 1
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
#net:
#core:
#somaxconn=511:
spec:
containers:
- name: redis
image: redis:latest
imagePullPolicy: IfNotPresent
resources:
limits:
cpu: 450m
memory: 4000Mi
requests:
cpu: 400m
memory: 4000Mi
env:
- name: TZ
value: Asia/Shanghai
command: ["redis-server","/usr/local/etc/redis/redis.conf","--appendonly yes"]
ports:
- containerPort: 6379
volumeMounts:
- name: vol-conf
mountPath: /usr/local/etc/redis
- name: vol-data
mountPath: /data
volumes:
- name: vol-conf
configMap:
name: redis-config
- name: vol-data
persistentVolumeClaim:
claimName: redis-pvc
command中启动命令 redis-server /user/local/etc/redis/redis.conf 其实是读取了name 为redis-config的configMap中的值。其中 volumeMounts.vol-data为挂载容器内 /data到 redis-pvc中。
persistentVolumeClaim中的claimName引用了 redis-pvc。
关于如何创建 pv,pvc,请参考以下操作
k8s创建pv,pvc
PV是对底层网络共享存储的抽象,将共享存储定义为一种“资源。PVC则是用户对存储资源的一个“申请”。就像Pod“消费”Node的资源一样,PVC能够“消费”PV资源。PVC可以申请特定的存储空间和访问模式。
pv底层依赖于NFS (network file system),首先来安装一下NFS。
-
安装命令 yum -y install nfs-utils rpcbind 在NFS服务端上创建共享目录/data并设置权限 mkdir -p /data chmod 666 /data
- 编辑export文件
vim /etc/exports
添加配置 /data 服务器ip/24(rw,no_root_squash,no_all_squash,sync)
exportfs -r
3.启动NFS
service rpcbind start
service nfs start
k8s中声明一个PV
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv
spec:
storageClassName: "nfs"
capacity:
storage: 10G
accessModes:
- ReadWriteMany
nfs:
path: /data
server: 服务器ip
k8s中声明一个PVC
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: redis-pvc
spec:
storageClassName: "nfs"
accessModes:
# 需要使用和 PV 一致的访问模式
- ReadWriteMany
# 按需分配资源
resources:
requests:
storage: 1G