서비스 Service - 파드의 IP 구성정보 -> 파드마다 특정 IP 주소를 할당받음 (고정되지 않음) 매번(재부팅/파드재시작 자동으로 생성) 변경 - 어플리케이션 접근을 위해 고정된 주소가 필요 (어플리케이션 하나 당 IP 주소 하나) => 컨트롤러에 의해 실행되는 파드들 전체에 대해 하나 - 개념 : 파드 / 외부 간의 통신을 위해 고정된 IP 주소를 할당하는 오브젝트 -> 노드에 구애받지 않고 여러 파드(동일 컨트롤러)에 주소 하나 파드에 대한 로드벨런싱 기능 등을 제공 파드 하나에 여러 개의 서비스가 연결될 수도 있다. 컨트롤러의 셀렉터 = 파드 레이블 서비스의 셀렉터 = 파드 레이블 컨트롤러의 셀렉터 != 서비스의 셀렉터 ( 꼭 같을 필요는 없음 ) - 종류 1. ClusterIP - 내부용(파드끼리.. MLOps/K8S 3년 전
컨트롤러 (Daemonset, Statefulset, Job, CronJob) Daemonset - 클러스터 전체 노드에 특정 파드 실행할 때 사용하는 컨트롤러 -> 모니터링용 데몬 등 클러스터 전체에 항상 실행시켜두어야 하는 파드에 사용 - 업데이트 정책 변경 가능 RollingUpdate : 수정 시 바로 반영 (파드를 자동으로 재생성) OnDelete : 수정 시 반영X (파드를 수동으로 삭제하면 재생성 시 반영) - 노드 추가/제거 시 파드도 자동으로 생성 및 삭제 - 노드셀렉터라는 값을 설정하면 노드를 지정할 수 있음 (모든 리소스 해당) Statefulset - 기본적으로 파드는 상태를 저장하지 않는다. - 파드의 상태를 유지 ( 파드이름, 네트워크, 스토리지 ) - 파드 배포 및 복제본 개수 유지 (스케일링) -> 파드의 순서 / 고유속성을 유지 - 각각의 파드마다 고.. MLOps/K8S 3년 전
컨트롤러 (ReplicaSet, Deployment) 컨트롤러 - 개념 : 파드를 관리하는 오브젝트 - 파드 관리 방식 : Label과 Selector 사용 ( Label은 파드에 설정. Selector는 컨트롤러에 설정 ) - 종류 : 레플리카셋 디플로이먼트 데몬셋 스테이트풀셋 잡 크론잡 레플리카셋 - 파드의 정해진 수 만큼 복제하고 관리 - 레플리케이션 컨트롤러의 업그레이드 버전 (균등기반+집합기반) - 기존버전 (레플리케이션 컨트롤러 사용) - 기능 : 업데이트 + 복제본 관리(등호기반) - 현재 (레플리카셋) - 기능 : 복제본 관리 (집합기반) - 업데이트 기능은 디플로이먼트로 관리 => 디플로이먼트를 통해서 레플리카셋 및 파드를 생성하고 관리: 실전에서는 주로 Deployment 사용 레플리카셋 실습 디플로이먼트 - 레플리카셋을 관리해주는 컨트롤.. MLOps/K8S 3년 전
파드 관리 파드 - 쿠버네티스에서 컨테이너를 관리하는 최소 단위 - 컨테이너가 하나 이상 - 하나의 목적을 위해서 하나의 파드를 구성 - 목적을 위해서 필요한 기능이 여러 가지 - 파드의 목적으로는 컨테이너 간의 리소스를 서로 공유 - 여러 컨테이너(동일목적)를 동시에 제어 파드 라이프 사이클 1. Pending : 스케줄링, 이미지 다운로드 및 컨테이너 실행 (모든 컨테이너가 실행되기 전) 2. Running : 모든 컨테이너가 정상 실행 3. Succeeded / Failed : 작업이 성공적으로 완료, 실패 4. Unknown : 파드의 상태를 확인할 수 없을 때 프로브 - 파드의 상태를 확인해주는 방식/상태 -> 유지 - 종류 livenessProbe : 컨테이너의 실행여부를 확인해서 오류 발생 시 재실행 .. MLOps/K8S 3년 전
아키텍쳐 및 명령어 기본 도커 - 하나의 시스템에서 컨테이너를 하나씩 관리 도커 컴포즈 - 하나의 시스템에서 컨테이너를 여러 개를 묶어서 관리 쿠버네티스 - 여러 대의 시스템에서 여러 컨테이너를 묶어서 관리 쿠버네티스 개념 - 여러 시스템에서 동작하는 여러 개의 컨테이너들을 세트로 관리 구성환경 - 온프레미스 / 클라우드 ( 직접구성 / 관리형 쿠버네티스 ) => 관리형 쿠버네티스 사용 시 장점은 사용하기 편리, 초기 구성 비용이 없음 단점은 유지비용이 증가, 세부항목에 대한 관리가 어려움 설치 방식 - kops : 클라우드(AWS)에서 쿠버네티스 환경 구성 - kubeadm : 온프레미스 환경에서 쿠버네티스를 구성 (명령어를 사용) => 버전 관리가 어려움 - kubespray : kubeadm + ansible => 각종 플.. MLOps/K8S 3년 전
도커 네트워크 도커 네트워크 - 도커는 컨테이너를 이용해서 어플리케이션을 격리된 환경에서 실행 - 대부분의 어플리케이션은 외부의 사용자에게 서비스 제공이 목적 - 서비스를 제공하기 위해 네트워크 구성이 필요 - 어플리케이션 (컨테이너)끼리 서로 연동 시에도 필요 - 가상 브릿지와 가상 네트워크 인터페이스 등을 사용 - 컨테이너 생성 시 기본적으로 bridge 네트워크로 설정 네트워크 종류 (driver) 1) 기본제공 - bridge: 내부적으로 컨테이너끼리 서로 연결되어 있으며 가상브릿지 (docker0)를 통해 외부와 연결 (추가 가능) - 기본 설정일 경우 외부에서 컨테이너로 접속 제한 - 필요에 따라 docker run 명령어에서 -p 옵션으로 포트포워딩 설정 - host: 호스트 (물리적인 시스템)의 네트워크.. MLOps/Docker 3년 전
도커 볼륨 관리 실습 1. 컨테이너에 디렉토리 연결 docker run -v HOST Path:CONTAINER Path --name NAME ubuntu:latest 2. 볼륨 생성 및 연결 1) contents 라는 이름의 볼륨 생성 docker volume create contents # /var/lib/docker/volumes/contents 2) httpd 이미지로 컨테이너 실행 docker container run -d -v contents:/usr/local/apache2/htdocs:ro httpd:latest 3) 볼륨에서 파일 확인 및 curl 명령어로 컨테이너 접속 확인 ls /var/lib/docker/volumes/contents/_data/ docker container inspect NAME cu.. MLOps/Docker 3년 전
도커 이미지 및 도커파일 관리 실습 1. 이미지 백업 1) 현재 모든 이미지를 test.tar 파일로 백업 docker image save test.tar -o XXXX # 태그 생략 시 모든 태크 2) 모든 이미지 삭제 docker image prune -a 3) test.tar 파일 이용해서 모든 이미지 복원 docker image load -i test.tar 2. 이미지 수정 1) httpd:lastest 이미지를 web 이라는 이름의 컨테이너로 실행 docker container run --name web -d httpd:latest 2) web 컨테이너에 쉘을 실행하고 index.html 파일 내용 수정 docker container exec web bash 3) 쉘을 종료하고 web 컨테이너를 httpd:custom 이름의 이.. MLOps/Docker 3년 전
도커 컨테이너 관리 실습 1. 이미지 다운로드 - httpd:latest, centos:7, ubuntu:latest docker image pull httpd docker image pull centos:7 docker image pull ubuntu 2. 다운로드 한 이미지 확인 docker image ls # docker image inspect ubuntu:latest 3. 이미지를 이용해서 컨테이너 실행 1) create 명령어와 start 명령어로 centos:7 이미지 실행 - 이름: centos docker container create -it --name centos -it centos:7 docker container start centos # 만약 start 명령어 사용 시 -ai 옵션으로 연결한다면, Ctr.. MLOps/Docker 3년 전
Apache 웹 서버 1. Web Server 1) 소개 - 네트워크를 이용해서 사용자가 요청한 컨텐츠를 제공 (정적인 컨텐츠; html, image 등) - 동적인 컨텐츠 제공 (별도의 구성 또는 어플리케이션 서버 / 데이터베이스 등을 연동) -> WAS - Apache / Nginx / IIS 등의 구성방식이 존재 # 기본구성 # 패키지 설치 yum -y install httpd # 시작 systemctl enable httpd.service systemctl start httpd firewall-cmd --add-service=http --permanent firewall-cmd --reload # 확인 firefox http://127.0.0.1 2) 3 Tier 구성 - 클라이언트가 요청하면 응답해줄 웹서버 - 웹서.. MLOps/Linux 3년 전