安装nfs
我这边就选择k8s-master作为nfs存储了
yum install -y nfs-utils
/nfs/volumes *(async,insecure,no_root_squash,no_subtree_check,rw)
mkdir -p /nfs/volumes
systemctl start rpcbind & systemctl enable rpcbind systemctl start nfs-server & systemctl enable nfs-server
showmount -e k8s-master
cd /nfs/volumes mkdir data_redis mkdir conf_redis
|
创建PV
apiVersion: v1 kind: PersistentVolume metadata: name: pv-redis spec: volumeMode: Filesystem capacity: storage: 2Gi accessModes: - ReadWriteMany nfs: path: /nfs/volumes/data_redis server: k8s-master
|
创建PV
kubectl apply -f pv-redis.yaml
|
创建pvc
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-redis spec: accessModes: - ReadWriteMany volumeMode: Filesystem resources: requests: storage: 2Gi
|
创建pvc
kubectl apply -f pvc-redis.yaml
|
创建configmap
kubectl create configmap redis-configmap --from-file=/nfs/volumes/conf_redis/redis.conf
|
创建headless
apiVersion: v1 kind: Service metadata: name: headless-redis spec: clusterIP: None selector: app: statefulset-redis ports: - port: 6379
|
创建headless
kubectl apply -f headless-redis.yaml
|
创建statefulset
apiVersion: apps/v1 kind: StatefulSet metadata: name: statefulset-redis spec: serviceName: headless-redis selector: matchLabels: app: statefulset-redis template: metadata: labels: app: statefulset-redis spec: volumes: - name: redis-conf configMap: name: redis-configmap - name: data-redis persistentVolumeClaim: claimName: pvc-redis containers: - name: redis image: redis:5.0.5 imagePullPolicy: IfNotPresent ports: - containerPort: 6379 volumeMounts: - mountPath: /data/redis.conf name: redis-conf subPath: redis.conf - mountPath: /data name: data-redis command: - redis-server - /data/redis.conf
|
创建headless
kubectl apply -f statefulset-redis.yaml
|
问题
在部署statefulset的时候出现下面这个问题,pod的状态一会completed,一会CrashLoopBackOff


解决:花了很多时间去研究,describe和log指令也没有提供有用的报错信息,最后发现是配置文件的daemonize配置项的问题,因为redis.conf是我之前改过的,daemonize默认是no,我改成了yes会出现这种问题,所以daemonize保持默认的no即可。