es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

kubectl run override nodeselctor: error: Invalid JSON Patch kubectl ejecutar override nodeselctor: error: Parche JSON inválido

Estoy tratando de anular el selector de nodos para un 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

Pero obtengo “Ruta JSON inválida”.

Este es mi YAML si hago un despliegue:

apiVersion: apps/v1
kind: Deployment
metadata:
...
spec:
...
template:
...
spec:
...
nodeSelector:
kubernetes.io/os: windows

y si hago get pods -o json obtengo:

{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
...
},
"spec": {
...
"nodeSelector": {
"kubernetes.io/os": "windows"
}

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para anular el selector de nodos para un comando kubectl run, puedes usar el formato JSON en lugar de YAML. La sintaxis correcta para la bandera --overrides sería:

    --overrides='{"apiVersion":"v1","spec":{"template":{"spec":{"nodeSelector":{"kubernetes.io/os":"windows"}}}}}'
    

    En este formato, asegúrate de encerrar toda la cadena JSON entre comillas simples (') y utilizar comillas dobles (") para las claves y valores en el objeto JSON.

    Entonces el comando completo kubectl run para anular el selector de nodos sería:

    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
    

    Esto te permitirá ejecutar el contenedor en un nodo con la etiqueta kubernetes.io/os=windows.

Comments are closed.