K8S 外部访问配置、 Ingress、NodePort

news2024/11/18 19:26:46

将K8S部署应用提供给外部访问一般有三种方式:

  • NodePort 暴露端口到节点,提供了集群外部访问的入口
  • LoadBalancer 需要负载均衡器(通常都需要云服务商提供,裸机可以安装 METALLB 测试)
  • Ingress 统一管理 svc的外部访问,用于实现用域名的方式访问k8s内部应用,常用类型 Treafik、Nginx
    • 相对 NodePort 来说,Ingress 就实现外部访问的统一管理,类型配置 nginx.conf 一样,根据 域名、路由等转发到不同服务上
    • 可以随时更改配置规则并生效,方便统一管理

NodePort 简单示例:

  • spec.ports.nodePort 可以实现一个svc的外部访问配置
apiVersion: v1
kind: Service
metadata:
  labels:
    expose: "true"
    app: device-info
    provider: xiaoshu
    version: "1.0"
    group: com.xiaoshu
  name: device-info-1
  namespace: xiaoshu
spec:
  type: NodePort
  ports:
    - name: http
      port: 30802         # 服务端口
      targetPort: 8300  # 容器端口
      protocol: TCP
      nodePort: 30802    # 外部访问端口
  selector:
    app: device-info
    provider: xiaoshu
    version: "1.0"
    group: com.xiaoshu

Ingress 简单示例:

准备了两个简单的jar 服务,服务一 device-info-1 服务端口8001、服务二 device-info-2 服务端口8002

@ApiOperation(value = "测试接口")
@GetMapping("/server")
public String test(){
    return "服务一:192.168.2.207";
}
@ApiOperation(value = "测试接口")
@GetMapping("/server")
public String test(){
    return "服务二:192.168.2.208";
}

yml

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: device-info
    provider: xiaoshu
    version: "1.0"
    group: com.xiaoshu
  name: device-info-1
  namespace: xiaoshu
spec:
  replicas: 1
  selector:
    matchLabels:
      app: device-info
      provider: xiaoshu
      version: "1.0"
      group: com.xiaoshu
  template:
    metadata:
      labels:
        app: device-info
        provider: xiaoshu
        version: "1.0"
        group: com.xiaoshu
    spec:
      containers:
      - name: device-info-1
        image: core.harbor.domain/jar/device-info-1:v1
      nodeName: k8s-1  
---
apiVersion: v1
kind: Service
metadata:
  labels:
    expose: "true"
    app: device-info
    provider: xiaoshu
    version: "1.0"
    group: com.xiaoshu
  name: device-info-1
  namespace: xiaoshu
spec:
  type: ClusterIP
  ports:
    - name: http
      port: 8001          # 服务端口
      targetPort: 8300  # 容器端口
      protocol: TCP
  selector:
    app: device-info
    provider: xiaoshu
    version: "1.0"
    group: com.xiaoshu
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: device-info-2
    provider: xiaoshu
    version: "1.0"
    group: com.xiaoshu
  name: device-info-2
  namespace: xiaoshu
spec:
  replicas: 1
  selector:
    matchLabels:
      app: device-info-2
      provider: xiaoshu
      version: "1.0"
      group: com.xiaoshu
  template:
    metadata:
      labels:
        app: device-info-2
        provider: xiaoshu
        version: "1.0"
        group: com.xiaoshu
    spec:
      containers:
      - name: device-info-2
        image: core.harbor.domain/jar/device-info-2:v1
      nodeName: k8s-1  
---
apiVersion: v1
kind: Service
metadata:
  labels:
    expose: "true"
    app: device-info-2
    provider: xiaoshu
    version: "1.0"
    group: com.xiaoshu
  name: device-info-2
  namespace: xiaoshu
spec:
  type: ClusterIP
  ports:
    - name: http
      port: 8002        
      targetPort: 8300  # 容器端口
      protocol: TCP
  selector:
    app: device-info-2
    provider: xiaoshu
    version: "1.0"
    group: com.xiaoshu

