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
相关推荐
阿里云云原生6 小时前
阿里云日志服务 SLS 全新升级,打造 Agent 时代的智能数据引擎
云原生
阿里云云原生6 小时前
从“治已病”到“治未病”:浩瀚能源与阿里云共建充电补能异地双活高可用体系实践
云原生
wzq11_6666 小时前
kubernetes集群——灰度发布
云原生·容器·kubernetes
阿里云云原生8 小时前
阿里云发布 Alibaba Cloud AI Agent Handbook,阐述“智能面积”
云原生
灯澜忆梦9 小时前
【docker】#1 | Docker 初识
运维·docker·容器
骑着蜗牛撵大象32710 小时前
穿越 Docker 内核迷雾:镜像分层的叠加态与卷挂载的空间穿梭
运维·docker·容器·联合文件系统·卷挂载·镜像分层·存储驱动
吴声子夜歌11 小时前
Docker入门与实战——Docker数据管理
docker·容器
vipxieliang11 小时前
Kubernetes 的“操作系统化”:从容器编排到 AI 基础设施控制平面
kubernetes
程序员老赵11 小时前
Docker 部署 TeslaMate:轻松搭建特斯拉车辆数据记录平台
docker·容器·开源
月落汀兰12 小时前
为什么跨网桥容器 ping 不通?Docker 网络模式详解,端口映射、容器访问外网底层实战
网络·docker·容器