• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    미해결

nodeport tomcat 문의드립니다.

23.01.03 11:02 작성 23.01.03 11:07 수정 조회수 384

0

tomcat으로 노드포트 30002 연동하는게 안되서요.

일단 서비스랑 np, lb 합쳐서 yaml 만드니까 자꾸 에러가 나서 svc.yaml / np-lb.yaml 을 따로 만들어서 create 하였습니다.

tomcat-svc.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: tomcat
  name: tomcat
spec:
  replicas: 1
  selector:
    matchLabels:
      app: tomcat
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: tomcat
    spec:
      containers:
      - image: tomcat
        name: tomcat
        ports:
        - containerPort: 8080
        resources: {}
status: {}

create 성공

 

tomcat-np-lb.yaml

# tomcat-np-lb.yaml
#

# nodeport

apiVersion: v1
kind: Service
metadata:
  name: tomcat-np
spec:
  type: NodePort
  selector:
    app: tomcat
    app.kubernetes.io/name: tomcat
  ports:
    - port: 80
      targetPort: 8080
      nodePort: 30002

---
# LB
#
apiVersion: v1
kind: Service
metadata:
  name: tomcat-lb
spec:
  type: LoadBalancer
  selector:
    app: tomcat
    app.kubernetes.io/name: tomcat
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

create 성공

 

둘다 성공해서 -o wide 해서 봤는데

  1. LB ip

 

  1. 노드포트(30002) 접속

  • 30228 포트는 LB 포트입니다.

톰캣 자체가 좀 오래 걸려서 기다렸는데도 불구하고 안돼요. 버전을 console/tomcat-7.0으로 변경해도 그대로입니다. connection refused도 계속 되고요.

구글 콘솔로도 확인했는데 deploy랑 전부 만들어진거 확인했습니다.

근데도 톰캣 사이트가 안떠요 ㅜㅜ

어디가 잘못됐는지 잘 모르겠습니다.ㅜㅜ

답변 1

답변을 작성해보세요.

0

gasbugs님의 프로필

gasbugs

2023.01.03

안녕하세요 강사 최일선입니다

console/tomcat-7.0를 입력했다고 하셨는데 사용자 아이디에서 e를 제거해야 합니다.

consol/tomcat-7.0으로 구성하시고 실행하시면 잘 동작하실 겁니다.

감사합니다.

쏭지님의 프로필

쏭지

질문자

2023.01.03

안녕하세요 말씀하신대로 consol/tomcat-7.0 으로 변경하였으나 이번에는

image

타임아웃 에러가 뜹니다.

방화벽도 오픈해놨는데 연결이 되지 않습니다.

gasbugs님의 프로필

gasbugs

2023.01.03

kubectl get all 명령으로 현재 상태에 대한 결과를 보내주시겠어요?

gasbugs님의 프로필

gasbugs

2023.01.03

지금 위에서 확인해보니 디플로이먼트 파드의 레이블이 app: tomcat로 되어 있네요. 서비스에서 레이블을 정확하게 변경하시면 될 것같습니다. 매칭되어야 셀렉팅이 가능해서요. 서비스에서 다음 레이블을 삭제해보시기 바랍니다.

app.kubernetes.io/name: tomcat
쏭지님의 프로필

쏭지

질문자

2023.01.03

app.kubernetes.io/name 이 지워지지 않습니다.image

처음 생성할 때 저걸 지우면 생성이 안되고 에러가 나더라구요

 

kubectl get all 로 했을 때의 결과입니다.

NAME                          READY   STATUS    RESTARTS   AGE     IP          NODE                                       NOMINATED NODE   READINESS GATES
pod/tomcat-6474b75fcf-mnrmj   1/1     Running   0          6m49s   10.4.1.25   gke-cluster-1-default-pool-e52637f9-r26k   <none>           <none>

NAME                 TYPE           CLUSTER-IP    EXTERNAL-IP      PORT(S)        AGE     SELECTOR
service/kubernetes   ClusterIP      10.8.0.1      <none>           443/TCP        100m    <none>
service/tomcat-lb    LoadBalancer   10.8.14.140   104.197.64.206   80:30430/TCP   6m43s   app.kubernetes.io/name=tomcat,app=tomcat
service/tomcat-np    NodePort       10.8.12.126   <none>           80:30002/TCP   6m43s   app.kubernetes.io/name=tomcat,app=tomcat

NAME                     READY   UP-TO-DATE   AVAILABLE   AGE     CONTAINERS   IMAGES   SELECTOR
deployment.apps/tomcat   1/1     1            1           6m50s   tomcat       tomcat   app=tomcat

NAME                                DESIRED   CURRENT   READY   AGE     CONTAINERS   IMAGES   SELECTOR
replicaset.apps/tomcat-6474b75fcf   1         1         1       6m51s   tomcat       tomcat   app=tomcat,pod-template-hash=6474b75fcf

 

image

 

 

consol/tomcat-7.0 으로 변경했을 때

image

gasbugs님의 프로필

gasbugs

2023.01.03

gke 에서 테스트 하신 것으로 보이는데 제가 아래와 같이 실행했을 때는 잘 동작하고 있습니다. 만드신 것 삭제후에 다음 코드로 한번 테스트해보시기 바랍니다. 노드의 IP로 접근하신 것이 맞는지도 확인 부탁 드립니다~

cat <<EOF | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: tomcat
  name: tomcat
spec:
  replicas: 1
  selector:
    matchLabels:
      app: tomcat
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: tomcat
    spec:
      containers:
      - image: consol/tomcat-7.0
        name: tomcat
        ports:
        - containerPort: 8080
        resources: {}
status: {}
---
# tomcat-np-lb.yaml
#

# nodeport

apiVersion: v1
kind: Service
metadata:
  name: tomcat-np
spec:
  type: NodePort
  selector:
    app: tomcat
  ports:
    - port: 80
      targetPort: 8080
      nodePort: 30002

---
# LB
#
apiVersion: v1
kind: Service
metadata:
  name: tomcat-lb
spec:
  type: LoadBalancer
  selector:
    app: tomcat
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
EOF

gcloud compute firewall-rules create tomcat-np-30002 --allow=tcp:30002 # 방화벽 오픈

kubectl get nodes -o wide # 노드의 IP 확인
쏭지님의 프로필

쏭지

질문자

2023.01.04

강사님께서 주신 코드로는 잘 되네요! 감사합니다.