k8s 使用ingress-nginx访问集群内部应用

news2024/12/28 18:44:49

k8s搭建和部署应用完成后,可以通过NodePort,Loadbalancer,Ingress方式将应用端口暴露到集群外部,提供外部访问。
缺点:
NodePort占用端口,大量暴露端口非常不安全,并且有端口数量限制【不推荐】;
Loadbalancer 非常好用,但是得加钱才行【视情况定】
Ingress 配置稍微复杂,并且需要内部DNS解析转发【推荐】

Ingress-nginx-controller 安装部署见k8s安装ingress-nginx DaemonSet + HostNetwork + nodeSelector
因为Ingress-nginx-controller是部署在k8s集群内部以pod方式运行,是可以访问到集群内部k8s的各个服务的,而只需要将Ingress-nginx-controller监听的80/443端口提供暴露给外部访问,并安装一定规则进行代理转发,即可实现外部通过Ingress-nginx-controller访问到内部应用中。

简易理解ingress 同 svc,pod关系,ingress --转发–> svc --转发–> pods
这里简易部署nginx、tomcat为例:
vi nginx-tomcat-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: default
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx-pod
  template:
    metadata:
      labels:
        app: nginx-pod
    spec:
      containers:
        - name: nginx-container
          image: nginx:latest
          ports:
            - name: nginx-port
              containerPort: 80
              protocol: TCP

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat-deployment
  namespace: default
spec:
  replicas: 2
  selector:
    matchLabels:
      app: tomcat-pod
  template:
    metadata:
      labels:
        app: tomcat-pod
    spec:
      containers:
        - name: tomcat-container
          image: tomcat:8.5-jre10-slim
          ports:
            - name: tomcat-port
              containerPort: 8080
              protocol: TCP

执行部署
kubectl apply -f nginx-tomcat-deployment.yaml

配置nginx和tomcat访问服务svc脚本,监听nginx-80/tomcat-8080端口nginx-tomcat-service.yaml
vi nginx-tomcat-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
  namespace: default
spec:
  selector:
    app: nginx-pod
  type: ClusterIP     # 默认使用ClusterIP不使用NodePort方式
#  clusterIP: None
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80  # 部署的nginx端口

---
apiVersion: v1
kind: Service
metadata:
  name: tomcat-svc
  namespace: default
spec:
  selector:
    app: tomcat-pod
  type: ClusterIP       # 默认使用ClusterIP不使用NodePort方式
#  clusterIP: None
  ports:
    - protocol: TCP
      port: 8080
      targetPort: 8080  # 部署的tomcat端口

执行部署
kubectl apply -f nginx-tomcat-service.yaml

编写ingress脚本,ingress目的就是访问将指定访问url或域名的配置提交给ingress-nginx-controller做反向代理转发到选择绑定的service中,实现pod应用暴露给外部访问。
nginx-tomcat-ingress.yaml由nginx代理转发到nginx/tomcat的svc端口
vi nginx-tomcat-ingress.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-nginx-http
  annotations:
    kubernetes.io/ingress.class: "nginx"  # 必须添加防止访问404
spec:
  rules:
  - host: ng.yunzaixin.top                # 配置转发地址
    http:
      paths:
      - path: /
        pathType: Prefix                   # 前缀匹配
        backend:
          service:
            name: nginx-svc                # 转发到那个svc中
            port:
              number: 80                   # 转发到svc中绑定的端口
              
---

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-tomcat-http
  annotations:
    kubernetes.io/ingress.class: "nginx"  # 必须添加防止访问404
spec:
  rules:
  - host: tomcat.yunzaixin.top            # 配置转发地址
    http:
      paths:
      - path: /
        pathType: Prefix                   # 前缀匹配
        backend:
          service:
            name: tomcat-svc               # 转发到那个svc中
            port:
              number: 8080                 # 转发到svc中绑定的端口

执行部署
kubectl apply -f nginx-tomcat-ingress.yaml

