Kubernetes - (2) express 서버 테스트

임쿠쿠·2022년 4월 23일
0

kubernetes

목록 보기
2/8
post-thumbnail

1. Dockerizing Node application

테스트 소스코드 : https://github.com/kimkevin90/kubernetes_express

1) 도커 Hub에 노드 앱 배포

이미지 생성

docker build . -t 이미지명
docker build . -t limkevin1313/kubernetes_hello

도커 허브에 배포

docker push 이미지명
docker push limkevin1313/kubernes_hello

2) 이미지로 Deployment 생성

Deployment 생성

k create deployment Deployment명 --image=이미지명
k create deployment kube-express --image=limkevin1313/kubernetes_express

Service 생성

k expose deployment Deployment명 --port=서버포트

스케일링

k scale deployment Deployment명 --replicas=4
  • 이후 ssh 접속 후 해당 cluster IP로 curl 실행 시, 로드밸런싱 확인 가능

NordPort

k expose deployment Deployment명 --type=NodePort --port=서버포트
minikube service kube-k8s --url
  • type을 NodePort로 지정 시, Node Ip 주소로 deployment에 연결
  • 위 minikube 커맨드 라인으로 url 쉽게 알 수 있고, 웹 브라우저에서 접속 가능

LoadBalancer

k expose deployment Deployment명 --type=LoadBalancer --port=서버포트
  • 접속 시, 위 4개의 POD에 로드밸런싱

도커 이미지 업데이트

docker build . -t limkevin1313/kubernetes_hello:2.0.0
docker push limkevin1313/kubernetes_hello:2.0.0
kubectl set image deployment-name container-name=image-name
k rollout status deploy k8s // 새로운 레플리카 roll out
  • 원하는 이미지로 교체 후, 롤아웃을 통해 버전에 따른 배포 가능

3) yaml을 통한 Deployment 생성

deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: kubernetes-hello-seobi
spec:
  replicas: 3
  selector:
    matchLabels:
      app: kubernetes-hello-seobi
  template:
    metadata:
      labels:
        app: kubernetes-hello-seobi
    spec:
      containers:
      - name: kubernetes-hello-seobi
        image: limkevin1313/kubernetes_hello_seobi
        resources:
          limits:
            memory: "128Mi"
            cpu: "250m"
        ports:
        - containerPort: 3000
kubectl apply -f deployment.yaml

  • 해당 레플리카 수 만큼 3개의 POD 생성

service.yaml

apiVersion: v1
kind: Service
metadata:
  name: kubernetes-hello-seobi
spec:
  type: LoadBalancer
  selector:
    app: kubernetes-hello-seobi
  ports:
  - port: 3030
    targetPort: 3000
kubectl apply -f service.yaml
kubectl delete -f deployment.yaml -f service.yaml // 삭제

참고 - Kubernetes Course / Bogdan Stashchuk

profile
Pay it forward

0개의 댓글