Kubernetes - 使用 Minikube 进入

Kubernetes - Ingress with Minikube

我正在通过玩 minikube 来学习 kubernetes。

这是我的 pod 部署文件,没问题。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      component: web
  template:
    metadata:
      labels:
        component: web
    spec:
      containers:
        - name: myapp
          image: myid/myimage

我正在使用 NodePort 公开上述 pods。我可以在端口 30002 使用 minikube IP 访问。

apiVersion: v1
kind: Service
metadata:
  name: my-ip-service
spec:
  type: NodePort
  externalIPs:
  - 192.168.99.100
  selector:
    component: web
  ports:
    - port: 3000
      nodePort: 30002
      targetPort: 8080

现在我想使用 ingress 在端口 80 访问应用程序,它将请求转发到端口 3000 的 ip 服务。它不起作用

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
spec:
  backend:
    serviceName: my-ip-service
    servicePort: 3000

如果我尝试访问入口,地址为空。

NAME           HOSTS   ADDRESS   PORTS   AGE
test-ingress   *                 80      41m

如何在minikube中使用ingress?或者如何将 minikube ip 与入口服务绑定 - 这样应用程序就可以在不使用 nodeport

的情况下暴露在外面

您可以通过以下方式获取您的 minikube 节点的 IP 地址:

minikube ip

入口的 IP 地址不会填充到 minikube 中,因为 minikube 缺少负载平衡器。如果您想要 minikube 集群的负载均衡器,https://github.com/knative/serving/blob/master/docs/creating-a-kubernetes-cluster.md#loadbalancer-support-in-minikube 建议 运行 使用以下命令来修补您的集群:

sudo ip route add $(cat ~/.minikube/profiles/minikube/config.json | jq -r ".KubernetesConfig.ServiceCIDR") via $(minikube ip)
kubectl run minikube-lb-patch --replicas=1 --image=elsonrodriguez/minikube-lb-patch:0.1 --namespace=kube-system

我认为您缺少 minikube 本身的入口控制器资源。在 K8s 上创建入口控制器资源有很多可能的方法,但我认为对您来说,开始使用 minikube 的最佳方法是遵循 this 文档。

一旦开始工作,请不要忘记阅读有关 Ingress 的一般信息。