작성
·
494
·
수정됨
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 해서 봤는데
LB ip
노드포트(30002) 접속
30228 포트는 LB 포트입니다.
톰캣 자체가 좀 오래 걸려서 기다렸는데도 불구하고 안돼요. 버전을 console/tomcat-7.0으로 변경해도 그대로입니다. connection refused도 계속 되고요.
구글 콘솔로도 확인했는데 deploy랑 전부 만들어진거 확인했습니다.
근데도 톰캣 사이트가 안떠요 ㅜㅜ
어디가 잘못됐는지 잘 모르겠습니다.ㅜㅜ
답변 1
0
안녕하세요 강사 최일선입니다
console/tomcat-7.0를 입력했다고 하셨는데 사용자 아이디에서 e를 제거해야 합니다.
consol/tomcat-7.0으로 구성하시고 실행하시면 잘 동작하실 겁니다.
감사합니다.
지금 위에서 확인해보니 디플로이먼트 파드의 레이블이 app: tomcat로 되어 있네요. 서비스에서 레이블을 정확하게 변경하시면 될 것같습니다. 매칭되어야 셀렉팅이 가능해서요. 서비스에서 다음 레이블을 삭제해보시기 바랍니다.
app.kubernetes.io/name: tomcat
app.kubernetes.io/name 이 지워지지 않습니다.
처음 생성할 때 저걸 지우면 생성이 안되고 에러가 나더라구요
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
consol/tomcat-7.0 으로 변경했을 때
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 확인
안녕하세요 말씀하신대로 consol/tomcat-7.0 으로 변경하였으나 이번에는
타임아웃 에러가 뜹니다.
방화벽도 오픈해놨는데 연결이 되지 않습니다.