K8S 外部访问配置、 Ingress、NodePort

2023-12-24 10:20

本文主要是介绍K8S 外部访问配置、 Ingress、NodePort,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

将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-infoprovider: xiaoshuversion: "1.0"group: com.xiaoshuname: device-info-1namespace: xiaoshu
spec:type: NodePortports:- name: httpport: 30802         # 服务端口targetPort: 8300  # 容器端口protocol: TCPnodePort: 30802    # 外部访问端口selector:app: device-infoprovider: xiaoshuversion: "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-infoprovider: xiaoshuversion: "1.0"group: com.xiaoshuname: device-info-1namespace: xiaoshu
spec:replicas: 1selector:matchLabels:app: device-infoprovider: xiaoshuversion: "1.0"group: com.xiaoshutemplate:metadata:labels:app: device-infoprovider: xiaoshuversion: "1.0"group: com.xiaoshuspec:containers:- name: device-info-1image: core.harbor.domain/jar/device-info-1:v1nodeName: k8s-1  
---
apiVersion: v1
kind: Service
metadata:labels:expose: "true"app: device-infoprovider: xiaoshuversion: "1.0"group: com.xiaoshuname: device-info-1namespace: xiaoshu
spec:type: ClusterIPports:- name: httpport: 8001          # 服务端口targetPort: 8300  # 容器端口protocol: TCPselector:app: device-infoprovider: xiaoshuversion: "1.0"group: com.xiaoshu
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: device-info-2provider: xiaoshuversion: "1.0"group: com.xiaoshuname: device-info-2namespace: xiaoshu
spec:replicas: 1selector:matchLabels:app: device-info-2provider: xiaoshuversion: "1.0"group: com.xiaoshutemplate:metadata:labels:app: device-info-2provider: xiaoshuversion: "1.0"group: com.xiaoshuspec:containers:- name: device-info-2image: core.harbor.domain/jar/device-info-2:v1nodeName: k8s-1  
---
apiVersion: v1
kind: Service
metadata:labels:expose: "true"app: device-info-2provider: xiaoshuversion: "1.0"group: com.xiaoshuname: device-info-2namespace: xiaoshu
spec:type: ClusterIPports:- name: httpport: 8002        targetPort: 8300  # 容器端口protocol: TCPselector:app: device-info-2provider: xiaoshuversion: "1.0"group: com.xiaoshu

Ingress yml

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

12
3
4

这篇关于K8S 外部访问配置、 Ingress、NodePort的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Redis MCP 安装与配置指南

《RedisMCP安装与配置指南》本文将详细介绍如何安装和配置RedisMCP,包括快速启动、源码安装、Docker安装、以及相关的配置参数和环境变量设置,感兴趣的朋友一起看看吧... 目录一、Redis MCP 简介二、安www.chinasem.cn装 Redis MCP 服务2.1 快速启动(推荐)2.

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

WinForm跨线程访问UI及UI卡死的解决方案

《WinForm跨线程访问UI及UI卡死的解决方案》在WinForm开发过程中,跨线程访问UI控件和界面卡死是常见的技术难题,由于Windows窗体应用程序的UI控件默认只能在主线程(UI线程)上操作... 目录前言正文案例1:直接线程操作(无UI访问)案例2:BeginInvoke访问UI(错误用法)案例

Spring Boot Maven 插件如何构建可执行 JAR 的核心配置

《SpringBootMaven插件如何构建可执行JAR的核心配置》SpringBoot核心Maven插件,用于生成可执行JAR/WAR,内置服务器简化部署,支持热部署、多环境配置及依赖管理... 目录前言一、插件的核心功能与目标1.1 插件的定位1.2 插件的 Goals(目标)1.3 插件定位1.4 核

RabbitMQ消息总线方式刷新配置服务全过程

《RabbitMQ消息总线方式刷新配置服务全过程》SpringCloudBus通过消息总线与MQ实现微服务配置统一刷新,结合GitWebhooks自动触发更新,避免手动重启,提升效率与可靠性,适用于配... 目录前言介绍环境准备代码示例测试验证总结前言介绍在微服务架构中,为了更方便的向微服务实例广播消息,

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

Spring Boot spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu