상세 컨텐츠

본문 제목

클라우드 컴퓨팅과 도커, 쿠버네티스의 이해 과목 이수

클라우드+마이크로서비스

by 김일국 2025. 3. 28. 11:56

본문

올해 직업훈련교사 보수교육으로 [클라우드 컴퓨팅과 도커, 쿠버네티스의 이해] 과목을 이수하였습니다.

교재는 위키북스의 도커&쿠버네티스( https://wikibook.co.kr/dkkb/ ) 로 수업이 진행 되었습니다.

실습환경은 윈도우11에 도커데스크탑 최신 버전(docker.exe, docker-compose.exe kubectl.exe 내장됨) 설치.

 - 실습환경 관련 정보 : https://languagestory.tistory.com/126

## 수업의 핵심내용 미리보기(아래)

- 도커 명령어로 컨테이너 수동 실행(아래)

레드마인에서 사용할 mysql 컨테이너 등록+실행
docker run --name mysql000ex13 -dit --net=redmine000net2 -e MYSQL_ROOT_PASSWORD=myrootpass -e MYSQL_DATABASE=redmine000db -e MYSQL_USER=redmine000kun -e MYSQL_PASSWORD=rkunpass mysql
레드마인(사이트 관리) 컨테이너 등록+실행
docker run --name redmine000ex14 -dit --net=redmine000net2 -p 8086:3000 -e REDMINE_DB_MYSQL=mysql000ex13 -e REDMINE_DB_DATABASE=redmine000db -e REDMINE_DB_USERNAME=redmine000kun -e REDMINE_DB_PASSWORD=rkunpass redmine

컨테이너 생성 시 바인드 마운트 변경(도커엔진에서 관리되지 않는 호스트 외부에 볼륨 저장소 생성)
C:\Users\user\Documents\apa_folder>docker run -d --name apa000ex20 -p 8090:80 -v C:\Users\user\Documents\apa_folder:/usr/local/apache2/htdocs httpd
컨테이서 생성 시 볼륨 마운트(도커엔진에서 관리하는 호스트 내부에 볼륨명 지정하면 mysql서버 업그레이드시 기존 데이터를 그대로 사용가능한 장점)
docker run -d --name mycon -v myvol:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1234 mysql (볼륨명을 지정하지 않으면, 도커가 임의의 이름으로 볼륨을 지정한다.)
현재 폴더의 앱을 flaskimg명으로 도커 이미지 만들기 -> 도커 컨테이너 만들고 실행하기(8000호스트포트:8080컨테이너포트)
docker build -t flaskimg . -> docker run -d -p 8000:8080 flaskimg (웹브라우저에서 8000포트로 접근가능하다.)
참고, 
위 도커 빌드 명령 중 -t 옵션은 (도커 image tag 명을 지정하기 위해 사용)
위 도커 실행 명령 중 -d 옵션은 (detach 약자) 컨테이너를 백그라운드로 실행 시킨다.
호스트포트는 실제 외부에서 서비스에 접속하는 포트이고, 컨테이너 포트는 도커엔진 내부에서 컨테이너 사이에 접근가능한 포트이다.)

- 도커 컴포즈로 2개 이상의 컨테이너 일괄 실행(아래)

 1). 워드프레스와 mysql 연동을 위한 docker-compose.yml 파일 작성 예,

version: "3"
services:
  mysql000ex11:
    image: mysql:5.7
    networks: 
      - wordpress000net1
    volumes:
      - mysql000vol11:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: myrootpass
      MYSQL_DATABASE: wordpress000db
      MYSQL_USER: wordpress000kun
      MYSQL_PASSWORD: wkunpass
  wordpress000ex12:
    depends_on: 
      - mysql000ex11
    image: wordpress
    networks:
      - wordpress000net1
    volumes:
      - wordpress000vol2:/var/www/html
    ports:
      - 8085:80
    environment:
      WORDPRESS_DB_HOST: mysql000ex11
      WORDPRESS_DB_NAME: wordpress000db
      WORDPRESS_DB_USER: wordpress000kun
      WORDPRESS_DB_PASSWORD: wkunpass
networks:
  wordpress000net1:
volumes:
  mysql000vol11:
  wordpress000vol2:

 2-1). 레드마인과 mysql 연동을 위한 docker-compose.yml 파일 작성 예,(아래 조건)
   컨테이너 이름 : rmserver/dbserver  
   네트워크 이름 : rmnet
   볼륨명 : dbvol  (dbserver만 적용)
 2-2). 결과 확인
    docker-compose.yml 파일 내용(아래)

version: "3"
services:
  dbserver:
    image: mysql:5.7
    networks: 
      - rmnet
    volumes:
      -dbvol:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: myrootpass
      MYSQL_DATABASE: redmine000db
      MYSQL_USER: redmine000kun
      MYSQL_PASSWORD: rkunpass
  rmserver:
    depends_on: 
      - dbserver
    image: redmine
    networks:
      - rmnet
    ports:
      - 8086:3000
    environment:
      REDMINE_DB_MYSQL: dbserver
      REDMINE_DB_DATABASE: redmine000db
      REDMINE_DB_USERNAME: redmine000kun
      REDMINE_DB_PASSWORD: rkunpass
networks:
  rmnet:
volumes:
  dbvol:


위 파일 작성 후 docker-compose up -d  명령으로 수행 후 http://localhost:8086 으로 레드마인 메인화면에 접속하면 된다.

## 쿠버네티스는 도커 데스크 탑에 내장된 것을 사용한다.(아래)

일단, 쿠버네티스 시스템을 대시보드 없이 GUI로 확인 하는 방법은 VS Code 의 Kuvernetes플러그인을 (MS사 제공) 설치하여 볼 수 있다.( 플러그인을 설치하면 바로 윈도우 사용자홈폴더/.kube/config 파일을 자동으로 읽어 현재 등록된 클러스터 화면이 보인다. 기술 참조 : https://freedeveloper.tistory.com/401 )

추가로, 확장된 CLI 명령으로는(아래)

kubectl top node 명령어로 클라우드 플랫폼에서 여러 노드(Pods)의 자원 사용상태를 체크할 수 있다.

단, 도커 데스크 탑 기반에서는 metrics-server 가 도커 엔진에 설치되어 있어야 사용가능하다.(아래 순서대로)

 1). Metrics Server 설치( 브라우저로 아래 URL로 접근하여 componets.yaml 파일을 다운받은 후 
      https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

    위 파일을 수정 (도커데스크탑에서 설치 시 TLS 인증서 관련 문제가 있기 때문에 아래 파라미터 코드 추가)

     kubectl apply -f componets.yaml 명령어로 설치 한다.

 2). 정상 확인 (아래 명령어로 metrics-server 파드의 1/1 running 상태를 확인)

  kubectl get pods -n kube-system

 3). 위 처럼 CLI 창말고, GUI 방식을 사용하고 싶다면, 쿠버네티스 대시보드 또는 프로메테우스 라는 서비스를 설치하고 사용할 수 있다. 관련 기술 참조 : https://kimjingo.tistory.com/232

Ps. 아래는 이수증

네트워크 프로그래밍, 클라우드 활용 과목을 강의하는 저에게는 아주 유익한 시간 이었습니다.

관련글 더보기

댓글 영역