青冥 青冥
首页
  • Java 基础
  • Java 进阶
  • Java Java 版本新特性
  • JVM
  • MySQL
  • Tomcat
  • Nginx
  • Spring 系列

    • Spring
    • Spring IOC
    • Spring AOP
    • Spring MVC
  • ORM

    • Mybatis
  • 设计模式

    • 23 种设计模式
  • 操作系统内核
  • JVM 内存模型
  • 并发同步处理
  • Atomic 原子操作
  • 队列(Queue)
  • 线程池(Thread Pool)
  • 分布式 - 消息中间件

    • 消息中间件
  • 分布式 - 存储中间件

    • 存储中间件
  • 分布式 - RPC 框架

    • RPC 框架
  • Spring Boot
  • Spring Cloud Alibaba
  • Spring Cloud Netflix
  • Git
  • Maven
  • Jenkins
  • Linux
  • 容器化

    • Docker
    • Kubernetes
  • 面试合集

    • 缓存
  • 实战项目
  • 数据结构与算法
  • 计算机原理
  • 大数据
  • 人工智能(AI)
  • 前端
  • 留言区
  • 本站

    • 分类
    • 标签
    • 归档
  • 我的

    • 关于
  • 友情链接
🍊Gitlab (opens new window)

iByte Horizon

好记性不如烂笔头
首页
  • Java 基础
  • Java 进阶
  • Java Java 版本新特性
  • JVM
  • MySQL
  • Tomcat
  • Nginx
  • Spring 系列

    • Spring
    • Spring IOC
    • Spring AOP
    • Spring MVC
  • ORM

    • Mybatis
  • 设计模式

    • 23 种设计模式
  • 操作系统内核
  • JVM 内存模型
  • 并发同步处理
  • Atomic 原子操作
  • 队列(Queue)
  • 线程池(Thread Pool)
  • 分布式 - 消息中间件

    • 消息中间件
  • 分布式 - 存储中间件

    • 存储中间件
  • 分布式 - RPC 框架

    • RPC 框架
  • Spring Boot
  • Spring Cloud Alibaba
  • Spring Cloud Netflix
  • Git
  • Maven
  • Jenkins
  • Linux
  • 容器化

    • Docker
    • Kubernetes
  • 面试合集

    • 缓存
  • 实战项目
  • 数据结构与算法
  • 计算机原理
  • 大数据
  • 人工智能(AI)
  • 前端
  • 留言区
  • 本站

    • 分类
    • 标签
    • 归档
  • 我的

    • 关于
  • 友情链接
🍊Gitlab (opens new window)
  • Git

  • Maven

  • Jenkins

  • Linux

  • 虚拟容器

    • Docker

    • Kubernetes

      • 初识 Kubernetes
      • Kubernetes 组件&架构
      • Kubernetes Pod & Container
      • Kubernetes Controller 控制器
      • Kubernetes Service
      • Kubernetes Volumes
      • ConfigMap & Secret
      • Kubernetes Ingress
        • 1. Ingress 简介
        • 2. Ingress 和 Service 区别
        • 3. Ingress Controller
        • 4. 使用 Traefik Ingress CRD 方式
          • 4.1 pod 无法访问 Service 解决方案
      • Kubernetets Namespace
      • Kubernetes Helm
  • 互联网工具 - 专题
  • 虚拟容器
  • Kubernetes
沉梦昂志
2025-04-11
目录

Kubernetes Ingress

内容概述

官方文档:https://kubernetes.io/zh-cn/docs/concepts/services-networking/ingress/ (opens new window)

  • 1. Ingress 简介
  • 2. Ingress 和 Service 区别
  • 3. Ingress Controller
  • 4. 使用 Traefik Ingress CRD 方式
    • 4.1 pod 无法访问 Service 解决方案

# 1. Ingress 简介

Ingress 是一种 Kubernetes 资源类型,它允许在 Kubernetes 集群中暴露 HTTP 和 HTTPS 服务。 通过 Ingress,您可以将流量路由到不同的服务和端点,而无需使用不同的负载均衡器。Ingress 通常使用 Ingress Controller 实现, 它是一个运行在 Kubernetes 集群中的负载均衡器,它根据Ingress 规则配置路由规则并将流量转发到相应的服务。

