k8s nginx ingress介绍

Kubernetes Nginx Ingress 概述

Nginx Ingress 是 Kubernetes 中基于 Nginx 的 Ingress 控制器,用于管理集群内外部流量的路由规则。它将外部请求路由到集群内不同的服务,支持基于域名、路径等规则的灵活配置。


Nginx Ingress 的核心组件

Ingress 资源
定义路由规则的 Kubernetes 资源对象,包括主机名、路径和后端服务的映射关系。

Nginx Ingress Controller
负责监听 Ingress 资源的变化,动态生成 Nginx 配置并重载 Nginx 服务。

Nginx
实际处理请求的反向代理服务器,由 Controller 动态配置。


安装 Nginx Ingress Controller

通过 Helm 或 YAML 文件部署 Nginx Ingress Controller。

Helm 安装

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm install ingress-nginx ingress-nginx/ingress-nginx

YAML 部署
从官方仓库下载部署文件:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/cloud/deploy.yaml

配置 Ingress 规则

基本路由规则
以下示例将 example.com 的流量路由到后端服务 my-service 的 80 端口:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
spec:
  rules:
  - host: example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-service
            port:
              number: 80

TLS 配置
为 Ingress 添加 HTTPS 支持:

spec:
  tls:
  - hosts:
    - example.com
    secretName: example-tls

常用功能与配置

路径重写
通过注解 nginx.ingress.kubernetes.io/rewrite-target 实现路径重定向:

metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1

负载均衡配置
通过注解调整负载均衡策略:

metadata:
  annotations:
    nginx.ingress.kubernetes.io/load-balance: "round_robin"

访问控制
限制 IP 或基本认证:

metadata:
  annotations:
    nginx.ingress.kubernetes.io/whitelist-source-range: "192.168.1.0/24"

监控与日志

启用 Prometheus 监控
通过注解暴露 metrics:

metadata:
  annotations:
    prometheus.io/scrape: "true"
    prometheus.io/port: "10254"

查看日志
获取 Nginx Ingress Controller 日志:

kubectl logs -n ingress-nginx <ingress-controller-pod-name>

常见问题与排查

规则未生效
检查 Ingress 资源状态:

kubectl get ingress

Nginx 配置错误
查看生成的 Nginx 配置:

kubectl exec -n ingress-nginx <ingress-controller-pod-name> -- cat /etc/nginx/nginx.conf

证书问题
验证 TLS Secret 是否正确:

kubectl describe secret example-tls

性能优化

启用 HTTP/2
通过注解启用 HTTP/2:

metadata:
  annotations:
    nginx.ingress.kubernetes.io/http2-push-preload: "true"

调整 Worker 进程
通过 ConfigMap 配置 Nginx worker 数量:

data:
  worker-processes: "4"

以上内容涵盖了 Nginx Ingress 的核心功能、配置方法和常见问题解决方案,适用于大多数 Kubernetes 环境。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云原生运维

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值