首页 > 数据库 >k8s用StatefulSet部署redis

k8s用StatefulSet部署redis

时间:2024-09-12 11:51:02浏览次数:11  
标签:StatefulSet name data redis sentinel k8s config metadata

redis-config.yaml  (配置文件)

apiVersion: v1
kind: ConfigMap
metadata:
  name: redis-config
data:
  redis.conf: |

    # Redis general configuration

​    bind 0.0.0.0
​    protected-mode no
​    port 6379
​    dir /data
​    appendonly yes

  sentinel.conf: |
    sentinel monitor mymaster redis-master 6379 2
    sentinel down-after-milliseconds mymaster 5000
    sentinel failover-timeout mymaster 10000
    sentinel parallel-syncs mymaster 1

redis-master-statefulset.yaml (主)

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: redis-master
spec:
  serviceName: "redis-master"
  replicas: 1
  selector:
    matchLabels:
      app: redis
      role: master
  template:
    metadata:
      labels:
        app: redis
        role: master
    spec:
      containers:
      - name: redis
        image: redis:5.0.7
        command: ["redis-server", "/data/redis.conf"]
        volumeMounts:
        - name: redis-data
          mountPath: /data
        - name: config
          mountPath: /data/redis.conf
          subPath: redis.conf
      volumes:
      - name: config
        configMap:
          name: redis-config
  volumeClaimTemplates:

  - metadata:
    name: redis-data
    spec:
      storageClassName: "nfs-client-storageclass"
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 1Gi

redis-slave-statefulset.yaml (从)

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: redis-slave
spec:
  serviceName: "redis-slave"
  replicas: 2
  selector:
    matchLabels:
      app: redis
      role: slave
  template:
    metadata:
      labels:
        app: redis
        role: slave
    spec:
      containers:
      - name: redis
        image: redis:5.0.7
        command: ["redis-server", "/data/redis.conf", "--slaveof", "redis-master", "6379"]
        volumeMounts:
        - name: redis-data
          mountPath: /data
        - name: config
          mountPath: /data/redis.conf
          subPath: redis.conf
      volumes:
      - name: config
        configMap:
          name: redis-config
  volumeClaimTemplates:

  - metadata:
    name: redis-data
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: "nfs-client-storageclass"
      resources:
        requests:
          storage: 1Gi

redis-service.yaml (端口)

apiVersion: v1
kind: Service
metadata:
  name: redis-master
spec:
  ports:

  - port: 6379
    targetPort: 6379
      selector:
    app: redis
    role: master

---

apiVersion: v1
kind: Service
metadata:
  name: redis-slave
spec:
  ports:

  - port: 6379
    targetPort: 6379
      selector:
    app: redis
    role: slave

---

apiVersion: v1
kind: Service
metadata:
  name: redis-sentinel
spec:
  ports:

  - port: 26379
    targetPort: 26379
      selector:
    app: redis
    role: sentinel

 redis-sentinel-statefulset.yaml (哨兵)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-sentinel
spec:
  replicas: 3
  selector:
    matchLabels:
      app: redis
      role: sentinel
  template:
    metadata:
      labels:
        app: redis
        role: sentinel
    spec:
      # 使用 initContainer 复制并修改权限
      initContainers:
      - name: copy-config
        image: busybox:1.27
        command: ['sh', '-c', 'cp /data/sentinel.conf /tmp/sentinel.conf && chmod 644 /tmp/sentinel.conf']
        volumeMounts:
        - name: config
          mountPath: /data
        - name: sentinel-config
          mountPath: /tmp
     # Redis Sentinel 容器
       containers:
       - name: sentinel
         image: redis:5.0.7
         command: ["redis-sentinel", "/tmp/sentinel.conf"]
         volumeMounts:
         - name: sentinel-config
           mountPath: /tmp
      # 卷定义
       volumes:
       - name: config
         configMap:
           name: redis-config
       - name: sentinel-config
         emptyDir: {}

标签:StatefulSet,name,data,redis,sentinel,k8s,config,metadata
From: https://blog.csdn.net/Hai990218/article/details/142152596

