当从命令行 运行 时,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
这是我的 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