树叶云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

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

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