在 Kubernetes 中使用单独的 pods 创建副本集

create Replicaset with separate pods in Kubernetes

我想用单独的 pods 创建一个 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

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

缺少匹配标签。此外,您的广告连播定义未定义匹配标签。

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

您是否也尝试在 Replicaset :

中添加该标签
apiVersion: apps/v1
kind: ReplicaSet    
metadata:
  labels:
    app: user-replicaset
    app: user-pod

example 在两个 labels

中都使用了该标签

没有 spec.template.spec.containers 字段就无法创建副本集。因为在 k8s 中创建副本集默认需要这个。所以你必须需要添加模板字段。你实际上可以做你想做的,只需按照模板规范中的此处使用你的 pod。 template 是实际的 pod 规范,您将使用它来创建副本集的 pods.

这个将完全满足您的要求:


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