【问题标题】:Kubernetes nodeSelector not working in pods, replication controllers and deploymentsKubernetes nodeSelector 在 pod、复制控制器和部署中不起作用
【发布时间】:2017-03-08 20:42:51
【问题描述】:

我正在尝试使用 nodeSelector 设置节点亲和性,如下所述:https://kubernetes.io/docs/user-guide/node-selection/

但是,无论我使用 Pod、复制控制器还是部署,我都无法让 kubectl create 正常工作。这是我得到的错误,它发生在所有类似的事情上:

来自服务器的错误(BadRequest):创建“test-pod.yaml”时出错:版本“v1”中的 Pod 无法作为 Pod 处理:[pos 222]: json: expect char '"' but got char ' t'

将“Pod”替换为“Deployment”或“ReplicationController”,到处都是同样的错误。这是我的测试 pod 的 yaml 文件:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  nodeSelector:
    ingress: yes

如果我删除文件的 nodeSelector 部分,则 pod 构建成功。这也适用于部署和复制控制器。我确保向节点添加了正确的标签。

任何帮助将不胜感激!

【问题讨论】:

  • 这可能是您在此处使用的术语。假设在创建配置时,在另一个上下文中使用的键是保留的。称它为 myIngress 看看会发生什么。
  • 啊,是的。当我不小心将true 留在那里(未引用)时,我被同样的事情所困扰。

标签: kubernetes


【解决方案1】:

在 yaml 中,令牌 yes 的计算结果为布尔值 true (http://yaml.org/type/bool.html)

在内部,kubectl 将 yaml 转换为 json 作为预处理步骤。您的节点选择器正在转换为 "nodeSelector":{"ingress":true},尝试解码为字符串到字符串映射时失败。

您可以像这样引用字符串以强制将其视为字符串: ingress: "yes"

【讨论】:

    猜你喜欢
    • 2016-09-22
    • 1970-01-01
    • 2019-11-27
    • 2020-11-18
    • 2020-03-23
    • 2021-08-01
    • 2017-08-24
    • 1970-01-01
    • 2017-07-27
    相关资源
    最近更新 更多