Redis单机
1、打镜像、构建redis镜像
2、测试redis镜像
3、创建PV和PVC、写一个yaml文件(指定一个存储)
4、运行redis服务yaml文件
5、验证redis数据读写
6、删除pod后重新创建验证
1、镜像
### 构建文件 /data/k8s-data/dockerfile/web/magedu/redis
###子镜像
registry.cn-hangzhou.aliyuncs.com/docker-jigaobo/centos:7.9.2009
harbor.51lianlian.cn/baseimages/jigaobo-centos-base:7.9.2009
###Dockerfile
#Redis Image
FROM harbor.51lianlian.cn/baseimages/jigaobo-centos-base:7.9.2009
MAINTAINER jigaobo "jigaobo@qq.com"
ADD redis-4.0.14.tar.gz /usr/local/src
RUN ln -sv /usr/local/src/redis-4.0.14 /usr/local/redis && cd /usr/local/redis && make && cp src/redis-cli /usr/sbin/ && cp src/redis-server /usr/sbin/ && mkdir -pv /data/redis-data
ADD redis.conf /usr/local/redis/redis.conf
EXPOSE 6379
#ADD run_redis.sh /usr/local/redis/run_redis.sh
#CMD ["/usr/local/redis/run_redis.sh"]
ADD run_redis.sh /usr/local/redis/entrypoint.sh
ENTRYPOINT ["/usr/local/redis/entrypoint.sh"]
###脚本
#!/bin/bash
/usr/sbin/redis-server /usr/local/redis/redis.conf
tail -f /etc/hosts
2、测试运行
docker run -it --rm -p 6379:6379 harbor.51lianlian.cn/magedu/redis:7.2.5
telnet 10.0.0.204 6379
3、创建PV和PVC
### 文件 redis-persistentvolumeclaim.yaml redis-persistentvolume.yaml
###PV
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: redis-datadir-pv-1
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
nfs:
path: /data/k8sdata/magedu/redis-datadir-1
server: 10.0.0.206 ###NFS或者ceph存储目录、或者阿里云NAS
###PVC
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: redis-datadir-pvc-1
namespace: magedu
spec:
volumeName: redis-datadir-pv-1
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
###创建NFS共享目录
10.0.0.206
mkdir /data/k8sdata/magedu/redis-datadir-1
4、redis服务yaml文件
### 存储数据挂载目录 /data/redis-data/
###yaml文件 /data/k8s-data/yaml/magedu/redis/redis.yaml
kind: Deployment
#apiVersion: extensions/v1beta1
apiVersion: apps/v1
metadata:
labels:
app: devops-redis
name: deploy-devops-redis
namespace: magedu
spec:
replicas: 1
selector:
matchLabels:
app: devops-redis
template:
metadata:
labels:
app: devops-redis
spec:
containers:
- name: redis-container
image: harbor.51lianlian.cn/magedu/redis:7.2.5
imagePullPolicy: Always
volumeMounts:
- mountPath: "/data/redis-data/" ###存储数据
name: redis-datadir
volumes:
- name: redis-datadir
persistentVolumeClaim:
claimName: redis-datadir-pvc-1
---
kind: Service
apiVersion: v1
metadata:
labels:
app: devops-redis
name: srv-devops-redis
namespace: magedu
spec:
type: NodePort
ports:
- name: http
port: 6379
targetPort: 6379
nodePort: 30011 ###集群外部端口
selector:
app: devops-redis
sessionAffinity: ClientIP
sessionAffinityConfig:
clientIP:
timeoutSeconds: 10800
5、验证数据
kubectl exec -it -n magedu pod-name
redis-cli
auth 123456
save aaa 111
save bbb 222
6、删除pod重建验证存储
kubectl delete pod -n magedu deploy-devops-redis-5c58db48fc-m46gf
kubectl exec -it -n magedu deploy-devops-redis-5c58db48fc-lf9w2 bash
redis-cli
auth 123456
keys *