【问题标题】:error validating data: ValidationError(Deployment.spec.template.spec.volumes[0]): unknown field "hostAliases" in io.k8s.api.core.v1.Volume验证数据时出错:ValidationError(Deployment.spec.template.spec.volumes[0]):io.k8s.api.core.v1.Volume 中的未知字段“hostAliases”
【发布时间】:2023-03-15 11:16:01
【问题描述】:

我正在尝试在 kubeadm 上使用具有一个头节点和两个工作节点的指标服务器,但我不断收到未知的 hostAliases 错误

.................................................. …………

apiVersion: extensions/v1beta1
kind: Deployment
metadata: 
  labels: 
    k8s-app: metrics-server
  name: metrics-server
  namespace: kube-system
spec: 
  selector: 
    matchLabels: 
      k8s-app: metrics-server
  template: 
    metadata: 
      labels: 
        k8s-app: metrics-server
      name: metrics-server
    spec: 
      containers: 
        - 
          command: 
            - /metrics-server
            - "--kubelet-insecure-tls"
            - "--kubelet-preferred-address-types=InternalDNS,InternalIPExternalDNS,ExternalIP,Hostname"
          image: "k8s.gcr.io/metrics-server-amd64:v0.3.1"
          imagePullPolicy: Always
          name: metrics-server
          volumeMounts: 
            - 
              mountPath: /tmp
              name: tmp-dir
      serviceAccountName: metrics-server
      volumes: 
        - 
          emptyDir: {}
          hostAliases: 
            - 
              hostnames: 
                - k8s-head
              ip: "192.168.205.10"
            - 
              hostnames: 
                - k8s-node-1
              ip: "192.168.205.11"
            - 
              hostnames: 
                - k8s-node-2
              ip: "192.168.205.12"
          name: tmp-dir

【问题讨论】:

    标签: kubernetes monitoring


    【解决方案1】:

    您的 YAML 文件结构似乎有误,HostAliases 应该是这样的结构

    apiVersion: v1
    kind: Pod
    metadata:
      name: hostaliases-pod
    spec:
      restartPolicy: Never
      hostAliases:
      - ip: "127.0.0.1"
        hostnames:
        - "foo.local"
        - "bar.local"
      - ip: "10.1.2.3"
        hostnames:
        - "foo.remote"
        - "bar.remote"
    

    请注意,在 hostAliases 条目之后,您应该输入 - ip: "127.0.0.1" 并在您将要解析到此 ip 的主机名之后。

    你的 YAML 是

    hostAliases: 
      - hostnames: 
        - k8s-head 
      ip: "192.168.205.10" 
        - hostnames: 
          - k8s-node-1 
      ip: "192.168.205.11" 
        - hostnames: 
          - k8s-node-2 
      ip: "192.168.205.12" 
    

    在这里你可以找到更多关于https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/的信息

    【讨论】:

    • 我编辑了 yaml 但仍然收到此错误消息“io.k8s.api.core.v1.Container.command 的类型无效:得到“字符串”,预期为“数组”。关于如何解决这个问题的任何想法?
    • 您的 YAML 文件没有正确缩进,一个额外的空格就足以出错。注意这个例子中的缩进kubernetes.io/docs/concepts/workloads/controllers/deployment/… 在容器进入之后,将命令放在破折号(-)信号之后,没有新行,(例如 - 命令:)
    猜你喜欢
    • 2019-06-20
    • 2021-12-05
    • 2021-11-22
    • 1970-01-01
    • 2019-07-06
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 2021-03-13
    相关资源
    最近更新 更多