k8s ingress 为什么叫七层负载?2.svc为什么是四层负载
时间: 2023-06-02 19:03:36 浏览: 39
1. k8s ingress 之所以被称为七层负载,是因为它在 OSI 模型的七层中工作,即应用层。Ingress 负责将客户端请求映射到后端服务,同时支持 HTTP 和 HTTPS 协议特性,具有丰富的路由配置能力,以及灵活的流量控制。这些都是在应用层中实现的。
2. 与 k8s ingress 不同,k8s service(svc)是一个四层负载。这是因为 svc 是基于传输层(L4)运作的,它利用 Kubernetes 集群内部的虚拟 IP 地址(ClusterIP)为后端服务提供了透明的负载均衡,从而将请求路由到正确的 Pod 上。svc 主要是根据 IP 地址和端口号进行流量路由和负载均衡的。
相关问题
k8s中ingress是什么
在Kubernetes中,Ingress是一种资源类型,它充当了集群内外流量的入口。它可以将外部流量路由到集群内部的服务上。
Ingress通过定义规则和配置来管理对服务的访问。它使用一组规则来决定请求的流量如何转发,可以根据域名、路径和其他规则将请求路由到不同的服务。
Ingress控制器是Kubernetes中负责处理Ingress资源的组件。常见的Ingress控制器有Nginx Ingress Controller、Traefik、HAProxy等。
k8s v1.23.17 演示ingress, svc, deployment nginx 示例
好的,我可以为您提供一个简单的示例来演示如何使用 Kubernetes 中的 Ingress、Service 和 Deployment 部署 Nginx Web 服务器。
首先,您需要创建一个 Deployment,用来部署 Nginx Web 服务器:
```
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.20.1
ports:
- containerPort: 80
```
接下来,您需要创建一个 Service,用来暴露 Nginx Web 服务器的端口:
```
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- name: http
port: 80
targetPort: 80
type: ClusterIP
```
现在,您可以使用 Ingress 来暴露 Nginx Web 服务器的端口,使其可以通过公共 IP 地址访问:
```
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-service
port:
name: http
```
在上面的示例中,使用了 host 属性来指定要使用的域名,使用 path 属性来指定要使用的路径。您可以根据需要添加多个规则来支持不同的域名和路径。
最后,您可以使用 kubectl 命令来将上述 YAML 文件部署到 Kubernetes 集群中:
```
kubectl apply -f nginx-deployment.yaml
kubectl apply -f nginx-service.yaml
kubectl apply -f nginx-ingress.yaml
```
现在,您可以在浏览器中输入您指定的域名和路径来访问 Nginx Web 服务器了。