暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

原创 花飞墨 2022-09-25
1036

在这篇博客中,我们将了解Ingress以及如何创建Ingress规则,敬请关注!

前提条件

  • Minikube集群
  • 安装了kubectl

什么是Ingress?

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

为什么需要Ingress?

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

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

它是如何工作的呢?

image.png

在上图中:

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

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

为了更好理解,我们看看例子

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

因此,请参考- minikube & kubectl

2.启动你的minikube集群

minikube start

3. 启用nginx ingress控制器

minikube addons enable ingress

4.检查namespaces

kubectl get namespaces

image.png

在这里,你会看到 “ingress-nginx”

5.验证是否运行

kubectl get pods -n ingress-nginx

image.png

部署一个HelloWorld应用

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

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

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个replica的deployment 。

2.Apply文件

kubectl apply -f [file-name]

kubectl apply -f ingress-deploy.yaml

3.检查 deployments, pods, and replicas的状态

kubectl get deployments

kubectl get pods

kubectl get replicaset

4.现在暴露deployment

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

5.验证service

kubectl get service

通过node-ip和node port访问应用

6.检查node ip

kubectl get nodes -o wide

image.png

打开你的浏览器,输入 < node-ip >:< node-port > [192.168.49.2:31900],像这样:

image.png

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

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

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

8.Apply manifest文件

kubectl apply -f [file-name]

9.让我们验证下

kubectl get ingress

地址可能要几分钟:
image.png

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

image.png

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

image.png

总结

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

参考

https://kubernetes.io/docs/concepts/services-networking/ingress/

https://kubernetes.io/docs/concepts/services-networking/service/

原文标题:How to create Ingress rules in Kubernetes using Minikube
原文作者:Jasmine
原文地址:https://blog.knoldus.com/how-to-create-ingress-rules-in-kubernetes-using-minikube/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论