본문 바로가기

IT 매일매일

k8s & Docker?

Pod란?


Pod는 컨테이너를 하나 이상 모아 놓은 것이다.

쿠버네티스 애플리케이션의 최소 단위이며, 강하게 결합된 여러 개의 컨테이너로 구성된 Pod도 있고(고급 활용 사례), 단일 컨테이너로만 이루어진 Pod도 있다.

 

매니페스트
매니페스트란 쿠버네티스의 오브젝트를 생성하기 위한 메타 정보를 YAML이나 JSON으로 기술한 파일

 

-실습-

 

도커에 로그인하여 빌드 + 푸쉬하고, 쿠버네티스에서 관리 + 통신확인 해보자!

 

YAML 파일 생성

 

리눅스 환경에서 

docker login

ID,PW 입력해서 접속

로그인 성공!

mkdir /hello                      #디렉토리 생성

먼저 8000포트!

vi Dockerfile         #도커파일 생성 (맨 앞글자 대문자로 해야함!)
FROM node:lts-slim
ADD ./hello.js /hello.js
EXPOSE 8000
CMD node /hello.js
vi hello.js
var http = require('http');
var content = function(req, resp) {
  resp.end("Hello Kubernetes!" + "\n8000");
  resp.writeHead(200);
}
var w = http.createServer(content);
w.listen(8000);
docker push 이미지 이름

이번엔 9000 포트!

vi Dockerfile         #도커파일 생성 (맨 앞글자 대문자로 해야함!)
FROM node:lts-slim
ADD ./hello.js /hello.js
EXPOSE 9000
CMD node /hello.js
vi hello.js

var http = require('http');
var content = function(req, resp) {
resp.end("Hello Kubernetes!" + "\n9000");
resp.writeHead(200);
}
var w = http.createServer(content);
w.listen(9000);

vi hello.js
docker push 이미지 이름

ID 이미지이름 포트번호

도커에서 확인해보면

푸쉬 완료!
도커 대시보드에서 신규 리소스 생성! 이지만 이미 만들고 찍었음 ㅎ
업로드!

apiVersion: v1
kind: Pod
metadata:
  name: hello-pod
  labels:
app: hello
spec:
  containers:
  - name: hello-container1
image: cloudcamp2022/hello:0.4
ports:
- containerPort: 9000
  - name: hello-container2
image: cloudcamp2022/hello:0.5
ports:
- containerPort: 8000

 

*행 제대로 맞춰서 입력!*

 

생성완료!
리소스 IP를 기억하고 오른쪽의 포드 접속!

명령어 입력

 

apt update

apt install curl net-tools

curl 22.22.104.14:8000

curl 22.22.104.14:9000

**컨테이너는 각각 격리 되어 있지만 같은 IP 안에서 다른 포트로 만들어진 컨테이너기 때문에,

한쪽 컨테이너에서 명령어로 프로그램 업데이트, 설치 등을 진행해도 양쪽에 동시 적용 되지 않는다.

 

하지만 열려있는 포트로 서로 통신은 가능하다!

'IT 매일매일' 카테고리의 다른 글

k8s Servise? (Cluster IP)  (0) 2023.04.24
k8s ConfigMap?  (0) 2023.04.24
k8s?  (0) 2023.04.20
Docker?  (0) 2023.04.18
AWS OpenSearch Service 도메인 생성  (0) 2023.03.23