相当于访问tomcat.yunzaixin.top 或者ng.yunzaixin.top ,ingress-nginx-controller将会转发到nginx-svc或tomcat-svc,nginx-svc或tomcat-svc转发到对应得nginx或tomcat中
在这里插入图片描述

在运行ingress-nginx-controller节点主机上访问:
curl ng.yunzaixin.top
在这里插入图片描述

curl tomcat.yunzaixin.top
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1123469.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

纺织ERP系统哪家的比较好?适用的纺织ERP软件有哪些

服装纺织是比较常见的行业,也是和我们生活关联比较密切的领域。不同的原材料有差异化的采购流程和生产工序,如何实时掌握库存数据和车间产能负荷,合理制定生产排期,关系到企业的生产效率和经营成本。 纺织ERP系统是针对性开发的智…

2023年中国汽车铸造模具竞争现状及行业市场规模前景分析[图]

铸造是将熔融金属填充入铸型内,经冷却凝固而获得所需形状和性能的零部件或毛坯的制作过程,铸造工艺中使用的模具被称为铸造模具,根据铸型的材质分为砂型铸造模具和金属型铸造模具等;金属型铸造模具根据压力不同可分为重力铸造模具…

【C++入门到精通】哈希 (STL) _ unordered_map _ unordered_set [ C++入门 ]

阅读导航 前言一、unordered系列容器二、unordered_map1. unordered_map简介⭕函数特点 2. unordered_map接口- 构造函数- unordered_map的容量- unordered_map的迭代器- unordered_map的元素访问- unordered_map的修改操作- unordered_map的桶操作 三、unordered_set1. unorde…

自学系列之小游戏---贪吃蛇(vue3+ts+vite+element-plus+sass)(module.scss + tsx)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、逻辑设计分析二、代码实现1.TS interface2.javascript3.页面样式(Sass) 三、截图展示四、总结 前言 主要技术如下:vue3…

微信h5支付配置,商家存在未配置的参数,请联系商家解决

对于PC端来说,只需要开通 native支付 就可以了 但手机端h5还需要配置支付域名,并且域名只需要配置一级就可以了,比如:a.test.com, b.test.com, 只需要配置 test.com 就能满足所有的二级域名了, 而不需要配置a.test.com或者b.te…

nmp、yarn、yeoman、bower是什么东西?

1:npm(Node Package Manager):npm 是 Node.js 的包管理器,用于安装、管理和共享 JavaScript 包。它是 JavaScript 生态系统中最常用的包管理工具,可以轻松地安装和管理项目的依赖项。 2:Yarn&a…

远程桌面无法复制粘贴文件

本地通过mstsc连接到远程说面后,无法把本地文件复制到远程桌面上或者远程桌面的文件无法复制到本地机器修改。 思路:重启rdpclip服务 1、远程说面打开任务管理器 查看到rdpclip.exe程序,如果存在就关闭掉,不存在就跳过 2、winR打开运行&am…

2023 年 12 款最佳免费 PDF 阅读器

12 大最佳免费 PDF 阅读器 PDF 阅读器是一种可以打开 PDF 文件的软件,PDF 文件可能是最流行的文档格式。尽管 PDF 文件已经存在超过 25 年,但它仍然是 Internet 上文档的主要格式。但是,要打开此类文档,您必须在计算机上下载指定…

逐秒追加带序号输入当前时间:fgets fputs sprintf fprintf

//向某文件中逐秒追加带序号输入当前时间 #include<stdio.h> #include<stdlib.h> #include<time.h> #include<string.h> #include <unistd.h> int main(int argc, char const *argv[]) { time_t tv; // time(&tv);//法1:获取秒数 …

css flex实现同行div根据内容高度自适应且保持一致

有情况如下&#xff1a;三个div的高度是随着内容自适应的&#xff0c;但希望每列的高度都相同&#xff0c;即&#xff0c;都与最高的相同。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewp…

同为科技(TOWE)机架PDU产品在IDC数据中心机房建设中的应用

