在 kubernetes 集群中部署 pod 时出错

问题描述 投票:0回答:2

我正在尝试将此 yaml 在我的 kubernetes 集群中部署到我的一个节点中

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment-1
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80

但是当我尝试使用命令部署它时,我收到此错误消息

pi@k8s-master-rasp4:~ $ kubectl apply -f despliegue-nginx.yaml -l kubernetes.io/hostname=k8s-worker-1
error: no objects passed to apply

有谁知道问题出在哪里吗?

谢谢

kubernetes raspberry-pi yaml
2个回答
1
投票

您不能将标签选择器 (

-l
) 与
kubectl apply...
一起使用。

使用 nodeSelector 将 pod 分配给特定节点:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment-1
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      nodeSelector:
        kubernetes.io/hostname: k8s-worker-1 # <-- updated here!
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80

0
投票

小问题:Kamol Hasan 的回答。您绝对可以将 -l 与

kubectl apply
一起使用,但您传入的标签选择器需要与 yaml 文件中 k8s 资源上的标签之一匹配。

如果有问题的 yaml 具有如下指定的标签:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment-1
  labels:
    app: nginx
    kubernetes.io/hostname: k8s-worker-1
spec:
  replicas: 3

然后它就会部署部署,尽管带有毫无意义的标签选择器。

© www.soinside.com 2019 - 2024. All rights reserved.