k8s流量走向 1
也就是web应用的使用者,通过外网访问云主机,云主机将请求送入k8s?这个完整的流量走向是
是的,用户通过外网访问你的云主机,云主机会将请求转发到 Kubernetes 集群中的相应服务。以下是一个典型的流量走向,从外部用户访问你的 Web 应用到 Kubernetes 集群内部服务的全过程:
1. 用户访问 Web 应用
用户在浏览器中输入你的 Web 应用的 URL,例如 http://203.0.113.1。这里的 203.0.113.1 是你的云主机的公共 IP 地址。
2. 请求到达云主机
用户的请求通过互联网到达云主机的公共 IP 地址。云主机接收到请求后,通常会通过负载均衡器或反向代理将请求转发到 Kubernetes 集群。
3. 负载均衡器或反向代理
在许多云环境中,负载均衡器(如 AWS ELB、GCP Load Balancer、Azure Load Balancer)或反向代理(如 Nginx、HAProxy)会处理外部请求,并将其转发到 Kubernetes 集群的入口点(Ingress Controller 或 NodePort)。
配置示例(使用 Nginx 作为反向代理)
server {
listen 80;
server_name 203.0.113.1;
location / {
proxy_pass http://k8s-cluster-ip:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
4. Kubernetes Ingress Controller 或 NodePort
负载均衡器或反向代理将请求转发到 Kubernetes 集群的 Ingress Controller 或 NodePort 服务。
- Ingress Controller:处理 HTTP(S) 路由规则,并将请求转发到相应的服务。
- NodePort:将请求转发到集群内的某个节点上的特定端口。
Ingress 配置示例
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
namespace: default
spec:
rules:
- host: 203.0.113.1
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80
5. Kubernetes Service
Ingress Controller 或 NodePort 将请求转发到 Kubernetes Service。Service 根据其配置,将请求负载均衡到后端的 Pod 上。
Service 配置示例
apiVersion: v1
kind: Service
metadata:
name: my-service
namespace: default
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: ClusterIP
6. Pod
Service 将请求转发到匹配的 Pod 上,Pod 运行你的应用容器,处理请求并生成响应。
7. 响应返回用户
响应通过相同的路径返回用户:
- Pod 将响应发送回 Service。
- Service 将响应发送回 Ingress Controller 或 NodePort。
- Ingress Controller 或 NodePort 将响应发送回负载均衡器或反向代理。
- 负载均衡器或反向代理将响应发送回用户的浏览器。
流量走向总结
- 用户 -> 云主机公共 IP 地址(通过互联网)。
- 云主机 -> 负载均衡器或反向代理(如 Nginx)。
- 负载均衡器或反向代理 -> Kubernetes Ingress Controller 或 NodePort。
- Ingress Controller 或 NodePort -> Kubernetes Service。
- Kubernetes Service -> Pod。
- Pod -> Kubernetes Service -> Ingress Controller 或 NodePort -> 负载均衡器或反向代理 -> 用户。
这个流量走向确保了外部用户能够通过公共 IP 地址访问 Kubernetes 集群内部的服务,同时利用负载均衡和反向代理提高系统的可靠性和性能。