在无头服务上设置 NodeAffinity 时出现问题

Problem setting NodeAffinity on Headless Service

按照本教程 (https://portworx.com/run-ha-kafka-azure-kubernetes-service/) 在 Azure Kubernetes 服务上设置 Kafka 集群,我 运行 在部署 Headless Zookeeper 服务时遇到问题。

运行这个yml用kubectl部署Zookeeper服务,报错如下

apiVersion: v1
kind: Service
metadata:
  name: zk-headless
nodeAffinity:  labels:
    app: zk-headless
spec:
  ports:
  - port: 2888
    name: server
  - port: 3888
    name: leader-election
  clusterIP: None
  selector:
    app: zk
error converting YAML to JSON: yaml: line 5: mapping values are not allowed in this context

我的问题是,如何分配 nodeAffinity 值?我应该使用这个吗:

requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:

Kubernetes Service 对象没有 nodeAffinity 字段,因为 Service 资源在节点上没有 运行。事实上,它们根本 "run" - 它们是网络规则。

网站上提供的示例存在复制粘贴错误。应该是:

apiVersion: v1
kind: Service
metadata:
  name: zk-headless
  labels:
    app: zk-headless
spec:
  ports:
    - port: 2888
      name: server
    - port: 3888
      name: leader-election
  clusterIP: None
  selector:
    app: zk

除了 Utku 的回答——我建议使用 "kubectl explain service" 命令来查看哪些字段可以添加到 kubernetes 对象,如服务或部署或 Pod