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