kubernetes集群部署redis5.0.6單機版


1、首先,通過Config Map來對容器中redis應用的配置進行管理,如自定義配置文件、密碼、日志路徑等

redis-standalone-conf.yml

apiVersion: v1
kind: ConfigMap
metadata:
  name: redis-standalone-conf
data:
  redis.conf: |
        bind 0.0.0.0
        port 6379
        requirepass 111111
        appendonly yes
        cluster-config-file nodes-6379.conf
        pidfile /redis/log/redis-6379.pid
        cluster-config-file /redis/conf/redis.conf
        dir /redis/data/
        logfile /redis/log/redis-6379.log
        cluster-node-timeout 5000
        protected-mode no

創建configmaps

kubectl apply -f redis-standalone-conf.yml

2、上面部署的redis,數據是存儲在當前部署節點的本地的文件系統,現在講存儲改成NFS,創建pv和pvc

  首先創建NFS

注:預先在NFS服務器上創建目錄:/home/data/nfs/pai/redisstandalone

# 創建掛載目錄
mkdir /home/data/nfs/pai/redisstandalone -p

cat >>/etc/exports <<EOF
/home/data/nfs/pai/redisstandalone *(rw,sync,no_root_squash)
EOF

exportfs -r 
systemctl restart rpcbind && systemctl restart nfs-server

redis-standalone-pv.yml

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: redis-standalone-pv
spec:
  capacity:
    storage: 200G
  accessModes:
    - ReadWriteMany
  storageClassName: nfsredis
  nfs:
    server: 192.168.33.157 # NFS服務器地址
    path: "/home/data/nfs/pai/redisstandalone"  # NFS目錄

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: redis-standalone-pvc
spec:
  volumeName: redis-standalone-pv
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 100Gi
  storageClassName: nfsredis

創建pv和pvc

kubectl apply -f redis-standalone-pv.yml

3、由於redis是一個有狀態服務,因此,現需要創建一個StatefulSet,並把數據掛載到宿主機上。

redis-standalone-statefulset.yml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: redis-standalone
spec:
  replicas: 1
  serviceName: redis-standalone
  selector:
    matchLabels:
      name: redis-standalone
  template:
    metadata:
      labels:
        name: redis-standalone
    spec:
      #nodeName: gggd12-111-128-105 # 指定調度節點
      initContainers:
      - name: init-redis-standalone
        image: busybox
        command: ['sh', '-c', 'mkdir -p /redis/log/;mkdir -p /redis/conf/;mkdir -p /redis/data/']
        volumeMounts:
        - name: redis-standalone-pvc
          mountPath: /redis/
      containers:
      - name: redis-standalone
        image: redis:5.0.6
        imagePullPolicy: IfNotPresent
        command:
        - sh
        - -c
        - "exec redis-server /redis/conf/redis.conf"
        ports:
        - containerPort: 6379
          name: redis
          protocol: TCP
        volumeMounts:
        - name: redis-config
          mountPath: /redis/conf/
        - name: redis-standalone-pvc
          mountPath: /redis/
      volumes:
      - name: redis-config
        configMap:
          name: redis-standalone-conf
      - name: redis-standalone-pvc
        persistentVolumeClaim:
          claimName: redis-standalone-pvc

4、通過創建service,提供對外訪問pod的服務接口

redis-standalone-service.yml

kind: Service
apiVersion: v1
metadata:
  labels:
    name: redis-standalone
  name: redis-standalone
spec:
  type: NodePort
  ports:
  - name: redis
    port: 6379
    targetPort: 6379
    nodePort: 31379
  selector:
    name: redis-standalone

創建service

kubectl apply -f redis-standalone-service.yml

 

5、驗證redis是否部署成功

查看pod、pv、pvc、service、ConfigMap運行狀態

kubectl get pod,svc,pv,pvc,cm

測試遠程連接

  注:這里的host為宿主機IP  

  -h 指定 遠程redis主機的IP地址(pod所在的k8s節點)

  -p 指定 遠程redis連接的端口 (service暴露的端口)

  -a 指定 遠程redis連接的密碼 (ConfigMap文件中設置的密碼)

redis-cli -h 192.168.33.244 -p 31379 -a 111111

最后,更新完了重新驗證redis即可。

登錄NFS服務器,查看相應的文件掛載信息

[root@k8s-master redis]# tree /home/data/nfs/pai/redisstandalone/
/home/data/nfs/pai/redisstandalone/
├── conf
├── data
│   └── appendonly.aof
└── log
    ├── redis-6379.log
    └── redis-6379.pid

3 directories, 3 files

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM