woonizzooni

kubernetes - redis 실행하기 (개발 환경용) 본문

Kubernetes

kubernetes - redis 실행하기 (개발 환경용)

woonizzooni 2020. 11. 5. 14:57

redis 클러스터 구성은 여기 대상이 아니고,

데이터 유실/삭제가 문제가 되지 않는 환경 (로컬/QA/테스트/개발클러스터 환경 등)에서의 단일 Pod구성의 redis임.

 

 

실행 자체의 의미만 있고,

redis 설정, 고가용성 구성 등은 이 곳에서 다루지 않음.

 

redis.yaml 작성

 - Namespace / ConfigMap / Service(노출 위해) / Pod 이상 4개 리소스를 활용하여 다음과 같이 작성.

apiVersion: v1
kind: Namespace
metadata:
  name: redis-ns
--
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: redis-ns
  name: my-redis-config
data:
  redis-config:  |
    maxmemory 20mb
    maxmemory-policy allkeys-lr
---
apiVersion: v1
kind: Service
metadata:
  namespace: redis-ns
  name: my-redis
  labels:
    app: redis
spec:
  selector:
    app: redis
  ports:
  - name: redis
    protocol: TCP
    port: 6379
    targetPort: 6379
---
apiVersion: v1
kind: Pod
metadata:
  namespace: redis-ns
  name: my-redis 
  labels:
      app: redis
spec:
  containers:
  - name: my-redis 
    image: redis:latest
    command:
      - redis-server
      - "/redis-master/redis.conf"
    env:
    - name: MASTER
      value: "true"
    ports:
    - containerPort: 6379
      name: redis
    volumeMounts:
    - mountPath: /redis-master-data
      name: data
    - mountPath: /redis-master
      name: config
  volumes:
    - name: data
      emptyDir: {}
    - name: config
      configMap:
        name: my-redis-config
        items:
        - key: redis-config
          path: redis.conf

 

> 실행하기

  $ kubectl apply -f ./redis.yaml

 

> 다른 워크로드에서 redis접속하기. 

  '이곳'을 참고하면 쿠버네티스에서의 DNS A/AAA레코드는

  my-svc.my-namespace.svc.cluster-domain.example 형식인데

  본문의 경우 my-redis.redis-ns.svc.cluster.local:6379 정도가 되겠다.

  redis-cli pod를 실행해서 접속해보자.

  $ redis-cli -h 주소 -p 6379 

  $ keys *

  $ monitor

  ..

 

> 삭제하기

  $ kubectl delete -f ./redis.yaml

 

 

 

[참고]

kubernetes.io/ko/docs/tutorials/configuration/configure-redis-using-configmap/

kubernetes.io/ko/docs/concepts/services-networking/dns-pod-service/

 

Comments