如何從主機存取在 Kubernetes 上執行的 Web 應用程式

如何從主機存取在 Kubernetes 上執行的 Web 應用程式

我在 Windows 上使用 docker 桌面。我有一個帶有 python Web 應用程式的 docker 映像。我可以運行一個容器並在我的主機上透過 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 上存取我的應用程式

相關內容