树叶云kubernetes教程:Kubernetes 在Minikube环境中使用NGINX Ingress控制器配置Ingress

在 Minikube 环境中使用 NGINX Ingress 控制器配置 Ingress

Ingress是一种 API 对象,其中定义了一些规则使得集群中的 服务可以从集群外访问。 Ingress 控制器 负责满足 Ingress 中所设置的规则。

本节为你展示如何配置一个简单的 Ingress,根据 HTTP URI 将服务请求路由到 服务 ​web ​或 ​web2​。

在开始之前

你必须拥有一个 Kubernetes 的集群,同时你的 Kubernetes 集群必须带有 kubectl 命令行工具。 建议在至少有两个节点的集群上运行本教程,且这些节点不作为控制平面主机。 如果你还没有集群,你可以通过 Minikube 构建一个你自己的集群,或者你可以使用下面任意一个 Kubernetes 工具构建:

  • Katacoda
  • 玩转 Kubernetes

您的 Kubernetes 服务器版本必须不低于版本 1.19。要获知版本信息,请输入 ​kubectl version​。如果你使用的是较早的 Kubernetes 版本,请切换到该版本的文档。

启用 Ingress 控制器 

  1. 为了启用 NGINIX Ingress 控制器,可以运行下面的命令:
  2. minikube addons enable ingress
    
  3. 检查验证 NGINX Ingress 控制器处于运行状态:
    • minikube v1.19 或更高版本
    • kubectl get pods -n ingress-nginx
      

      说明: 最多可能需要等待一分钟才能看到这些 Pod 运行正常。

      输出类似于:

      NAME                                        READY   STATUS      RESTARTS    AGE
      ingress-nginx-admission-create-g9g49        0/1     Completed   0          11m
      ingress-nginx-admission-patch-rqp78         0/1     Completed   1          11m
      ingress-nginx-controller-59b45fb494-26npt   1/1     Running     0          11m
    • minikube v1.18.1 或更早版本
    • kubectl get pods -n kube-system
      

      说明: 最多可能需要等待一分钟才能看到这些 Pod 运行正常。

      输出类似于:

      NAME                                        READY     STATUS    RESTARTS   AGE
      default-http-backend-59868b7dd6-xb8tq       1/1       Running   0          1m
      kube-addon-manager-minikube                 1/1       Running   0          3m
      kube-dns-6dcb57bcc8-n4xd4                   3/3       Running   0          2m
      kubernetes-dashboard-5498ccf677-b8p5h       1/1       Running   0          2m
      nginx-ingress-controller-5984b97644-rnkrg   1/1       Running   0          1m
      storage-provisioner                         1/1       Running   0          2m

      请确保可以在输出中看到一个名称以 ​nginx-ingress-controller-​ 为前缀的 Pod。

部署一个 Hello World 应用

  1. 使用下面的命令创建一个 Deployment:
  2. kubectl create deployment web --image=gcr.io/google-samples/hello-app:1.0
    

    输出:

    deployment.apps/web created
    
  3. 将 Deployment 暴露出来:
  4. kubectl expose deployment web --type=NodePort --port=8080
    

    输出:

    service/web exposed
    
  5. 验证 Service 已经创建,并且可能从节点端口访问:
  6. kubectl get service web
    

    输出类似于:

    NAME      TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
    web       NodePort   10.104.133.249   <none>        8080:31637/TCP   12m
  7. 使用节点端口信息访问服务:
  8. minikube service web --url
    

    输出类似于:

    http://172.17.0.15:31637
    

    说明: 如果使用的是 Katacoda 环境,在终端面板顶端,请点击加号标志。 然后点击 Select port to view on Host 1。 输入节点和端口号(这里是​31637​),之后点击 Display Port

    输出类似于:

    Hello, world!
    Version: 1.0.0
    Hostname: web-55b8c6998d-8k564

    你现在应该可以通过 Minikube 的 IP 地址和节点端口来访问示例应用了。 下一步是让自己能够通过 Ingress 资源来访问应用。

创建一个 Ingress

下面是一个定义 Ingress 的配置文件,负责通过 ​hello-world.info​ 将请求 转发到你的服务。

  1. 根据下面的 YAML 创建文件 ​example-ingress.yaml​:
  2. apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: example-ingress
      annotations:
        nginx.ingress.kubernetes.io/rewrite-target: /$1
    spec:
      rules:
        - host: hello-world.info
          http:
            paths:
              - path: /
                pathType: Prefix
                backend:
                  service:
                    name: web
                    port:
                      number: 8080
  3. 通过运行下面的命令创建 Ingress 对象:
  4. kubectl apply -f https://k8s.io/examples/service/networking/example-ingress.yaml
    

    输出:

    ingress.networking.k8s.io/example-ingress created
    
  5. 验证 IP 地址已被设置:
  6. kubectl get ingress
    

    说明: 此操作可能需要几分钟时间。

    接下来你将会在ADDRESS列中看到IPv4地址,例如:

    NAME              CLASS    HOSTS              ADDRESS        PORTS   AGE
    example-ingress   <none>   hello-world.info   172.17.0.15    80      38s
  7. 在 ​/etc/hosts​ 文件的末尾添加以下内容(需要管理员访问权限):
  8. 说明: 如果你在本地运行 Minikube 环境,需要使用 ​minikube ip​ 获得外部 IP 地址。 Ingress 列表中显示的 IP 地址会是内部 IP 地址。

    172.17.0.15 hello-world.info
    

    添加完成后,在浏览器中访问URL ​hello-world.info​,请求将被发送到 Minikube。

  9. 验证 Ingress 控制器能够转发请求流量:
  10. curl hello-world.info
    

    你应该看到类似输出:

    Hello, world!
    Version: 1.0.0
    Hostname: web-55b8c6998d-8k564

    说明: 如果你在使用本地 Minikube 环境,你可以从浏览器中访问 hello-world.info。

创建第二个 Deployment 

  1. 使用下面的命令创建第二个 Deployment:
  2. kubectl create deployment web2 --image=gcr.io/google-samples/hello-app:2.0
    

    输出:

    deployment.apps/web2 created
    
  3. 将第二个 Deployment 暴露出来:
  4. kubectl expose deployment web2 --port=8080 --type=NodePort
    

    输出:

    service/web2 exposed
    

编辑现有的 Ingress 

  1. 编辑现有的 ​example-ingress.yaml​,在文件最后添加以下行:
  2.            - path: /v2
                 pathType: Prefix
                 backend:
                   service:
                     name: web2
                     port:
                       number: 8080
  3. 应用变更:
  4. kubectl apply -f example-ingress.yaml
    

    输出:

    ingress.networking/example-ingress configured
    

测试你的 Ingress 

  1. 访问 HelloWorld 应用的第一个版本:
  2. curl hello-world.info
    

    输出类似于:

    Hello, world!
    Version: 1.0.0
    Hostname: web-55b8c6998d-8k564
  3. 访问 HelloWorld 应用的第二个版本:
  4. curl hello-world.info/v2
    

    输出类似于:

    Hello, world!
    Version: 2.0.0
    Hostname: web2-75cd47646f-t8cjk

    说明: 如果你在本地运行 Minikube 环境,你可以使用浏览器来访问 hello-world.info 和 hello-world.info/v2。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/159161.html<

(0)
管理的头像管理
上一篇2025-03-17 04:25
下一篇 2025-03-17 04:26

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注