如何使用Minikube在Kubernetes中创建Ingress规则

372 阅读3分钟

在这篇博客中,我们将学习Ingress以及如何创建Ingress规则,请继续关注!

前提条件

  • Minikube集群
  • 已安装kubectl

什么是Ingress?

Ingress是一个API对象,它允许基于路由机制的外部流量进入Kubernetes集群。它提供了路由规则来管理外部用户通过HTTP/HTTPS对Kubernetes集群的访问。

为什么我们要使用ingress?

当你的集群上有多个服务,并希望用户请求根据他们的路径被路由到服务时,就可以使用ingress。

例如,如果我必须去geeksforgeeks.com,那么geeksforgeeks域名将指向我的集群,我的集群应该知道这个请求到底指向哪里,这个工作由ingress来完成。

它是如何工作的?

在上面的图中。

  • 用户访问浏览器中的URL,基本上会被重定向到ingress服务。
  • 然后,服务将请求转发给控制器,控制器检查规则,并根据这些规则决定将请求发送到哪里。
  • 如果是geeksforgeeks.com,那么我们就去这个特定的服务,如果是tutorialspoint.com,那么我们就去这个服务。
  • 这些服务充当了pod的负载平衡器,因此你的请求是通过服务被发送到pod的。

此外,为了更好地理解,让我们进入演示环节

1.如果你的系统中没有安装minikube和kubectl

2.启动你的minikube集群

minikube start

3.启用nginx ingress控制器

minikube addons enable ingress

4.检查命名空间

kubectl get namespaces

在这里,你会看到 "ingress-nginx"

5.验证它是否正在运行

kubectl get pods -n ingress-nginx

现在,让我们部署一个Hello World应用程序

1.创建一个用于部署的清单文件

apiVersion: apps/v1

kind: Deployment

metadata:

  name: ingress-demo

spec:

  selector:

    matchLabels:

      app: myapp

  replicas: 1

  template:

    metadata:

      labels:

        app: myapp

    spec:

      containers:

      - name: ingress-cont

        image: gcr.io/google-samples/hello-app:1.0

在这里,我创建了一个名称为 "1复制 "的部署。

2.应用这个文件

kubectl apply -f [file-name]

kubectl apply -f ingress-deploy.yaml

3.检查部署、豆荚和副本的状态

kubectl get deployments

kubectl get pods

kubectl get replicaset

4.现在,公开这个部署

kubectl expose deployment ingress-demo --type=NodePort --port=8080

5.验证服务

kubectl get service

通过节点IP和节点端口访问该应用程序

6.要检查节点IP

kubectl get nodes -o wide

打开你的浏览器,像这样输入<节点-IP>:<节点-端口>[192.168.49.2:31900]。

你会看到这样的输出

7.现在,让我们为Ingress创建一个清单文件

apiVersion: networking.k8s.io/v1

kind: Ingress

metadata:

  name: ingress-app

  annotations:

    nginx.ingress.kubernetes.io/rewrite-target: /

spec:

  rules:

    - host: hello-worldapp.com

      http:

        paths:

          - path: /

            pathType: Prefix

            backend:

              service:

                name: ingress-demo

                port:

                  number: 8080

此清单文件与 kubernetes 中所有其他清单文件类似。在这里,种类是Ingress,在元数据文件中,它包括关于Ingress的详细信息,如名称、注释。在规范部分,我们写了规则,对于规则,我们将提到主机,这样我们就可以用域名而不是IP地址访问应用程序。

8.应用这个清单文件

kubectl apply -f [file-name]

9.9.让我们进行验证

kubectl get ingress

归档的地址需要几分钟的时间

在你的系统中的hosts(/etc/hosts)文件中添加主机和地址

进入你的浏览器,输入hello-worldapp.com

你会看到这个输出

结论

与其通过IP地址和端口访问你的应用程序,不如创建入口规则,通过域名访问你的应用程序。