要将Kubernetes Service的NodePort只转发到本节点上的Pod,可以使用NodeSelector和Affinity来实现。以下是一种可能的设置方法:

  1. 创建一个带有NodeSelector的Label,用来标识目标节点。在Pod的定义中添加一个NodeSelector标签,例如:
metadata:
  labels:
    app: myapp
spec:
  ...
  nodeSelector:
    mylabel: targetnode
  1. 创建一个Service,并将其指向具有该NodeSelector标签的Pod。在Service的定义中添加一个selector字段,例如:
metadata:
  name: myservice
spec:
  selector:
    app: myapp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: NodePort
  1. 创建一个Affinity规则,以确保Service只在具有该NodeSelector标签的节点上运行。在Pod的定义中添加一个Affinity规则,例如:
spec:
  ...
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
          - matchExpressions:
              - key: mylabel
                operator: In
                values:
                  - targetnode

这样,只有具有"mylabel=targetnode"标签的节点上的Pod才会被Service的NodePort转发到

k8s service 本node的nodeport只转发到本node上面的pod怎么设置

原文地址: https://www.cveoy.top/t/topic/hJ2f 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录