[k8s] pod 1

이정훈·2023년 4월 20일
0

k8s

목록 보기
3/17
post-thumbnail
post-custom-banner
  • k8s의 가장 작은 단위라고 생각하자!
  • 하나의 컨테이너를 가지고 있고 그 이상을 가지고 있을 수 있다.
    예를들어 gunicorn을 설치하고 이걸 모니터링하기 위해 node-exporter도 같이 설치를 해야하니깐?
  • 그렇게 만들어진 것들이 하나의 pod라고 한다.

docker-hub 사용

  • 간단하게 docker 이미지파일을 만들어서 허브에 업로드하고 이 이미지를 사용해서 컨테이너를 구성해보자!

이미지 파일 만들기

  • master든 worker든 상관없다.
    mkdir hello 폴더하나 만들고 그 안에 Dockerfile hello.js 파일을 만들어 준다.
  • Dockerfile 포트 8000이랑 9000 두개 만들거라서 하나만들고 빌드하고 수정해서 빌드하고
FROM  node:lts-slim
ADD ./hello.js /hello.js
EXPOSE 9000
CMD node /hello.js
  • hello.js 파일은 아래와 같이 여기도 8000이랑 9000 같이 만들어준다.
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);
  • build 해주자!
docker build --tag gugucone/hello:8000 .
docker build --tag gugucone/hello:9000 .

허브에 업로드

  • 일단 로그인을 해준다.
    docker login username이랑 password를 입력
docker push gugucone/hello:8000
docker push gugucone/hello:9000
  • 만들어 놓은 것들 허브에 업로드해주기!

pod

  • 우린 k8s를 만들고 대시보드까지 완성을 했으니깐 대시보드를 이용해서 작성
  • 여기서 yaml 파일을 작성하고 업로드하면 만들 수 있다. 우린 pod를 만들것이다.
  • docker-hub에 올린 2개의 이미지 파일을 가지고 2개의 컨테이너를 가진 pod를 만들고자 한다.
apiVersion: v1
kind: Pod
metadata:
  name: hello-pod
  labels:
    app: hello
spec:
  containers:
  - name: hello-container1
    image: gugucone/hello:9000
    ports:
    - containerPort: 9000
  - name: hello-container2
    image: gugucone/hello:8000
    ports:
    - containerPort: 8000
  • yaml파일이라서 들여쓰기 조심해줘야한다!

  • hello-pod 이름으로 허브에 있는 이미지로 2개의 컨테이너가 각각 만들어진 것을 확인 할 수 있다.
  • 여기서 레이블이 있는데 이거 라벨을 설정해줘서 우리가 service를 연결할 때 누구를 할거냐!를 해줘야하는데 필요하다. 안하면 복잡해져서 찾기어려운건 나니깐
  • 라벨은 여러개 넣을 수 있다!

service

apiVersion: v1
kind: Service
metadata:
  name: svc-1
spec:
  selector:
    app: hello
  ports:
  - port: 8000
    name: "hello8000"
  - port: 9000
    name: "hello9000"
  • 서비스는 간단하게 pod들이 네트워크와 연결이 될 수 있도록 해주기 위해서 설정해준다라고 생각하자
  • 여기서 selector는 누구를 수집할거냐?? 이건데 이때 내가 설정해줬던 레이블, 라벨을 찾아가도록 해주는 것이다.

  • 아무곳에서 확인하면 이렇게 나온다.
  • 여기서 사용한 IP는 서비스로 묶고 그 클러스터의 IP이다.
  • 처음에 방화벽이 활성화 되어 있어도 잘 찾아서 Hello Kubernetes! 해줬는데... 갑자기 안되서 다시 방화벽을 비활성화하니깐 됐다... 방화벽??
profile
싱숭생숭늉
post-custom-banner

0개의 댓글