相关文章

  • K8S入门学习(三):Kubeadm安装K8S集群(单主)
    一、系统相关配置1.1、系统基础配置相关1、配置静态IP地址(注意各节点地址)[root@localhost~]#cd/etc/sysconfig/network-scripts/[root@localhost~]#cpifcfg-ens33ifcfg-ens33.bak[root@localhost~]#vimifcfg-ens33BOOTPROTO="static"#更改等号后面为......
  • Redis、Nginx、SQLite、Elasticsearch等开源软件成功的原因及它们对IT技术人员的启示
    引言这些年在自研产品,对于如何做好产品进行了一些思考。随着开源软件的蓬勃发展,许多开源项目已经成为IT行业的核心组成部分。像Redis、Nginx、SQLite、Elasticsearch这些知名的开源软件,已经成为了开发者的首选工具。这些开源软件不仅在技术性能上取得了重大突破,还在社区建设、生......
  • k8s之ingress
    Service&IngressService基于iptables或ipvs实现的四层负载均衡机制不支持基于URL等机制对HTTP/HTIPS协议进行高级路由、超时/重试、基于流量的灰度等高级流量治理机制难以将多个Seryice流量统一管理Ingress由IngressAPI和IngressController共同组成前者负责以k8s......
  • Redis 入门 -- 系列文章
    随笔分类 -  Redis入门 Redis入门-C#|.NETCore客户端库六种选择Redis入门-五大基础类型及其指令学习Redis入门-图形化管理工具如何选择,最全分类Redis入门-安装最全讲解(Windows、Linux、Docker)Redis入门-简介 出处:https://www.cnbl......
  • 部署K8S集群(五):配置文件之Pod配置文件
    ●Pod是Kubernets中的基本执行单位,可以包含一个或多个容器。●Pod提供了容器间的网络和存储共享。apiVersion:v1kind:Podmetadata:name:my-podlabels:app:my-appspec:containers:#容器1:web页面#容器名称-name:web-container#容器......
  • k8s dashboard token 生成/获取
    创建示例用户在本指南中,我们将了解如何使用Kubernetes的服务帐户机制创建新用户、授予该用户管理员权限并使用与该用户绑定的承载令牌登录仪表板。对于以下每个和的代码片段ServiceAccount,ClusterRoleBinding您都应该将它们复制到新的清单文件(如)中,dashboard-adminuser.yaml并......
  • redis 主从复制和哨兵模式
    一、概述Redis支持三种集群模式,分别为主从模式、哨兵模式和Cluster(集群)模式。主从模式:从节点异步的从主节点复制数据,这种架构主节点故障后无法自动切主。类似于mysql的主从复制。哨兵模式:该模式在主从复制基础上加了一个哨兵集群负责监控主节点和从节点。如果检测到主节点故障......
  • 结合GPT使用k8s部署awx-oprator
    这个错误表明你尝试添加的Helm仓库URL无法访问,或者index.yaml文件不存在,可能是AWXOperator的Helm仓库已经变更或不再支持这个URL。根据AWXOperator项目的最新文档,它不再使用Helm作为主要的安装方式,而是通过直接应用Kubernetes自定义资源(CRD)和Operator来安装......
  • k8s环境搭建
    1.创建主机,设置ip,hostname,firewalldselinux,Netmanage2.设置主机之间的ssh免密3.三个节点yum源配置1.docker2.k8s3.清空以及创建缓存yumcleanall&&yummakecache4.四个源镜像aliyun,epel,kubernetes,docker-ce4.三个节点主机映射5.三个节点安装常......
  • 深入理解 Redis 的文件事件处理器
    概述Redis的文件事件处理器是基于Reactor模式实现的,内部采用IO多路复用程序来同时监听多个套接字,当被监听的套接字准备好执行连接应答(accept)、读取(read)、写入(write)、关闭(close)等操作时,与操作相对应的文件事件就会产生,此时文件事件处理器就会调用套接字之前关联好的事......