분류 전체보기 (263) 썸네일형 리스트형 [Kubernetes] Controller 쿠버네티스 컨트롤러기본적인 개념은 여기에서ReplicaSet파드를 복제(replicate)하여 오토스케일링장애 대처 및 안정적 집합 유지AWS의 ASG와 같다.ReplicaSet 예제# replicaset.yaml# common APIapiVersion: apps/v1kind: ReplicaSetmetadata: name: replicasetspec: # 복제할 개수 replicas: 2 selector: # 해당 label을 기반으로 복제함 matchLabels: run: nginx-rs # 복제할 pod 정의 template: metadata: # label 지정. selector에서 참고함 labels: run: nginx-rs .. [Kubernetes] Pod Pod기본 설명은 해당 글에 정리파드에 명령을 전달할 때 컨테이너를 지정하지 않으면 default 컨테이너가 수신Pod StatusPending: Control Plane에 생성 명령 전달 완료ContainerCreating: 특정 노드에 스케줄링되어 컨테이너 생성 중Running: 실행 중Completed: 작업 완료 (배치 작업을 수행하는 Pod 한정)Error: Pod에 에러 발생CrashLoopBackOff: 지속적으로 에러가 발생하여 crash 반복Pod 실행 예제# nginx pod 실행kubectl run nginx --image nginx# 생성 확인kubectl get pod# 파드에 명령 전달kubectl exec nginx -- apt-get update# 컨테이너에 진입kubectl.. [Kubernetes] 리소스 리소스기본 개념 및 리소스 종류들은 해당 글에서Manifest file클러스터에서 리소스를 정의하고 관리하는 데 사용되는 구성 파일주로 YAML로 작성됨파드, 서비스, 볼륨 등의 리소스 생성, 수정, 삭제 등의 방법 지시파일 구조apiVersion: API 버전 정보kind: 리소스 종류metadata: 리소스 메타데이터 (이름, 네임스페이스, 레이블 등)spec: 리소스 상세 정보 (컨테이너, 포트 등)pod manifest 예시apiVersion: v1kind: Podmetadata: name: nginx-pod labels: app: nginxspec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80 M.. [Kubernetes] 클러스터 생성 ※ 세세한 설정을 생략하기 위해 GCP 환경에서 진행합니다.클러스터 생성 예제탐색 메뉴 - 쿠버네티스 엔진 - API 사용 탐색 메뉴 - 쿠버네티스 엔진 - 클러스터 - 만들기 - STANDARD 클러스터로 전환 위치 유형을 영역 us-central1-c로 지정하고 나머지는 기본값 유지 후 만들기 클러스터 생성 확인 완료 GCP CloudShell 환경 설정 예제우상단 터미널 아이콘 클릭 및 Project ID 복사클러스터 이름 및 위치 확인 # 현재 shell에 프로젝트 등록gcloud config set project # 현재 shell에 클러스터 등록gcloud container clusters get-credentials --region # 클러스터의 노드 확인 (3개 있어야 함.. [Kubernetes] 개념 배포 변화전통적인 배포: 애플리케이션을 물리 서버에서 실행. 고비용가상화된 배포: 단일 물리 서버가 VM으로 여러 개의 애플리케이션을 실행컨테이너 개발: VM과 유사하지만 확장성이 좋고 비용 절감, 속도 측면에서 유리함.쿠버네티스컨테이너화된 워크로드와 서비스를 관리하기 위한 플랫폼사람 대신 MSA의 수많은 컨테이너를 관리하는 플랫폼이미지 다운, 이미지 구동, 로드 밸런서 연결, 상태 유지 관리 등등의 일을 외주한다.YML파일인 Manifest를 명세해서 쿠버네티스에 전달하여 사용 가능쿠버네티스 아키텍처Cluster: Control Plane + Worker Nodes로 구성된 하나의 단위Control Plane(Master Node): 의사 결정. 정적인 개수가 정해져 있음Data Plane(Worker.. [Docker] 도커 스토리지 도커 스토리지개념은 해당 글에서 확인 가능관련 명령어docker container inspect --format "{{ json .Mounts }}" | jq: 컨테이너에 마운트된 스토리지 정보 확인Docker Volume일반적으로 사용되는 도커 스토리지Docker에서 관리CLI로 명시적 관리 가능호스트 파일 시스템 구조에 의존 XLinux OS의 경우 /var/lib/docker/volumes에 저장됨처음 마운트할 때는 host 디렉토리를 container에 덮어 씀.마이그레이션에 적합관련 명령어docker volume create: 볼륨 생성. --name 옵션으로 이름 부여 가능docker volume inspect : 볼륨 상세 정보 표시docker volume ls: 도커 볼륨 목록 확인do.. [Docker] 도커 네트워크 도커 네트워크기본 개념은 이 글에서docker network는 DNS resolution을 제공하여 컨테이너 이름(및 ID)을 자동으로 IP 주소로 변환함.관련 명령어docker network ls: 네트워크 목록 확인 (표준 설치된 3개의 기본 네트워크가 존재)docker network inspect : 네트워크 구성 세부 정보docker network create --driver : 사용자 지정 네트워크 생성브릿지 네트워크docker run에서 네트워크를 지정하지 않으면 기본적으로 docker0 bridge로 설정브릿지 드라이브로 생성된 모든 네트워크는 linux bridge라고 함네트워크 확인# network 확인docker network ls# linux bridge를 확인하기 위해 bridg.. [Docker] 웹사이트 배포 웹 사이트 배포 예제해당 프로젝트를 fork하여 사용하였습니다. # git으로 프로젝트 clone 및 경로 이동git initgit clone cd linux_tweet_app# 환경 변수로 도커 ID를 저장해서 간편하게 사용 (안해도 됨)export DOCKER_ID=# 프로젝트를 기반으로 이미지 빌드. 이미지 이름은 DockerID/애플리케이션 이름/버전이 관례인듯 함docker image build --tag $DOCKER_ID/linux_tweet_app:1.0 .# -d(--detach)로 생성된 이미지를 백그라운드에서 실행. # -p(--publish)로 외부 네트워크 8080포트에서 들어오는 입력을 내부 컨테이너 80포트로 포트포워딩docker run -d -p 8080:80 --name l.. 이전 1 2 3 4 ··· 33 다음