Rancher 2.5 安装的 k8s 集群中部署 Redis 6.2

965 阅读2分钟

白菜Java自习室 涵盖核心知识

基础环境搭建

基础环境的搭建请参考此文: # Rancher 2.5 部署单节点 k8s 集群,起飞的感觉

1. 宿主机搭建 NFS

NFS 是一个网络文件系统,它允许网络中的计算机之间通过 TCP/IP 网络共享资源。

(1) 通过 yum 安装

yum -y install rpcbind nfs-utils 

(2) 建立网上邻居共享目录

mkdir /mnt/share

(3) 配置这个共享目录

vim /etc/exports

写入下边的内容:

/mnt/share	192.168.138.0/24(rw,no_root_squash,async,fsid=0)

(4) 使配置内容生效

exportfs -r 

(5) 启动 rpcbind、nfs 服务及开机自启动

systemctl start rpcbind
systemctl start nfs
systemctl enable rpcbind
systemctl enable nfs

2. 新建命名空间

1650871591(1).jpg

在 "default" 项目下,起一个 "middleware" 的命名空间

1650871684(1).jpg

3. 设置 PV (Persistent Volumes)

注意:找不到这个菜单的,切回集群选项,不在项目选项里

1650870914(1).jpg

注意几个关键的配置,模式可以选择单节点/多节点

1650871090(1).jpg

4. 设置 PVC (Persistent Volumes Claim)

1650871238(1).jpg

注意几个关键的配置,选择刚才设置好的 PV 绑定

1654134874(1).jpg

5. 设置 Config Maps

1650872057(1).jpg

这里的作用其实就是把容器的配置映射到公共的 Config Map

1654135065(1).jpg

redis.conf 的内容根据真实需要配置,这里作者随便写个简单的

appendonly yes
cluster-enabled no
#cluster-config-file /var/lib/redis/nodes.conf
#cluster-node-timeout 5000
dir /var/lib/redis
port 6379

6. 设置 Redis 的 POD

1650873080(1).jpg

直接导入 yml 配置,类型 Deployment,内容会贴在下边,接触过的同学都多少会看的明白

1654135249(1).jpg

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis
  namespace: middleware
spec:
  #serviceName: redis
  replicas: 1
  selector:
    matchLabels:
      app: redis
      appCluster: redis-alone
  template:
    metadata:
      labels:
        app: redis
        appCluster: redis-alone
    spec:
      terminationGracePeriodSeconds: 20
      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 100
            podAffinityTerm:
              labelSelector:
                matchExpressions:
                - key: app
                  operator: In
                  values:
                  - redis
              topologyKey: kubernetes.io/hostname
      containers:
      - name: redis
        image: redis:6.2
        imagePullPolicy: IfNotPresent
        command:
          - "redis-server"
        args:
          - "/etc/redis/redis.conf"
          - "--protected-mode"
          - "no"
        resources:
          requests:
            cpu: "200m"
            memory: "250Mi"
        ports:
        - containerPort: 6379
          name: redis
          protocol: TCP
        volumeMounts:
        - name: conf
          mountPath: /etc/redis
        - name: data
          mountPath: /var/lib/redis
          subPath: data
      volumes:
      - name: conf
        configMap:
          name: redis-alone-conf
          items:
          - key: redis.conf
            path: redis.conf
      - name: data
        persistentVolumeClaim:
          claimName: redis-pvc

7. 设置 Redis 的 Service

1650940657(1).jpg

直接导入 yml 配置,类型 Service,内容会贴在下边,接触过的同学都多少会看的明白

1654136347(1).jpg

apiVersion: v1
kind: Service
metadata:
  name: redis-alone-access
  namespace: middleware
  labels:
    app: redis
spec:
  selector:
    app: redis
    appCluster: redis-alone
  ports:
  - name: redis-access
    protocol: TCP
    port: 6379
    targetPort: 6379
  type: NodePort

8. 查看状态与试用

1654137158(1).jpg

网络模式我们选择的是 NodePort,看到系统自动给我们分配了宿主机端口 31001

1654137231(1).jpg

至此我们用 Redis 客户端连接下试试

1654137384(1).jpg

1654137324(1).jpg