在 Minikube 中连接 NodePort

在 Minikube 中连接 NodePort

我创建了一个服务和一个部署,但是无法使用minikube service --url accounts-service或访问该服务minikube service accounts-service

虽然第二个打开了浏览器但从不连接,但第一个只是留在我的终端上。

部署

apiVersion: apps/v1
kind: Deployment
metadata:
  name: accounts-service
spec:
  replicas: 1
  selector:
    matchLabels:
      app: accounts-service
  template:
    metadata:
      labels:
        app: accounts-service
    spec:
      containers:
        - name: accounts-service
          image: xxxx:latest
          ports:
            - containerPort: 3001

服务

apiVersion: v1
kind: Service
metadata:
  name: accounts-service
spec:
  selector:
    app: accounts-service
  ports:
    - port: 80
      targetPort: 3001
  type: NodePort

我不知道为什么我的 Minikube 没有连接到端口。我正在使用 minkube 和 Docker

答案1

King,您已定义targetPort to 3001,这会将此服务连接到您的 pod,但您尚未定义 nodePort。NodePort 是用于从外部调用该端口上的服务的端口号。因此,如果您想要获取服务,您需要运行(对于 minikube 来说,可能有所不同,但结果相同)

kubectl 获取服务

因此,就您而言,您需要查找的端口是 X:PORTNUMBER。我的集群中选择了 30891。尽管您也可以通过nodePortyaml 文件中的定义手动选择端口号。 在此处输入图片描述

通过此,您将看到 kubeproxy 自动选择的端口号。为了更好地理解端口概念,我将分享下图。

在此处输入图片描述

答案2

如果您在 Windows 中使用带有 docker 驱动程序的 minikube,则这是“正常的”,尽管如前所述,您缺少 yaml 中定义的 nodePort。访问服务的一个好方法是端口转发服务。

kubectl port-forward service {serviceName} -n {namespaceName} {portNumberToAccess}:{portNumberOfService}

然后使用您的 Node IP 地址和端口通过浏览器访问它。

(你可以使用以下方式检查你的节点 IP 地址minikube ip

示例:http://{NodeIpAdress}:{portNumberToAccess}

更多信息请点击这里: https://kubernetes.io/docs/tasks/access-application-cluster/port-forward-access-application-cluster/

相关内容