k8s service 本node的nodeport只转发到本node上面的pod怎么设置
要将Kubernetes Service的NodePort只转发到本节点上的Pod,可以使用NodeSelector和Affinity来实现。以下是一种可能的设置方法:
- 创建一个带有NodeSelector的Label,用来标识目标节点。在Pod的定义中添加一个NodeSelector标签,例如:
metadata:
labels:
app: myapp
spec:
...
nodeSelector:
mylabel: targetnode
- 创建一个Service,并将其指向具有该NodeSelector标签的Pod。在Service的定义中添加一个selector字段,例如:
metadata:
name: myservice
spec:
selector:
app: myapp
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: NodePort
- 创建一个Affinity规则,以确保Service只在具有该NodeSelector标签的节点上运行。在Pod的定义中添加一个Affinity规则,例如:
spec:
...
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: mylabel
operator: In
values:
- targetnode
这样,只有具有"mylabel=targetnode"标签的节点上的Pod才会被Service的NodePort转发到
原文地址: https://www.cveoy.top/t/topic/hJ2f 著作权归作者所有。请勿转载和采集!