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: 1strategy:type: Recreateselector:matchLabels:app: webtemplate:metadata:labels:app: webspec:containers:- name: nginximage: nginx:1.20.0resources:limits:cpu: "100m"ports:- containerPort: 80---apiVersion: v1
kind: Service
metadata:name: nginx-svc
spec:selector:app: webports:- protocol: TCPport: 80targetPort: 80---apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: nginx-ingannotations:nginx.ingress.kubernetes.io/rewrite-target: /
spec:ingressClassName: nginxrules:- host: nginx.com.cnhttp:paths:- path: /pathType: Prefixbackend:service:name: nginx-svcport:number: 80
https案例
资源文档kubernetes explain ingress
apiVersion: apps/v1
kind: Deployment
metadata:name: deploy-nginx
spec:replicas: 1strategy:type: Recreateselector:matchLabels:app: webtemplate:metadata:labels:app: webspec:containers:- name: nginximage: nginx:1.20.0resources:limits:cpu: "100m"ports:- containerPort: 80
---apiVersion: v1
kind: Service
metadata:name: nginx-svc
spec:selector:app: webports:- protocol: TCPport: 80targetPort: 80---apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: nginx-ingannotations:nginx.ingress.kubernetes.io/rewrite-target: /
spec:tls:- hosts:- https-nginx.com.cnsecretName: secret-tlsrules:- host: nginx.com.cnhttp:paths:- path: /pathType: Prefixbackend:service:name: nginx-svcport:number: 80