【问题标题】:create Replicaset with separate pods in Kubernetes在 Kubernetes 中创建具有单独 pod 的 Replicaset
【发布时间】:2021-04-21 05:45:20
【问题描述】:

我想创建一个带有单独 pod 的 ReplicaSet。

Pods

apiVersion: v1
kind: Pod
metadata:
  name: user-pod
  labels:
    app: user-pod
spec:
  containers:
    - name: user-container
      image: kia9372/store-user

Replicaset

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: user-replicaset
  labels:
    app: user-replicaset
spec:
  replicas: 3
  selector:
    matchLabels:
      app: user-pod

但是当我执行以下命令时,它会抛出以下错误:

kubectl create -f user-replicaset.yml 
 
>error: error validating "user-replicaset.yml": 
error validating data: ValidationError(ReplicaSet.spec.selector): 
unknown field "app" in io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector; 
if you choose to ignore these errors, turn validation off with --validate=false

有什么问题?我该如何解决?

【问题讨论】:

  • 该错误似乎与您拥有的 YAML 不匹配:selector 字段的类型为 LabelSelector,而 app 不是它的直接子级。您可以仔细检查您在本地拥有的内容的缩进吗? (直接创建 ReplicaSet 也很不寻常;您更常见的是创建一个 Deployment,它在内部管理 ReplicaSet。)
  • @DavidMaze 是的,我知道我可以创建一个开发,但我需要使用单独的文件
  • (看起来您编辑了问题以添加matchLabels:;您遇到的错误与没有该字段的原始问题匹配,并且@AydinK's answer。)

标签: kubernetes minikube


【解决方案1】:

如果没有 spec.template.spec.containers 字段,您将无法创建副本集。因为默认情况下需要在 k8s 中创建副本集。所以你必须需要添加模板字段。你实际上可以做你想做的事,只需在模板规范中使用你的 pod。 template 是您将用来创建副本集的 pod 的实际 pod 规范。

这个会做你要求的事情:


apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: user-replicaset
  labels:
    app: user-replicaset
spec:
  replicas: 3
  selector:
    matchLabels:
      app: user-pod
  template:
    metadata:
      labels:
        app: user-pod
    spec:
      containers:
      - name: user-container
        image: kia9372/store-user

【讨论】:

    【解决方案2】:

    缺少匹配标签。此外,您的 pod 定义没有定义匹配的标签。

    查看文档以获得正确的设置: https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/

    【讨论】:

    • 我编辑了我的问题,但仍然显示该错误
    【解决方案3】:

    您是否尝试在 Replicaset : 中添加该标签

    apiVersion: apps/v1
    kind: ReplicaSet    
    metadata:
      labels:
        app: user-replicaset
        app: user-pod
    

    这个examplelabels 中都使用了该标签

    【讨论】:

      猜你喜欢
      • 2023-01-04
      • 2016-09-30
      • 2015-10-31
      • 1970-01-01
      • 2020-08-14
      • 1970-01-01
      • 2016-02-04
      • 2015-09-01
      • 1970-01-01
      相关资源
      最近更新 更多