k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载

在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可以配置HTTP和HTTPS路由规则,将流量引导到不同的服务。

Ingress的概念和功能:

  • Ingress资源:这是用户定义的对象,描述了从外部访问集群内服务的规则。例如,它可以指定根据域名或路径来路由请求。
  • Ingress控制器:这是一个实际执行Ingress资源中定义规则的组件。常见的Ingress控制器包括Nginx Ingress Controller、Traefik、HAProxy等。Ingress控制器监控Ingress资源的变化,并相应地配置其代理服务器。

应用场景

  • 多服务管理:可以通过一个入口点管理多个服务的访问。
  • 基于域名的路由:在同一个集群中运行多个应用,使用不同的域名访问。
  • 基于路径的路由:根据URL路径将流量路由到不同的服务
  • SSL终止:可以在Ingress上配置SSL证书,为HTTPS流量提供加密。
  • 负载均衡:实现对多实例服务的负载均衡。

http案例

资源文档: kubectl explain ingress

复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deploy-nginx
spec:
  replicas: 1
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
        - name: nginx
          image: nginx:1.20.0
          resources:
            limits:
              cpu: "100m"
          ports:
            - containerPort: 80

---

apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
spec:
  selector:
    app: web
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      
---


apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ing
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  rules:
  - host: nginx.com.cn
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: nginx-svc
            port:
              number: 80

https案例

资源文档kubernetes explain ingress

复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deploy-nginx
spec:
  replicas: 1
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
        - name: nginx
          image: nginx:1.20.0
          resources:
            limits:
              cpu: "100m"
          ports:
            - containerPort: 80
---

apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
spec:
  selector:
    app: web
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      
---

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ing
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  tls:
  - hosts:
      - https-nginx.com.cn
    secretName: secret-tls
  rules:
  - host: nginx.com.cn
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: nginx-svc
            port:
              number: 80
相关推荐
小肥君43 分钟前
docker无法连接GPU资源解决方案
docker·容器·eureka
liux35281 小时前
K8s存储卷全解析:PV/PVC/StorageClass 关系
kubernetes
江华森4 小时前
从零搭建 Kubernetes 集群并部署 Kuboard v3 管理面板 —— 国内环境完整实战教程
容器·kubernetes
友莘居士5 小时前
KingbaseES Docker速查表
运维·docker·容器
小肥君6 小时前
docker镜像配置
运维·docker·容器
某林2128 小时前
Isaac Lab (v2.3.2) Docker 本地化部署与底层排障全解析
运维·docker·容器·架构·iassc
iDao技术魔方10 小时前
WSL 配 GPU 用 Docker 的折腾指南(2026 年版)
运维·docker·容器
步步为营DotNet10 小时前
.NET 11 中 Native AOT 在云原生场景下的深度剖析与实践
云原生·.net
跳动的世界线10 小时前
WSL 2 + Docker 本地全栈开发环境配置指南
运维·docker·容器