본문 바로가기

Study/kubernetes

kubernetes 강의 #2

Docker File

  • Docker file은 컨테이너 이미지 빌드를 자동화하기 위해 제공되는 메커니즘으로 쉽고 간단하며 명확한 구문을 갖는 텍스트 파일이다.
  • Instrunction: 높은 가독성을 위해 대문자 사용을 권장하며 구성 순서가 중요하다.
  • Docker File에서 이미지를 빌드하는 3단계 프로세스
  1. 1단계: 작업 디렉토리를 만든다.
  2. 2단계: Docker file 사양을 작성한다.
  3. 3단계: docker 명령어를 사용하여 이미지를 빌드한다.

Docker File Sample

COPY는 url를 소스로 받을 수 없음

 

FROM ~ USER 까지 Docker file 작성되는 내용

ENTRYPOINT ~ CMD 는 docker를 구동할 때 실행하는 명령어

 

Dockerfile(명세) 작성 -- build --> docker image -- run --> container

 

Docker 명령어

내 노드 안(node local)에 다운로드된 docker image들은 docker storages에 있음

 

실행중인 도커 전부 지우기

docker rm -f $(docker ps -qa)

 

Container Orchestration Features

  • 컨테이너 자동 배치 및 복제
  • 컨테이너 그룹에 대한 로드 밸런싱
  • 컨테이너 장애 복구
  • 클러스터 외부에 서비스 노출
  • 컨테이너 확장 및 축소
  • 컨테이너 서비스간 인터페이스를 통한 연결

Kubernetes (k8s)란?

  • 컨테이너 오케스트레이션 도구
  • "Open-Source software for automating deployment, scalling, and management of containerized application"
    "kubernetes는 컨테이너화된 어플리케이션을 자동으로 배포, 조정, 관리할 수 있는 오픈소스 플랫폼이다"
  • 실행하기 쉽지만 잠재적으로 통합은 복잡해질수 있음
    -> Pod 단위 / 여러 다른 기능은 어려움
  • 오픈소스이며 확장 가능 (지금도 수많은 Contributor 들에 의해서 업데이트가 진행중)
  • 베어메달 또는 가상머신 또는 퍼블릭 클라우드로 부터 서비스 형태로 제공받을 수 있다.
  • Azure(Azure Kubernetes Service), AWS(Elastic Kubernetes Service)
    managed service가 알아서 다 관리해주지만, 비용이 비싸다.

k8s cluster - AWS (EKS)

  • master: worker의 상태를 중앙에서 관리함, 여러가지 서비스가 존재함
  • worker : container가 실제로 실행됨

AWS Cloud Setup - IAM Group & User

사용자 계정 (IAM) 등록

 

AWS Cloud Setup - Container Registry

Elastic Container Registry 생성

gowebapp 과 gowebapp-mysql 두개의 레포지토리 생성하기

 

 

AWS CLI tool Configuration

  • AWS CLI 사용자 등록을 위한 자격증명(엑세스키 ID와 비밀 엑세스키) 입력
    aws configure [ --profile PROFILE-NAME ] # 생략 시, default 이름의 프로파일 생성
    region: ap-northeast-2
    format: json
  • AWS Profile 설정 확인

Authenticate Docker client to ECR Repo

  • 도커 클라이언트 인증

 

내 레지스트리 이름 '271153858532.dkr.ecr.ap-northeast-2.amazonaws.com'

271153858532.dkr.ecr.ap-northeast-2.amazonaws.com/gowebapp-hobi/gowebapp:v1

271153858532.dkr.ecr.ap-northeast-2.amazonaws.com/gowebapp-hobi/gowebapp-mysql:v1

 

EKS - Kubuctl 설치

  • kubectl 설치 및 구성
  • vim /etc/apt/sources.list.d/kubernetes.list

deb http://apt.kubernetes.io/ kubernetes-xenial main

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

apt-get update

apt-get install kubectl

 

  • kubectl 설치 확인
  • kubectl version --short --client

 

EKS - VPC 네트워크 생성

스택 생성

 

 

VPC 생성해주는 Templated으로 간단하게 생성함

 

SecurityGroups sg-020ef746a38435fb6 Security group for the cluster control plane communication with worker nodes -
SubnetIds subnet-050d1e46350e0c6c5,subnet-07d6eeebe9b6f0811 All subnets in the VPC -
VpcId vpc-03b042fed4b78ba35 The VPC Id -

 

 

 

 

kubectl 명령어 자동완성 설정

echo "source <(kubectl completion bash)" >> ~/.bashrc

 

alias k=kubectl

complete -F __start_kubectl k

 

 

master

1. API

2. scheduler

3. controller

4. etcd

 

kubectl get nodes

node 없음

 

node 생성

 

EC2를 node worker로 올릴 예정

1. amazonEKS worker 동작할 수 있는 역할

2. registry server access 하는 역할

3. CNI 우리가 배포하는 container를 network에 연결시키는 역할

 

 

 

container에 pod를 띄우기 위해서 namespace 지정해서 진행해야 함

access를 control하는 단위가 namespace이다!

'Study > kubernetes' 카테고리의 다른 글

kubernetes 강의 #4  (0) 2021.01.15
kubernetes 강의 #3  (0) 2021.01.14
kubernetes 강의 #1  (1) 2021.01.13