Ingress yml

  • 根据域名转发到不同的 服务上
  • 注意labels 配置,与svc可以匹配
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: device-info-ingress
  namespace: xiaoshu
  annotations:
    #kubernetes.io/ingress.class: "nginx"
    #nginx.ingress.kubernetes.io/rewrite-target: / #路径重写,需要安装NGINX Ingress控制器生效
  labels:
    app: device-info
    provider: xiaoshu
    version: "1.0"
    group: com.xiaoshu
spec:
  rules:
  - host: device.info.ingress1
    http:
      paths:
      - backend:
          service:
            name: device-info-1
            port:
              number: 8001 #服务端口
        path: /device-info/server
        pathType: Prefix  
  - host: device.info.ingress2
    http:
      paths:
      - backend:
          service:
            name: device-info-2
            port:
              number: 8002 #服务端口
        path: /device-info/server
        pathType: Prefix          

12
3
4

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

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

相关文章

Kruskal(克鲁斯卡尔)算法总结

知识概览 克鲁斯卡尔算法适用于稀疏图求最小生成树&#xff0c;时间复杂度为O(mlogm)。 例题展示 题目链接 Kruskal算法求最小生成树 859. Kruskal算法求最小生成树 - AcWing题库https://www.acwing.com/problem/content/861/ 代码 #include <iostream> #include &l…

【Git-IDEA】在 IDEA 中使用 Git(clone、pull、push、merge、建立本地分支与远程分支的连接)

【Git-IDEA】在 IDEA 中使用 Git&#xff08;clone、pull、push、merge、建立本地分支与远程分支的连接&#xff09; 1&#xff09;Gitee2&#xff09;配置 Git3&#xff09;初始化本地仓库4&#xff09;连接远程仓库5&#xff09;clone5.1.方式一5.2.方式二 6&#xff09;分支…

el-date-picker周选择器获取选择的日期范围

<el-date-pickerv-model"formData.date"type"week"format"yyyy 第 WW 周"placeholder"选择周"change"weekChange"> </el-date-picker>// 方法一&#xff1a;weekChange(val) {let startTime new Date(val.getT…

向华为学习:IPD运作-PDP产品开发流程-验证和发布阶段的关键活动

前几天华研荟为您分享了IPD体系中产品开发流程&#xff08;PDP流程&#xff0c;很多时候也直接称为IPD流程&#xff09;前三个阶段&#xff1a;概念、计划和开发阶段的主要内容和关键活动。 今天我们继续来介绍PDP流程的后面两个&#xff1a;验证、发布阶段的主要内容和关键活动…

处理及调度与死锁

处理及调度与死锁 一、前言 前面介绍了进程与线程的相关概念&#xff0c;现在继续学习处理机调度&#xff0c;处理机是系统最重要的资源&#xff0c;提高处理机的利用率和改善系统性能&#xff0c;在很大程度上取决于处理机调度性能的好坏&#xff0c;下面来介绍处理的调度以…

大一C语言查缺补漏 12.24

遗留问题&#xff1a; 6-1 1 在C语言中&#xff0c;如果要保留小数的话&#xff0c;一定要除以2.0&#xff0c;而不是2。 设整型变量m,n,a,b的值均为1&#xff0c;执行表达式&#xff08;m a>b&#xff09;||(n a<b)后&#xff0c;表达式的值以及变量m和n的值是&#…

iPhone恢复出厂设置照片还在吗?分享3个恢复方法!

随着使用时间的增长&#xff0c;手机可能会出现卡顿、运行缓慢等情况。此时&#xff0c;将手机恢复出厂设置可以清除缓存和一些不必要的文件&#xff0c;从而提高设备的运行速度。 但是&#xff0c;每当涉及恢复出厂设置的问题时&#xff0c;许多小伙伴都会关心一个问题&#…

Centos7:Jenkins+gitlab+node项目启动(1)

安装Jenkins 虚拟机配置 需要的软件 https://download.csdn.net/download/myy2012/88668255 解压到目录 用xftp 上传 开始安装jdk rmp -ivh jdk-8u181-linux-x64.rpm 开始安装jenkins rmp -ivh jenkins-2.99-1.1.noarch.rpm 修改用户与端口(端口按需修改) vim /etc/sy…

mysql中按字段1去重,按字段2降序排序

