Kubenetes 쿠버네티스 - deployment, service(NodePort) 배포

salgu·2023년 1월 7일
0

kubernetes

목록 보기
3/16
post-thumbnail

Service란

Service란, Pod의 논리적 집합이며 어떻게 접근할지에 대한 정책은 정의해놓은 것을 말한다.

이 Service는 Label Selector 통해 어떤 Pod를 포함할지 정의가 가능하다.

각 Pod의 IP로는 외부에서 직접적인 접근이 불가능하지만, 서비스는 이를 가능하게 허용해 준다.

NodePort란

외부의 아이피가 192.168.1.1이면 31000번 Port를 통해 Node에 접근할 수 있다. (NodePort 서비스)

Node의 어느 Service를..? 어느 Pod로..?라는 의문이 생기는데, 이걸 yaml 파일에 미리 정의해두어 특정 Pod의 Application을 접근할 수 있게 되는 것이다.

즉 NodePort 서비스를 만든다는 것은 Service를 하나 만들어 외부의 어떤 Port 번호를 지정하여 붙게끔 하고, 내부의 어떤 Pod를 서비스할지를 Label Selector로 지정해주어 Target Port 번호를 정의하는 것이다.

https://yoonchang.tistory.com/49




nginx 손배포 테스트


nginx deployment 생성

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

다음과 같이 작성한 yml파일을

kubectl apply -f {yml파일}

명령어를 이용하여 deployment를 생성해줍니다.

pod 접속

deployment로 생성되었던 pod로 터널링하여 접속합니다.

eginx 통신 테스트

curl을 설치한 뒤 curl 명령어를 이용하여 eginx에서 정상적으로 응답이 오는지 확인해줍니다.

service 생성

kubectl expose deployment {deployment 이름} --port={pod에 해당하는 port} --type=NodePort

명령어로 service의 NodePort를 생성할 수 있습니다.

nginx 접속 확인

NodePort의 포트를 이용하면 정상적으로 nginx와 통신을 할 수 있는것을 확인할 수 있습니다.





Dockerhub에 올렸던 Spring application 배포


deployment 생성 yml 작성

deployment 생성

kubectl apply -f {yml 파일}

service NodePort 생성 yml 작성

확인

reference : Jenkins를 이용한 CI/CD Pipeline 구축 - 이도원

profile
https://github.com/leeeesanggyu, leeeesanggyu@gmail.com

0개의 댓글