hello云胜

技术与生活

0%

K8S上部署一个redis

部署单节点redis

使用的镜像是官方的redis:5.0.5-alpine

查看一下镜像,

1
docker inspect redis:5.0.5-alpine

确认一些关键信息

image-20230615110211901

redis确实是官方的redis。

默认的启动命令是redis-server。

工作目录是/data

这些信息可以帮助我们确认,配置文件等重要数据的挂载位置。

附上yaml文件

前提准备

  1. 挂载卷使用pvc,提前创建好storageClass。我是使用nfs作了provisioner
  2. 创建自己的namespace

redis-configmap.yaml

1
2
3
4
5
6
7
8
9
apiVersion: v1
kind: ConfigMap
metadata:
name: redis-config
namespace: ks-system
data:
redis-config: |
dir /data/data
requirepass HS76afsdb67

redis-pvc.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: redis-pvc
namespace: ks-system
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
storageClassName: nfs-client
volumeMode: Filesystem

redis-deploy.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: ks-system
name: redis
labels:
app: redis
spec:
replicas: 1
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
volumes:
- name: redis-data
persistentVolumeClaim:
claimName: redis-pvc
- name: config
configMap:
name: redis-config
items:
- key: redis-config
path: redis.conf
containers:
- name: redis
image: redis:5.0.5-alpine
command:
- "sh"
- "-c"
- "redis-server /data/conf/redis.conf"
ports:
- containerPort: 6379
protocol: TCP
resources:
limits:
cpu: "1"
volumeMounts:
- name: redis-data
mountPath: /data/data
- name: config
mountPath: /data/conf

redis-svc.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
apiVersion: v1
kind: Service
metadata:
name: redis
namespace: ks-system
labels:
app: redis
spec:
type: NodePort
ports:
- name: redis-port
port: 6379
targetPort: 6379
selector:
app: redis