在 Kubernetes 中,一个 Ingress 资源定义了一组规则,这些规则用于指定外部流量如何到达集群中的服务。 Ingress 资源定义包括域名、服务、路径和其他信息,通过这些信息,Ingress Controller 就能够将请求路由到正确的服务。 同时,Ingress 还提供了 TLS 选项,可以使用 SSL/TLS 来加密传输数据。

总之,Ingress 是一种强大的 Kubernetes 资源类型,可以帮助您在 Kubernetes 集群中轻松地管理 HTTP 和 HTTPS 服务,并 提供灵活的路由和负载均衡选项。

Ingress 简单示例: Ingress

# 2. Ingress 和 Service 区别

Ingress 和 Service都是 Kubernetes 中用于将流量路由到应用程序的机制,但它们在路由层面上有所不同:

  • Service 是 Kubernetes 中抽象的应用程序服务,它公开了一个单一的IP地址和端口, 可以用于在 Kubernetes 集群内部的 Pod 之间进行流量路由。
  • Ingress 是一个 Kubernetes 资源对象,它提供了对集群外部流量路由的规则。 Ingress 通过一个公共IP地址和端口将流量路由到一个或多个 Service。

# 3. Ingress Controller

Ingress Controller 是 Kubernetes 中的一种资源,它负责将外部请求转发到集群内部的 Service 中,并提供负载均衡、SSL 终止等功能。Ingress Controller 通常会运行在 Kubernetes 集群中,作为一组 Deployment 和 Service 的形式部署。

常见的 Ingress Controller 包括:

  1. Nginx Ingress Controller:由 Kubernetes 社区维护的另一个 Ingress Controller,它也是使用 Nginx 作为反向代理实现的,可以支持 HTTP 和 HTTPS 等协议,支持负载均衡、路由、HTTPS证书管理等功能。
  2. Ingress Nginx Controller:官方维护的一个 Ingress Controller,它是使用 Nginx 作为反向代理实现的,可以支持 HTTP 和 HTTPS 等协议,支持负载均衡、路由、HTTPS证书管理等功能。
  3. Traefik Ingress Controller:基于 Go 语言开发的 Ingress Controller,支持多种路由匹配方式和多种后端服务发现方式。
    • Traefik Ingress Controller: 标准实现 支持 官方 Ingress 路由规则 注意: 这种方式使用繁琐!
    • Traefik Route CRD(customer resuource definition)自定义资源 注意: 使用这种方式简单,自定义资源方式定义路由规则。
  4. Istio Ingress Controller:基于 Istio Service Mesh 实现的 Ingress Controller,提供了更丰富的负载均衡、流量控制和安全功能。
  5. Kong Ingress Controller:使用 Kong 作为反向代理实现 Ingress 功能,支持 API 管理和 Gateway 功能。

# 4. 使用 Traefik Ingress CRD 方式

官方网站: https://doc.traefik.io/traefik/ (opens new window)

具体参考: https://doc.traefik.io/traefik/user-guides/crd-acme/ (opens new window)

# 4.1 pod 无法访问 Service 解决方案

$ kubectl edit cm kube-proxy -n kube-system
ipvs:
excludeCIDRs: null
minSyncPeriod: 0s
scheduler: ""
strictARP: false
syncPeriod: 0s
tcpFinTimeout: 0s
tcpTimeout: 0s
udpTimeout: 0s
kind: KubeProxyConfiguration
metricsBindAddress: ""
mode: "ipvs" # 这里默认为空,填写ipvs保存

$ cat > /etc/sysconfig/modules/ipvs.modules << EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
modprobe -- br_netfilter
EOF

$ chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

$ kubectl get pod -n kube-system | grep kube-proxy |awk '{system("kubectl delete pod "$1" -n kube-system")}'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#K8s#Ingress#对外服务
最近更新: 2025/04/11, 14:29:15
ConfigMap & Secret
Kubernetets Namespace

← ConfigMap & Secret Kubernetets Namespace→

最近更新
01
Kubernetes Helm
04-11
02
Kubernetets Namespace
04-11
03
ConfigMap & Secret
04-11
更多文章>
Theme by Vdoing | Copyright © 2021-2025 光年矩阵科技有限公司 | All Rights Reserved. |
渝ICP备2021888888号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×