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 get pods JSONPATH no pudo realizar una coincidencia de patrón.

Estoy intentando recuperar los pods utilizando una consulta JSONPATH que coincida con el nombre según el patrón especificado a continuación y obtengo el error que se muestra. ¿Alguna razón por la que se produzca el fallo?

kubectl get po -n sdfd -o jsonpath='{.items[?(@.metadata.generateName =~ /abc.*?/i)].status.podIP}'
error: error al analizar jsonpath {.items[?(@.metadata.generateName =~ /abc.*?/i)].status.podIP}, carácter no reconocido en la acción: U+007E '~'

Por favor, encuentre la versión de la línea de comandos de kubectl como se muestra a continuación:

kubectl version
Versión del cliente: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.0", GitCommit:"e19964183377d0ec2052d1f1fa930c4d7575bd50", GitTreeState:"clean", BuildDate:"2020-08-26T21:54:15Z", GoVersion:"go1.15", Compiler:"gc", Platform:"darwin/amd64"}
Versión del servidor: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.9", GitCommit:"454b5b515582f8ac8419435dc9c230fc97fb844b", GitTreeState:"clean", BuildDate:"2021-11-01T19:59:05Z", GoVersion:"go1.15.14", Compiler:"gc", Platform:"linux/amd64"}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    La razón del fallo es que la consulta JSONPATH contiene un carácter no reconocido en la acción especificada, que es el carácter tilde (~). La consulta está utilizando el operador de expresión regular “=~” para realizar una coincidencia no sensible a mayúsculas y minúsculas del campo generateName con el patrón “abc.*?”. Sin embargo, el operador debería estar encerrado entre paréntesis, como “(=~)”, de lo contrario, se interpreta como un operador de negación bitwise, lo cual no es válido para las consultas JSONPATH.

    Para solucionar el problema, la consulta JSONPATH debería modificarse de la siguiente manera:

    kubectl get po -n sdfd -o jsonpath='{.items[?(@.metadata.generateName =~ /abc.*?/i)].status.podIP}'
    

    Ten en cuenta que el operador de expresión regular ahora está encerrado entre paréntesis y se eliminó el carácter tilde de la consulta.

    Además, es importante destacar que la versión del cliente kubectl es 1.19, mientras que la versión del servidor es 1.20. Esto puede causar problemas al comunicarse con el servidor, y se recomienda utilizar la misma versión tanto para el cliente como para el servidor para evitar problemas de compatibilidad.

Comments are closed.