servcie
This commit is contained in:
43
k8s知识笔记/三、serveice/3、NodePort类型.conf
Normal file
43
k8s知识笔记/三、serveice/3、NodePort类型.conf
Normal file
@@ -0,0 +1,43 @@
|
||||
一、NodePort类型的Service
|
||||
|
||||
NodePort是Kubernetes中Service的另一种类型。
|
||||
它为Service分配一个静态端口, 这个端口在每个节点上都是开放的, 可以通过节点的IP地址和这个端口来访问Service。
|
||||
NodePort类型的Service通常用于将集群内的服务暴露给集群外部的客户端。
|
||||
|
||||
例如, 假设有一个名为my-nodeport-service的Service, 它的NodePort端口是30007。
|
||||
集群外部的客户端可以通过访问任意一个节点的IP地址和端口30007来与my-nodeport-service通信, 而不需要知道my-nodeport-service背后的Pod的具体IP地址。
|
||||
|
||||
集群外 → NodeIP:NodePort → ClusterIP → Pod
|
||||
|
||||
1.1、NodePort的端口范围
|
||||
NodePort的端口范围是30000到32767, 这是Kubernetes默认
|
||||
可以通过修改kube-apiserver的--service-node-port-range参数来更改这个范围。
|
||||
|
||||
|
||||
1.2、NodePort的工作原理
|
||||
当创建一个NodePort类型的Service时, Kubernetes会在每个节点上开放一个指定的端口。
|
||||
当集群外部的客户端发送请求到这个端口时, 请求会被转发到Service的ClusterIP, 然后再由ClusterIP将请求路由到后端的Pod。
|
||||
这种转发和路由通常是通过kube-proxy来实现的, kube-proxy会在每个节点上运行, 负责监听NodePort端口并将请求转发到相应的ClusterIP。
|
||||
|
||||
1.3、externalTrafficPolicy
|
||||
NodePort类型的Service有一个externalTrafficPolicy字段, 用于控制外部流量的路由策略。
|
||||
该字段有两个可选值: Local和Cluster。
|
||||
|
||||
Local: 只将流量路由到与请求源节点相同节点上的Pod。这种策略可以减少跨节点的网络延迟, 但可能导致某些节点上的Pod过载, 而其他节点上的Pod闲置。
|
||||
Cluster: 将流量路由到集群中所有匹配的Pod, 无论它们位于哪个节点上。这种策略可以实现更均匀的负载分布, 但可能增加跨节点的网络延迟。
|
||||
|
||||
1.4、示例配置文件
|
||||
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: my-nodeport-service
|
||||
namespace: default
|
||||
spec:
|
||||
type: NodePort
|
||||
selector:
|
||||
app: my-app
|
||||
ports:
|
||||
- port: 80 # Service暴露的端口
|
||||
targetPort: 8080 # Pod监听的端口
|
||||
nodePort: 30007 # NodePort端口
|
||||
Reference in New Issue
Block a user