1

我已经通过 microk8s 在 kubernetes 中部署了 angular 前端和 python 后端作为单独的 pod,它们正在运行。我在我的角度文件中将后端 url 指定为“ http://backend-service.default.svc.cluster.local:30007 ”,以便将前端与后端链接起来。但这会引发 ERR_NAME_NOT_RESOLVED。有人可以帮助我理解这个问题吗?

另外,我有一个配置文件,它在我的后端指定 ip 的端口和其他配置。在将 t 部署到 kubernetes 之前,我是否需要对该文件进行任何更改(数据库主机的值?、烧瓶主机?、端口?)?

下面显示的是我的角度和后端的部署和服务文件。

    apiVersion: v1
    kind: Service
    metadata:
     name: angular-service
    spec:
     type: NodePort
     selector:
      app: angular
     ports:
      - protocol: TCP
        nodePort: 30042
        targetPort: 4200
        port: 4200
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: angular-deployment
    labels:
      name: angular
    spec:
     replicas: 1
     selector:
      matchLabels:
        name: angular
     template:
       metadata:
         labels:
           name: angular
       spec:
         containers:
         - name: angular
           image: angular:local
           ports:
         - containerPort: 4200



  apiVersion: v1
  kind: Service
  metadata:
    name: backend-service
  spec:
    type:ClusterIP
    selector:
      name: backend
    ports:
      - protocol: TCP
        targetPort: 7000
        port: 7000
  ---
   apiVersion: apps/v1
   kind: Deployment
   metadata:
     name: backend-deployment
     labels:
       name: backend
   spec:
     replicas: 1
     selector:
       matchLabels:
          name: backend
      template:
       metadata:
         labels:
           name: backend
       spec:
         containers:
         - name: backend
           image: flask:local
           ports:
           - containerPort: 7000
4

1 回答 1

2

您的集群是否处于健康状态?DNS 由 kube-system 命名空间中的对象 coredns 解析。

以经典方式,您的 Angular 应用程序应该在浏览器中显示您的 API Url,因此它们必须公开和公开。这不是你的情况,我对此有很大的怀疑。向我们展示您的应用架构?

此外,如果您通过 NodePort 公开您的服务,则不得将其用于内部访问,因为您永远不知道您将访问的节点。当公开服务时,您的应用程序需要使用端口属性(而不是节点端口)来访问后端生成的 pod。

于 2019-11-12T09:31:30.723 回答