我正在尝试将此 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
有谁知道问题出在哪里吗?
谢谢
您不能将标签选择器 (
-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
小问题: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
然后它就会部署部署,尽管带有毫无意义的标签选择器。