为什么可以';我不能在Windows上访问从Minikube公开的服务吗?
我是库伯内特斯的新手。我使用Angular前端应用程序的两个副本成功创建了一个部署,但当我使用服务公开它并尝试使用“minikube服务名称”访问该服务时,浏览器无法显示该应用程序 这是我的docker文件为什么可以';我不能在Windows上访问从Minikube公开的服务吗?,windows,kubernetes,service,minikube,Windows,Kubernetes,Service,Minikube,我是库伯内特斯的新手。我使用Angular前端应用程序的两个副本成功创建了一个部署,但当我使用服务公开它并尝试使用“minikube服务名称”访问该服务时,浏览器无法显示该应用程序 这是我的docker文件 FROM registry.gitlab.informatica.aci.it/ccsc/images/nodejs/10_15 LABEL maintainer="d.vaccaro@informatica.aci.it" name="assistenza-fo" version="v1
FROM registry.gitlab.informatica.aci.it/ccsc/images/nodejs/10_15
LABEL maintainer="d.vaccaro@informatica.aci.it" name="assistenza-fo" version="v1.0.0" license=""
WORKDIR /usr/src/app
ARG PRODUCTION_MODE="false"
ENV NODE_ENV='development'
ENV HTTP_PORT=4200
COPY package*.json ./
RUN if [ "${PRODUCTION_MODE}" = "true" ] || [ "${PRODUCTION_MODE}" = "1" ]; then \
echo "Build di produzione"; \
npm ci --production ; \
else \
echo "Build di sviluppo"; \
npm ci ; \
fi
RUN npm audit fix
RUN npm install -g @angular/cli
COPY dockerize /usr/local/bin
RUN chmod +x /usr/local/bin/dockerize
COPY . .
EXPOSE 4200
CMD ng serve --host 0.0.0.0
吊舱说明
Name: assistenza-fo-674f85c547-bzf8g
Namespace: default
Priority: 0
Node: minikube/172.17.0.2
Start Time: Sun, 19 Apr 2020 12:41:06 +0200
Labels: pod-template-hash=674f85c547
run=assistenza-fo
Annotations: <none>
Status: Running
IP: 172.18.0.6
Controlled By: ReplicaSet/assistenza-fo-674f85c547
Containers:
assistenza-fo:
Container ID: docker://ef2bfb66d22dea56b2dc0e49e875376bf1edff369274015445806451582703a0
Image: registry.gitlab.informatica.aci.it/apra/sta-r/assistenza/assistenza-fo:latest
Image ID: docker-pullable://registry.gitlab.informatica.aci.it/apra/sta-r/assistenza/assistenza-fo@sha256:8d02a3e69d6798c1ac88815ef785e05aba6e394eb21f806bbc25fb761cca5a98
Port: 4200/TCP
Host Port: 0/TCP
State: Running
Started: Sun, 19 Apr 2020 12:41:08 +0200
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-zdrwg (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
default-token-zdrwg:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-zdrwg
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events: <none>
Name: assistenza-fo
Namespace: default
CreationTimestamp: Sun, 19 Apr 2020 12:41:06 +0200
Labels: run=assistenza-fo
Annotations: deployment.kubernetes.io/revision: 1
Selector: run=assistenza-fo
Replicas: 2 desired | 2 updated | 2 total | 2 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: run=assistenza-fo
Containers:
assistenza-fo:
Image: registry.gitlab.informatica.aci.it/apra/sta-r/assistenza/assistenza-fo:latest
Port: 4200/TCP
Host Port: 0/TCP
Environment: <none>
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Available True MinimumReplicasAvailable
Progressing True NewReplicaSetAvailable
OldReplicaSets: <none>
NewReplicaSet: assistenza-fo-674f85c547 (2/2 replicas created)
Events: <none>
Name: assistenza-fo
Namespace: default
Labels: run=assistenza-fo
Annotations: <none>
Selector: run=assistenza-fo
Type: LoadBalancer
IP: 10.97.3.206
Port: <unset> 4200/TCP
TargetPort: 4200/TCP
NodePort: <unset> 30375/TCP
Endpoints: 172.18.0.6:4200,172.18.0.7:4200
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
我得到以下输出:
|-----------|---------------|-------------|-------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|---------------|-------------|-------------------------|
| default | assistenza-fo | 4200 | http://172.17.0.2:30375 |
|-----------|---------------|-------------|-------------------------|
* Opening service default/assistenza-fo in default browser...
但Chrome打印出“无法到达站点”表示超时
多谢各位
编辑
我再次创建了该服务,这次是作为节点端口服务。仍然不起作用。以下是服务说明:
Name: assistenza-fo
Namespace: default
Labels: run=assistenza-fo
Annotations: <none>
Selector: run=assistenza-fo
Type: NodePort
IP: 10.107.46.43
Port: <unset> 4200/TCP
TargetPort: 4200/TCP
NodePort: <unset> 30649/TCP
Endpoints: 172.18.0.7:4200,172.18.0.8:4200
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
名称:阿西斯滕扎·福
名称空间:默认值
标签:run=assistenza fo
注释:
选择器:run=assistenza fo
类型:节点端口
IP:10.107.46.43
端口:4200/TCP
目标端口:4200/TCP
节点端口:30649/TCP
终点:172.18.0.7:4200172.18.0.8:4200
会话关联:无
外部流量策略:群集
活动:
我能够重现您的问题
这实际上是运行Docker驱动程序的Windows最新版本Minikube上的一个错误:--Driver=Docker
- 你可以在这里看到:
- 它已通过合并进行修补:
- 现在可以在
- 将其移动到您的工作文件夹,并将其重命名为
minikube.exe
- Minikube现在正在v1.10.0-beta.0版本上运行,现在您可以按预期运行该服务(请注意,该命令将不可用,因为它将通过隧道连接:
- 浏览器将自动打开,您的服务将可用:
如果您有任何疑问,请在评论中告诉我。kubectl运行assistenza fo-image=“注册表上的图像地址”-port=4200-replicas=2实际上,您使用的指令EXPOSE 4200仅用于文档目的。它并没有真正公开端口。因此您需要使用所示的
kubectl EXPOSE
命令来公开它。另外请注意,我提到的链接中给出的示例只是为了给出一个想法。该示例用于exp在集群之外关闭服务,这可能不是您的情况。我刚刚删除了我的服务,并使用以下指令重新创建了它:“kubectl expose deployment assistenza fo--type=LoadBalancer--port=4200”,但结果是一样的。实际上,我目前没有任何特定的用例,我只是在尝试学习:)但是我想不出为什么我够不着豆荚。谢谢您的建议您可以尝试以下操作,然后运行minikube service assistenza fo
命令吗kubectl expose deployment assistenza fo--type=NodePort--port=4200
谢谢willof!我现在可以在浏览器上查看我的应用程序。我唯一不明白的是:我的服务的节点端口如下:“NodePort:31378/TCP”。但当浏览器启动时,它指向以下URL:。我的理解是应该这样。我认为这与minikube进行的隧道挖掘有关。。。对吗?Docker Desktop for Windows(我们正在使用的驱动程序)这就是Minikube创建隧道来路由流量并选择其他端口的原因。这并不漂亮,但它是目前的状态。如果您运行Windows 10 Pro/Enterprise/Education或Windows 10 Home的原始版本,则可以使用完整的连接。
Name: assistenza-fo
Namespace: default
Labels: run=assistenza-fo
Annotations: <none>
Selector: run=assistenza-fo
Type: NodePort
IP: 10.107.46.43
Port: <unset> 4200/TCP
TargetPort: 4200/TCP
NodePort: <unset> 30649/TCP
Endpoints: 172.18.0.7:4200,172.18.0.8:4200
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
C:\Kubernetes>rename minikube-windows-amd64.exe minikube.exe
C:\Kubernetes>dir
22/04/2020 21:10 <DIR> .
22/04/2020 21:10 <DIR> ..
22/04/2020 21:04 55.480.832 minikube.exe
22/04/2020 20:05 489 nginx.yaml
2 File(s) 55.481.321 bytes
C:\Kubernetes>minikube.exe start --driver=docker
* minikube v1.10.0-beta.0 on Microsoft Windows 10 Pro 10.0.18363 Build 18363
* Using the docker driver based on existing profile
* Starting control plane node minikube in cluster minikube
* Pulling base image ...
* Restarting existing docker container for "minikube" ...
* Preparing Kubernetes v1.18.0 on Docker 19.03.2 ...
- kubeadm.pod-network-cidr=10.244.0.0/16
* Enabled addons: dashboard, default-storageclass, storage-provisioner
* Done! kubectl is now configured to use "minikube"
C:\Kubernetes>kubectl get all
NAME READY STATUS RESTARTS AGE
pod/nginx-76df748b9-t6q59 1/1 Running 1 78m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 85m
service/nginx-svc NodePort 10.100.212.15 <none> 80:31027/TCP 78m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx 1/1 1 1 78m
NAME DESIRED CURRENT READY AGE
replicaset.apps/nginx-76df748b9 1 1 1 78m