1、PV创建
在nfs或者其他类型后端存储创建pv,首先创建共享目录
[root@nfs ~]# cat /etc/exports/k8s/redis-sentinel/0 *(rw,sync,no_subtree_check,no_root_squash)/k8s/redis-sentinel/1 *(rw,sync,no_subtree_check,no_root_squash)/k8s/redis-sentinel/2 *(rw,sync,no_subtree_check,no_root_squash)
下载yaml文件
https://github.com/dotbalo/k8s/
创建pv,注意Redis的空间大小按需修改
[root@k8s-master01 redis-sentinel]# kubectl create -f redis-sentinel-pv.yaml
[root@k8s-master01 redis-sentinel]# kubectl get pv | grepredis
pv-redis-sentinel-0 4Gi RWX Recycle Bound public-service/redis-sentinel-master-storage-redis-sentinel-master-ss-0 redis-sentinel-storage-class 16h
pv-redis-sentinel-1 4Gi RWX Recycle Bound public-service/redis-sentinel-slave-storage-redis-sentinel-slave-ss-0 redis-sentinel-storage-class 16h
pv-redis-sentinel-2 4Gi RWX Recycle Bound public-service/redis-sentinel-slave-storage-redis-sentinel-slave-ss-1 redis-sentinel-storage-class 16h
2、创建namespace
默认是在public-service中创建Redis哨兵模式
kubectl create namespace public-service
# 如果不使用public-service,需要更改所有yaml文件的public-service为你namespace。# sed -i "s#public-service#YOUR_NAMESPACE#g" *.yaml
3、创建ConfigMap
Redis配置按需修改,默认使用的是rdb存储模式
[root@k8s-master01 redis-sentinel]# kubectl create -f redis-sentinel-configmap.yaml
[root@k8s-master01 redis-sentinel]# kubectl get configmap -n public-service
NAME DATA AGE
redis-sentinel-config 2 17h
注意,此时configmap中redis-slave.conf的slaveof的master地址为ss里面的Headless Service地址。
4、创建service
service主要提供pods之间的互访,StatefulSet主要用Headless Service通讯,格式:statefulSetName-{0..N-1}.serviceName.namespace.svc.cluster.local
- serviceName为Headless Service的名字
- 0..N-1为Pod所在的序号,从0开始到N-1
- statefulSetName为StatefulSet的名字
- namespace为服务所在的namespace,Headless Servic和StatefulSet必须在相同的namespace
- .cluster.local为Cluster Domain
如本集群的HS为:
Master:
redis-sentinel-master-ss-0.redis-sentinel-master-ss.public-se