数据举例 sql语句 按字段field4降序排序&#xff0c;按字段field1去重 SELECT tt1.name2,tt1.field1,tt1.field2,tt1.field4 from ( select tt2.name2,tt2.field1,tt2.field2,tt2.field4 from t2 tt2 ORDER BY tt2.field4 DESC ) tt1 GROUP BY tt1.field1执行结果

stm32学习笔记:TIM-定时中断和外部时钟

定时器四部分讲解内容&#xff0c;本文是第一部分 ​​​​​TIM简介 基本定时器 时基单元&#xff1a;预分频器、计数器、自动重装载寄存器 预分频器之前&#xff0c;连接的就是基准计数时钟的输入&#xff0c;由于基本定时器只能选择内部时钟&#xff0c;所以可以认为这根…

【hcie-cloud】【12】华为云Stack故障处理【故障处理通用处理原则、常见华为云Stack故障处理(计算域故障场景)】【上】

文章目录 前言故障处理通用处理原则故障处理流程故障信息收集及故障范围、类型识别ManageOne运维面收集告警信息AutoOps工具故障场景信息收集AutoOps工具自动化采集HCS信息 (1)AutoOps工具自动化采集HCS信息 (2)故障初期定位方向故障恢复例行维护讨论: 哪一环比较重要&#xff…

ssm基于jsp的网络书店系统论文

摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于网络书店商城当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了网络书店商城&#xff0c;它彻底改变了过去传统的…

Linux的账号及权限管理

一.管理用户账号 1.1 用户账户的分类 1.1.1 用户账号的分类 超级用户&#xff1a;&#xff08;拥有至高无上的权利&#xff09; root用户是Linux操作系统中默认的超级用户账号&#xff0c;对本主机拥有最高的权限&#xff0c;系统中超级用户是唯一的。普通用户&#xff1a; …

ChatGPT如何在地学、GIS、气象、农业、生态、环境等领域中完美应用

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮&#xff0c;可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

利用易点易动设备管理系统优化企业设备巡检流程

随着科技的发展,各种物联网IoT技术日趋成熟,各种智能设备也被广泛应用于各行各业。相比传统手写方式记录设备状态信息,利用数字化设备管理系统收集和记录设备运行数据,无论是从工作效率还是数据准确性来看,都能获得很大提升。作为一家制造企业,我们在日常设备运行与维修保养中,…

CAN协议FPGA篇

一.引言 CAN&#xff08;Controller Area Network&#xff09;总线&#xff0c;即控制器局域网总线&#xff0c;是一种功能丰富的车用总线标准。该协议最初是由德国博世&#xff08;Bosch&#xff09;公司在1983年制定的&#xff0c;之后在美国密歇根州底特律举行的汽车工程师协…

Qt 中使用 MySQL 数据库保姆级教程(下)

作者&#xff1a;billy 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 前言 上篇中我们安装好了 MySQL 数据库和 Navicat 软件&#xff0c;下面在 Qt 中尝试使用数据库 1. 在 Qt 中连接 MySQL 数据库&#…

实现阿里云oss云存储,简单几步

一、前言 虽然平常学习用的不多&#xff0c;但是用的时候再去找官方文档&#xff0c;也很繁琐&#xff0c;不如直接整理以下&#xff0c;方便粘贴复制&#xff0c;本文介绍两种图片上传方式①普通上传②服务端签名直传 1.普通上传 加载maven依赖 <dependency><grou…

外汇天眼:心态为何是交易成败的第一要素?

外汇天眼&#xff1a;心态为何是交易成败的第一要素&#xff1f; 交易是一项高难度、高复杂度的任务&#xff0c;其背后需要具备纪律性、适应性强的性格&#xff0c;以及严密的计划和执行力。 良好的交易心态是成为优秀交易者的关键要素。 从新手到精湛的交易者&#xff0c;这…

logstash收集华为、H3C、Cisco交换机日志

网络设备配置 将 syslog-ip 替换成服务器的IP地址。 Huawei info-center loghost source interface info-center loghost syslog-ip local-time facility local6 H3C info-center loghost source interface info-center loghost syslog-ip facility local5 Aruba logging arm …