要访问在Docker For Desktop中本地运行的Kubernetes服务?

Cor*_*ein 6 docker kubernetes

我正在将Docker For Desktop与内置的Kubernetes集群一起使用。我已经安装了Pod通过HTTP服务资源的,但是我不确定如何使用浏览器访问它。我具有以下ServiceSpec将流量正确路由到的内容Pod

spec:
  clusterIP: 10.99.132.220
  externalTrafficPolicy: Cluster
  ports:
  - name: myport
    nodePort: 31534
    port: 8037
    protocol: TCP
    targetPort: 80
  type: LoadBalancer
Run Code Online (Sandbox Code Playgroud)

当我使用以下命令查询它时,我可以看到它的设置kubectl

$ kubectl get service
NAME           TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
myservice   LoadBalancer   10.99.132.220   localhost     8037:31534/TCP   1h
Run Code Online (Sandbox Code Playgroud)

如何使用浏览器访问此服务?

aed*_*edm 16

转发端口:

kubectl port-forward <my-pod-name> 4000:8037
Run Code Online (Sandbox Code Playgroud)

您的 Pod 的内部端口 (8037) 将可以在 上访问localhost:4000。文档在这里


Cor*_*ein 10

该服务将在您的浏览器中提供,网址http://localhost:8037

请注意,端口8037对应于对象port上的ServiceSpec属性。

如果您无法通过该 URL 访问该服务,则可能是以下几种情况之一,包括但不限于:

  • Service您的集群中有另一个已声明该端口。删除另一个Service,或将port属性更改为无人认领的端口。
  • Pod没有运行并准备好。检查kubectl get pods

  • port 是 docker 镜像上公开的端口,nodePort 是 kubernetes 绑定到本地计算机的端口,或者如果这是一个“正确的”集群,那么工作节点上的端口是什么。 (3认同)

小智 6

对于本地开发,您可能希望使用NodePort服务类型(请参阅https://kubernetes.io/docs/concepts/services-networking/service/#nodeport)。nodePort顾名思义,这会将给定的 绑定到节点的端口(对于 docker-on-desktop 应该是 localhost)。

然后该服务应该可用 ob http://localhost:31534