Docker
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服务
成功链接到K8S集群上部署到redis。
学习了,666
回复