[k8s] Service LoadBalancer

이정훈·2023년 4월 25일
0

k8s

목록 보기
9/17
post-thumbnail
  • 로드밸런스의 서비스 타입은 기본으로 설치되어 있지 않다.
  • 플러그인을 설치해서 사용하고 싶은 것을 써라!
  • 외부 아이피를 발급을 받으려면 추가적인 설치가 필요!
    MetalILB 설치 및 설명

외부 접속

frontend(nginx)

apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
spec:
  selector:
    type: frontend
  ports:
  - port: 80
    targetPort: 80
  type: LoadBalancer

db(mysql)

apiVersion: v1
kind: Service
metadata:
  name: mysql-svc
spec:
  selector:
    type: db
  ports:
  - port: 3306
    targetPort: 3306
  type: LoadBalancer

  • 외부에서 접속하도록 설정했고 db들어가서 데이터를 입력해고 확인해 봤다.

loadbalance 확인

  • nignx 파드 2개 설치 후 로드밸런서로 분배해 봤다.
  • 파드만들때 라벨 설정해주고 서비스 만들 때 셀렉터에 라벨 네임 넣어주면 묶여서 사용

apache(django) - db(mysql)

dockerfile

FROM httpd:latest
RUN apt -y update
RUN apt -y install -y apache2 apache2-dev python3-pip libjpeg-dev python3.9-dev python3.9-distutils libmariadb-dev 
#libmysqldb-dev가 다운이 안되서 마리아디비사용 문제 없다!
WORKDIR /web
COPY . /web
RUN pip install mod-wsgi
# 아파치가 설치된 후에 설치가 가능!
RUN pip install -r requirements.txt
COPY ./httpd.conf /usr/local/apache2/conf/httpd.conf
# httpd.conf 파일이 복사될 곳을 잘 설정해줘야한다. docker 홈페이지에 나와있다.
CMD httpd-foreground

httpd.conf 참고!

pod

apiVersion: v1
kind: Pod
metadata:
  name: httpd-01
  labels:
    type: httpd
spec:
  containers:
  - name: container
    image: gugucone/httpd:1.3
    envFrom:
    - configMapRef:
        name: backend-cm
  • 기존에 만들어 두었던 backend configmap 사용 하였고, 라벨을 지정해서 로드밸런서가 되도록 서비스도 만들어 줬다.

업데이트

롤링업데이트

  • 수정정정

  • 파드가 있을 때 하나씩 버전을 업그레이드, 수동으로

  • 라벨을 사용하지 않고 생성 작동 확인 후 라벨을 추가
    why? 컨테이너가 실행 된다고 실행이 되는 것이 아니니깐!실행되는지 확인 후 라벨 추가

  • 1.3에서 httpd-04은 원래 있었는데 1.4에서 httpd-01-v.14가 잘 작동되면 1.3에 httpd-04를 지워주면서 추가하고 실행확인하고 삭제하고 점진적으로 업데이트하는 방식이다!

  • 컨트롤러에서 자동으로 설정할 수 있다.

블루그린배포


  • 수정정정 가입입입

  • 블루그룹과 그린그룹으로 나눈다.

  • 파드를 미리 다 만들어 놓고, 서비스에 연결되지 않도록 다른 라벨에 연결을 시켜 놓는다.

  • 업데이트 된 파드가 잘 작동하면 서비스에서 기존 셀렉터를 지우고 새롭게 만든 셀렉터(파드에서는 라벨!)를 넣어준다.

  • 키-값 은 다른 형태로 저장해줘야 한다.

두가지 방식으 차이는 파드 4개를 유지하고 있다. 자원이 넉넉하면 블루그린배포 방식으로 파드를 생성한 후에 배포를 해준다.(최대 8개 파드) 하지만 4개만을 유지해야한다. 그러면 롤릴업데이트 방식을 사용해야만 한다.(최대 5개 파드)

#!/bin/bash

while true; do
  curl 192.168.181.100 | grep -e 회원가입 -e 가입입입
  sleep 1
done
  • 확인용으로 sh문 만들어 놓은것이다.
profile
싱숭생숭늉

0개의 댓글