当今社会互联网发展迅速&#xff0c; 随着带宽需求的提升&#xff0c; 网络的保密性、安全性的要求就越来越迫切。PDU(Power Distribution Unit) 是 PDU具备电源分配和管理功能的电源分配管理器。PDU电源插座是多有设备运行的第一道也是最为密切的部件&#xff0c; PDU的好坏直…

VS Code里使用Debugger for Unity插件进行调试(2023最新版)

vs Code因为免费启动&#xff08;飓快&#xff09;的原因&#xff0c;已经成为事实的第一首选的IDE了 比sublime还快很多很多&#xff0c;其他特性包括但不限于&#xff1a; 最直接的github拉取&#xff0c;提交管理插件管理支持各种语言的识别代码分屏 是毫无疑问的第一编程…

跨境商城源码可以支持多店铺管理模式吗?

跨境商城源码是一种用于搭建跨境电商平台的模板或框架。它为开发者提供了一套完整的程序代码&#xff0c;可快速建立一个功能齐备的跨境商城网站。跨境商城源码通常具备商品展示、购物车、支付、订单管理等基础功能&#xff0c;并支持二次开发和定制。 什么是多店铺管理模式? …

忆联SR-IOV解决方案:助力云数据中心节能提效,向“绿”而行

随着AI时代的到来&#xff0c;云数据中心如何实现节能提效正成为热门话题。其中&#xff0c;SR-IOV技术凭借灵活度高以及可节约虚拟化业务算力等优势&#xff0c;是打造绿色低碳云数据中心的重要解决方案之一。 一、什么是SR-IOV 技术 SR-IOV 是由国际组织 PCI-SIG 组织定义的…

AQS是什么?AbstractQueuedSynchronizer之AQS原理及源码深度分析

文章目录 一、AQS概述1、什么是AQS2、技术解释3、基本原理4、AQS为什么这么重要 二、AQS数据结构1、AQS的结构2、ReentrantLock与AbstractQueuedSynchronizer3、AQS的state变量4、AQS的队列5、AQS的Node&#xff08;1&#xff09;Node的waitStatus&#xff08;2&#xff09;属性…

UWB工业现场数字化管理

资产管理数字化 器具场内外流转跟踪管理 无动力资产跟踪 大件地堆及成品固定区域盘点 大型资产移动/流动盘点 成品及返修车定位 无人值守人、车、物出入监测 资产移动盘点 安全生产数字化 危险区域人员/物资管理 叉车防碰撞及安全运行管理 行车防碰撞及安全运行管理 …

SLAM从入门到精通(robot上层软件开发)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们了解到&#xff0c;ros系统基本上都是依赖于ubuntu和linux来运行的。如果ros是只是跑在机器人的系统上面&#xff0c;不涉及到上层交互&am…

LeetCode:1402. 做菜顺序、2316. 统计无向图中无法互相到达点对数

1. 1402 做菜顺序 题目详细为&#xff1a; 一个厨师收集了他 n 道菜的满意程度 satisfaction &#xff0c;这个厨师做出每道菜的时间都是 1 单位时间。 一道菜的 「 like-time 系数 」定义为烹饪这道菜结束的时间&#xff08;包含之前每道菜所花费的时间&#xff09;乘以这道菜…

外汇天眼:本周无牌裸奔平台名单出炉,你踩“坑”了么?!!

监管信息早知道&#xff01;外汇天眼将每周定期公布监管牌照状态发生变化的交易商&#xff0c;以供投资者参考&#xff0c;规避投资风险。如果平台天眼评分过高&#xff0c;建议投资者谨慎选择&#xff0c;因为在外汇天眼评分高不代表平台没问题&#xff01; 以下是监管牌照发生…

Gartner发布2024 年十大战略技术趋势

10月17日&#xff0c;Gartner 发布2024年企业机构需要探索的****十大战略技术趋势。Gartner研究副总裁Bart Willemsen表示&#xff1a;“由于技术变革以及社会经济方面的不确定性&#xff0c;我们必须大胆采取行动并从战略上提高弹性&#xff0c;而不是采取临时措施。IT领导者的…