호스트에서 Kubernetes에서 실행되는 웹앱에 액세스하는 방법

호스트에서 Kubernetes에서 실행되는 웹앱에 액세스하는 방법

저는 Windows에서 Docker Desktop을 사용하고 있습니다. Python 웹 앱이 포함된 도커 이미지가 있습니다. 컨테이너를 실행하고 호스트에서 http://localhost:9090으로 액세스할 수 있습니다.

이제 아래 배포 yaml을 사용하여 Kubernetes 클러스터에서 실행하려고 합니다.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: flask
  namespace: dev
  labels:
    app: flask
spec:
  replicas: 3
  selector:
    matchLabels:
      app: flask
  template:
    metadata:
      labels:
        app: flask
    spec:
      containers:
      - name: flask
        image: myubuntu
        imagePullPolicy: Never
        resources:
          requests:
            cpu: "500m"
            memory: "500Mi"
        ports:
        - containerPort: 9090
---
apiVersion: v1
kind: Service
metadata:
  name: flask
  namespace: dev
spec:
  type: NodePort
  selector:
    app: flask
  ports:
    - protocol: TCP
      port: 9090
      targetPort: 9090

그런 다음 나는 다음을 실행했습니다.

kubectl apply -f deployment.yaml
kubectl get service

나에게 준 :

NAME    TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
flask   NodePort   10.110.188.94   <none>        9090:30007/TCP   10m

하지만 호스트에서 다음을 통해 액세스할 수 없습니다.

curl http://localhost:9090
curl http://localhost:30007
curl http://10.110.188.94:9090
curl http://10.110.188.94:30007

호스트에서 웹 앱에 액세스하는 방법을 아는 사람이 있나요?

답변1

나는 알아 냈다. NodePort 서비스를 제거하고 대신 LoadBalancer를 만들었습니다.

kubectl expose deployment flask --type="LoadBalancer" -n dev

이제 localhost:9090에서 내 앱에 액세스할 수 있습니다.

관련 정보