当从命令行 运行 时,Minikube 服务工作,但通过 YAML 应用不起作用

Minikube services work when run from command line, but applying through YAML doesn't work

这是我的 Kubernetes 服务的图像。

Todo-front-2 是我使用命令行部署的应用程序的工作实例:

kubectl run todo-front --image=todo-front:v7 --image-pull-policy=Never
kubectl expose deployment todo-front --type=NodePort --port=3000

而且效果很好。现在我想继续使用 todo-front.yaml 文件来部署和公开我的服务。 Todo-front服务是指我目前在上面的尝试。我的部署文件如下所示:

kind: Deployment
apiVersion: apps/v1
metadata:
  name: todo-front
spec:
  replicas: 1
  selector:
    matchLabels:
      app: todo-front
  template:
    metadata:
      labels:
        app: todo-front
    spec:
      containers:
        - name: todo-front
          image: todo-front:v7
          env:
          - name: REACT_APP_API_ROOT
            value: "http://localhost:12000"
          imagePullPolicy: Never
          ports:
            - containerPort: 3000
---
kind: Service
apiVersion: v1
metadata:
  name: todo-front
spec:
  type: NodePort
  ports:
    - port: 3000
      targetPort: 3000
  selector:
    app: todo-front

我使用以下方式部署它:

kubectl apply -f deployment/todo-front.yaml

这是输出

但是当我运行

minikube service todo-front

它将我重定向到 URL 说 "Site can't be reached"。 我不知道我做错了什么。端口应该没问题,我的集群也应该没问题,因为我可以只使用没有外部 YAML 文件的命令行来让它工作。两个部署也使用相同的 docker-image。我还尝试将所有端口现在“3000”更改为不同的东西,以防它们与现有部署 todo-front-2 发生冲突,但运气不佳。 这里还有 pods 的截图和他们的状态:

任何对 Kube 有更多经验并且 Docker 愿意看一看的人?谢谢!

您可以运行下面的命令生成yaml文件而不将其应用于集群,然后将其与您手动创建的yaml进行比较,看看是否存在不匹配。此外,您可以自己应用生成的 yaml,而不是自己手动创建 yaml。

kubectl run todo-front --image=todo-back:v7 --image-pull-policy=Never --dry-run -o yaml > todo-front.yaml


kubectl expose deployment todo-front --type=NodePort --port=3000 --dry-run -o yaml > todo-depoloyment.yaml