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

kubernetes集群部署redis5.0.6单机版的更多相关文章

  1. 部署Bookinfo示例程序详细过程和步骤(基于Kubernetes集群+Istio v1.0)

    部署Bookinfo示例程序详细过程和步骤(基于Kubernetes集群+Istio v1.0) 部署Bookinfo示例程序   在下载的Istio安装包的samples目录中包含了示例应用程序. ...

  2. kubernetes集群部署

    鉴于Docker如此火爆,Google推出kubernetes管理docker集群,不少人估计会进行尝试.kubernetes得到了很多大公司的支持,kubernetes集群部署工具也集成了gce,c ...

  3. Kubernetes集群部署关键知识总结

    Kubernetes集群部署需要安装的组件东西很多,过程复杂,对服务器环境要求很苛刻,最好是能连外网的环境下安装,有些组件还需要连google服务器下载,这一点一般很难满足,因此最好是能提前下载好准备 ...

  4. 基于Kubernetes集群部署skyDNS服务

    目录贴:Kubernetes学习系列 在之前几篇文章的基础,(Centos7部署Kubernetes集群.基于kubernetes集群部署DashBoard.为Kubernetes集群部署本地镜像仓库 ...

  5. Kubernetes 集群部署(2) -- Etcd 集群

    Kubenetes 集群部署规划: 192.168.137.81  Master 192.168.137.82  Node 192.168.137.83  Node 以下在 Master 节点操作. ...

  6. Gitlab CI 集成 Kubernetes 集群部署 Spring Boot 项目

    在上一篇博客中,我们成功将 Gitlab CI 部署到了 Docker 中去,成功创建了 Gitlab CI Pipline 来执行 CI/CD 任务.那么这篇文章我们更进一步,将它集成到 K8s 集 ...

  7. Docker学习-Kubernetes - 集群部署

    Docker学习 Docker学习-VMware Workstation 本地多台虚拟机互通,主机网络互通搭建 Docker学习-Docker搭建Consul集群 Docker学习-简单的私有Dock ...

  8. kubernetes 集群部署

    kubernetes 集群部署 环境JiaoJiao_Centos7-1(152.112) 192.168.152.112JiaoJiao_Centos7-2(152.113) 192.168.152 ...

  9. linux运维、架构之路-Kubernetes集群部署

    一.kubernetes介绍        Kubernetes简称K8s,它是一个全新的基于容器技术的分布式架构领先方案.Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部 ...

  10. Kubernetes集群部署DNS插件

    准备 kube-dns 相关镜像 准备 kube-dns 相关 yaml 文件 系统预定义的 RoleBinding 配置 kube-dns 相关服务 检查 kube-dns 功能 kube-dns ...

随机推荐

  1. 4.10 x64dbg 反汇编功能的封装

    LyScript 插件提供的反汇编系列函数虽然能够实现基本的反汇编功能,但在实际使用中,可能会遇到一些更为复杂的需求,此时就需要根据自身需要进行二次开发,以实现更加高级的功能.本章将继续深入探索反汇编 ...

  2. 【调制解调】SSB 单边带调幅

    说明 学习数字信号处理算法时整理的学习笔记.同系列文章目录可见 <DSP 学习之路>目录,代码已上传到 Github - ModulationAndDemodulation.本篇介绍 SS ...

  3. PhotoShop AI 爱国版保姆级安装和使用

    上篇Photoshop AI 令人惊叹的生成式填充介绍了 PhotoShop AI 的新特性功能,有人以为我收了 Adobe 公司的钱帮它们做推广~~~.别不信,事实上确有其事,某平台审核直接把它删掉 ...

  4. C语言指针--二级指针

    文章目录 前言 一.什么是二级指针 二.二级指针的使用 1.二级指针的定义 2.二级指针的赋值 3.二级指针的使用 3.1 用二级指针输出一级指针的地址 3.2 用二级指针输出一级指针中的内容 3.3 ...

  5. [数据分析与可视化] Python绘制数据地图4-MovingPandas入门指北

    MovingPandas是一个基于Python和GeoPandas的开源地理时空数据处理库,用于处理移动物体的轨迹数据.它提供了一组强大的工具,可以轻松地加载.分析和可视化移动物体的轨迹.通过使用Mo ...

  6. 【博客重构之路】webman-admin安装指南

    原文地址[博客重构之路]webman-admin安装指南 视频地址[bilibili] webman是什么 webman是一款基于workerman开发的高性能HTTP服务框架.webman用于替代传 ...

  7. webpack dev server 与 hot module replace 提高开发效率

    通过 webpack 命令编译源代码时,如果我们对源代码进行了修改,需要重新执行命令才能看到编译后的效果. 这样在开发中非常的影响效率,如果存在一种方式,当文件被修改时,webpack 自动监听重新编 ...

  8. FreeSWITCH添加自定义endpoint之媒体交互

    操作系统 :CentOS 7.6_x64 FreeSWITCH版本 :1.10.9   之前写过FreeSWITCH添加自定义endpoint的文章: https://www.cnblogs.com/ ...

  9. 《深入理解Java虚拟机》笔记:垃圾收集算法和HotSpot的算法实现

    一.垃圾收集算法 由于垃圾收集算法的实现涉及大量的程序细节,而且各个平台的虚拟机操作内存的方法又各不相同,因此本节不打算过多地讨论算法的实现,只是介绍几种算法的思想及其发展过程. 垃圾收集算法概要 1 ...

  10. 从浅入深了解.NET Core MVC 2.x全面教程【第二章】

    二.Logging 1.诊断中间件 命名空间:Microsoft.AspNetCore.Diagnostics 报告信息并处理异常 2.诊断中间件 UseDeveloperExceptionPage: ...