【Kubernetes】外暴露服务方式
会在所有节点(图示中的VM)上开放一个特定端口(图示中的30007),任何发送到该端口的流量都被转发到对应服务(图示中的Service)。但它可以充当集群的入口点,它可以将路由规则整合到一个资源中,并扮演“智能路由”的角色。在云环境(例如Azure)中,该服务类型会自动创建一个外部负载均衡器。负载均衡器会分配一个外部IP,并将流量分发到服务后端的不同实例。Ingress其实并不是一种服务类型,也就
·
对外暴露服务的方式
ClusterIP
ClusterIP,顾名思义,集群IP。它的作用就是为了能够让其所属Pod能够负载均衡且需要有一个虚拟IP(VIP)提供给IPtables。由于VIP没有挂接到网络设备,所以不能直接访问。
ClusterIP是Service的默认类型,如果没有指定Service的type,默认就是ClusterIP

apiVersion: v1
kind: Service
metadata:
name: my-internal-service
spec:
type: ClusterIP
selector:
app: mynginx
ports:
- name: http
protocol: TCP
port: 80
NodePort
NodePort会在所有节点(图示中的VM)上开放一个特定端口(图示中的30007),任何发送到该端口的流量都被转发到对应服务(图示中的Service)。
- 用途: 允许外部流量访问服务。
- 特点:
- 在每个节点上打开一个特定的端口(介于 30000-32767之间),将流量转发到服务。
- 可通过
<NodeIP>:<NodePort>的形式访问服务。- 使用场景: 简单且快速地暴露服务,适用于开发和调试阶段。

apiVersion: v1
kind: Service
metadata:
name: my-nodeport-service
spec:
type: NodePort
selector:
app: MyApp
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
## 当type为NodePort时,如果不指定nodePort的值,系统将选择一个随机端口。大多数时候应该让k8s来选择端口,用户自己来选择可用端口代价太大
nodePort: 30007
LoadBalancer
在云环境(例如Azure)中,该服务类型会自动创建一个外部负载均衡器。
负载均衡器会分配一个外部IP,并将流量分发到服务后端的不同实例。
- 功能:通过云平台(如 Azure)自动创建外部负载均衡器,分配公网 IP 并暴露服务。
- 特点:
- 自动提供稳定的外部访问入口。
- 每个服务需独立负载均衡器,可能增加云资源成本。
- 适用场景:生产环境需高可用且依赖云平台支持的服务。
Ingress
Ingress其实并不是一种服务类型,也就是说它并不是服务(
Service),也和Service中Type属性无关。但它可以充当集群的入口点,它可以将路由规则整合到一个资源中,并扮演“智能路由”的角色。
- 用途: 是一种更高级的流量管理方式,使得可以通过单个IP和域名来访问多个服务。
- 特点:
- 使用 Ingress 控制器来管理和配置 HTTP 和 HTTPS 流量。
- 提供了基于路径和域的路由功能,可以配置SSL等。
- 带来更灵活的协议支持和认证功能。
- 使用场景: 适用于需要复杂路由规则和统一入口点的场合,比如多域、路径路由等。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: sh-presales-ingress
namespace: sh-genai
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /aigc-copilot
pathType: Prefix
backend:
service:
name: aigc-copilot-fe-service
port:
number: 80
更多推荐


所有评论(0)