Kubernetes基于StatefulSet部署Redis

Kubernetes基于StatefulSet部署Redis

      1、创建部署文件

      在K8S集群的Master节点中创建一个名称为redis-deployment-scale.yaml的部署文件,配置如下

# 数据存储卷
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: redis-pv-claim
  labels:
    app: redis
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi #持久卷的容量是 10 GB

---

# redis容器
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: redis-service
spec:
  selector:
    matchLabels:
      app: redis
  replicas: 2
  serviceName: redis
  template:
    metadata:
      labels:
        app: redis
    spec:
      containers:
      - name: redis
        image: redis:latest
        imagePullPolicy: Always
        resources:
          requests:
            cpu: "50m"
            memory: 512Mi
          limits:
            cpu: "50m"
            memory: 512Mi
        volumeMounts:
        - name: redis-data
          mountPath: /home/storageVolume/redis  # MySQL容器的数据默认都是存在这个目录

      volumes:
      - name: redis-data
        persistentVolumeClaim:
          claimName: redis-pv-claim

---

# 内部访问的无头服务
apiVersion: v1
kind: Service
metadata:
  name: redis-service
spec:
  selector:
    app: redis
  ports:
  - name: redis
    port: 6379
  clusterIP: None

---
# 外部访问的服务
apiVersion: v1
kind: Service
metadata:
  name: redis-external-service
spec:
  selector:
    app: redis
  ports:
  - name: redis
    protocol: TCP
    port: 6379
    targetPort: 6379
    nodePort: 30023
  type: NodePort

       2、配置文件说明

       存储卷:创建的名称为redis-pv-claim的PersistentVolume中申明了一个容量为10G,且访问权限为ReadWriteOnce的存储卷。

       容器:Redis服务是有状态的,所以需要创建StatefulSet类型的Redis服务,创建的名称为redis-service的容器,把名称为redis-pv-claim存储卷挂载到容器内部的/home/storageVolume/redis目录,同时开启2个副本,CPU限制在50m,内存限制在512Mi。

       服务:创建的名称为redis-service的Service是一个无头服务,K8S集群内部的其它容器需要通过无头服务才能访问到Redis服务;创建的名称为redis-external-service的Service是一个普通服务,该服务把节点的30023端口映射到容器的6379端口,在K8S集群外部访问节点的30023端口即可访问Redis服务,如果不需要从K8S集群外部访问Redis服务,则不需要创建该服务。

      3、执行部署文件

kubectl apply -f redis-deployment-scale.yaml

这样就完成部署。

      4、访问Redis服务

      我们本地直接链接K8S集群的redis服务

new.png

成功链接到K8S集群上部署到redis。

1条评论

  • 贴吧来的 2021-12-10 10:14:23

    学习了,666

    回复

发表评论