[Kubernetes] Pod, LoadBalancer를 사용한 MariaDB 외부 접근 연결 설정

 

 

[Kubernetes] 쿠버네티스
MariaDB Pod 배포 및 LoadBalancer를 통한 외부 접근 방법



MariaDB Pod 배포 및 LoadBalancer를 통한 외부 접근 방법

 

1. DB 컨피그맵 생성

apiVersion: v1
kind: ConfigMap
metadata:
  name: db-cm
data:
  MARIADB_ROOT_PASSWORD: qwer1234
  MARIADB_DATABASE: web

 

 

2. PV 생성

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-01
spec:
  capacity:
    storage: 2G
  accessModes:
  - ReadWriteOnce
  local:
    path: /node-vol
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - {key: kubernetes.io/hostname, operator: In, values: ['worker02']}

 

 

3. PVC  생성

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-01
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 1G
  storageClassName: ""

 

 

4. db파드 생성

# db-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: db-pod
  labels:
    type: db  # 이 레이블이 서비스의 selector와 일치해야 합니다
spec:
  nodeSelector:
    kubernetes.io/hostname: worker02
  containers:
  - name: mariadb
    image: mariadb:latest
    volumeMounts:
    - name: pvc-pv
      mountPath: /var/lib/mysql
    envFrom:
    - configMapRef:
        name: db-cm
    ports:
    - containerPort: 3306
  volumes:
  - name: pvc-pv
    persistentVolumeClaim:
      claimName: pvc-01

 

 

 

 

5. db파드를 포함한 서비스 생성

# db-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: db-svc
spec:
  selector:
    type: db  # Pod의 레이블과 일치해야 합니다
  ports:
  - port: 3306
    targetPort: 3306
  type: ClusterIP  # 클러스터 내부에서만 접근 가능

 

 

 

6. ubuntu pod 생성(db접속 확인)

apiVersion: v1
kind: Pod
metadata:
  name: ubuntu
spec:
  containers:
  - name: ubuntu
    image: ubuntu:20.04
    command:
      - sleep
      - infinity

 

 

 

ubuntu pod안에서 mariadb 사용하여 체크

유축 상단 창을 클릭하면 ubuntu 파드 안으로 접속이 가능하다.

 

apt update

 

apt install mariadb-client

mariadb client 설치

 

db-pod ip 확인

 

db-pod 주소로 접속확인

 

 

db-svc ip ,이름 확인

 

서비스의 클러스트 ip로 접속 확인

 

서비스 이름으로 접속 확인

 

 

7. db-svc2 생성 : 로드밸런서 적용, db-pod 포함

# db-svc2.yaml
apiVersion: v1
kind: Service
metadata:
  name: db-svc2
spec:
  selector:
    type: db  # Pod의 레이블과 일치해야 합니다
  ports:
  - port: 3306
    targetPort: 3306
  type: LoadBalancer  # 외부에서 접근 가능

 

생성된 외부 엔드포인트 ip 확인

 

외부 ip로 workbench에서 db접속 확인