[英]kubectl run override nodeselctor: error: Invalid JSON Patch
我正在尝试覆盖kubectl run
的节点选择器。
kubectl run -it powershell --image=mcr.microsoft.com/powershell:lts-nanoserver-1809-20211215 --restart=Never --overrides='{ "apiVersion": "v1", "spec": { "template": { "spec": { "nodeSelector": { "kubernetes.io/os": "windows" } } } } }' -- pwsh
但我得到“无效的 Json 路径”。
如果我进行部署,这是我的 yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
...
spec:
...
template:
...
spec:
...
nodeSelector:
kubernetes.io/os: windows
如果我get pods -o json
我得到:
{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
...
},
"spec": {
...
"nodeSelector": {
"kubernetes.io/os": "windows"
}
kubectl run
是启动Pod
的命令。 你可以在这里阅读更多关于它的信息
kubectl run -it powershell --image=mcr.microsoft.com/powershell:lts-nanoserver-1809-20211215 --restart=Never --overrides='{ "apiVersion": "v1", "spec": { "template": { "spec": { "nodeSelector": { "kubernetes.io/os": "windows" } } } } }' -- pwsh
使用上面的命令,您正在尝试运行具有规范"template": { "spec": {
的Pod
,它仅用于Deployment
,这就是您收到错误Invalid Json Path
的原因。
您可以在文档中看到的nodeSelector
可以在Pod
配置文件中的spec
下指定,如下所示:
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
env: test
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
nodeSelector:
disktype: ssd
当您将--dry-run=client -o yaml
到命令中以查看如何处理 object 时,您将在下面看到 output 没有nodeSelector
:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: powershell
name: powershell
spec:
containers:
- image: mcr.microsoft.com/powershell:lts-nanoserver-1809-20211215
name: powershell
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Never
status: {}
要解决您的问题,您可以从命令中删除template
和spec
,如下所示:
kubectl run -it powershell --image=mcr.microsoft.com/powershell:lts-nanoserver-1809-20211215 --restart=Never --overrides='{ "apiVersion": "v1", "spec": { "nodeSelector": { "kubernetes.io/os": "windows" } } }' -- pwsh
添加--dry-run=client -o yaml
看看会发生什么变化,你会看到nodeSelector
存在:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: powershell
name: powershell
spec:
containers:
- image: mcr.microsoft.com/powershell:lts-nanoserver-1809-20211215
name: powershell
resources: {}
dnsPolicy: ClusterFirst
nodeSelector:
kubernetes.io/os: windows
restartPolicy: Never
status: {}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.