Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

205
Vistas
Cómo mostrar una columna kubectl usando un formato de fracción (es decir, X/Y) para un recurso personalizado

En Kubernetes, ¿es posible mostrar una columna usando un formato de fracción (es decir, X/Y) usando el campo "columnas de impresora adicionales" de un CRD?

Más precisamente, me gustaría que kubectl mostrara la descripción de un campo CR usando el mismo formato que el campo LISTO a continuación:

 kubectl get statefulsets.apps <my-statefulset> NAME READY AGE <my-statefulset> 2/2 18m

¿Podría proporcionar el contenido de la sección "columnas de impresora adicionales"?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Desafortunadamente, AdditionalPrinterColumns solo admite JsonPath simple, por lo que no podemos usar .status.readyReplicas/.status.replicas en JsonPath y la operación GET está a cargo de kube-apiserver, por lo que no hay participación del operador en la operación GET. Entonces, la forma más fácil que recomendaría es crear un nuevo campo en .status llamado listo con el valor "readyReplicas/replicas" y actualizarlo cada vez que actualice readyReplicas y réplicas.

A continuación, coloque a continuación en AdditionalPrinterColumns

 additionalPrinterColumns: - jsonPath: .status.ready name: Ready type: string

Para StatefulSet, utilizan el siguiente código en https://github.com/kubernetes/kubernetes/blob/master/pkg/printers/internalversion/printers.go para imprimir el valor de la columna READY

 statefulSetColumnDefinitions := []metav1.TableColumnDefinition{ {Name: "Name", Type: "string", Format: "name", Description: metav1.ObjectMeta{}.SwaggerDoc()["name"]}, {Name: "Ready", Type: "string", Description: "Number of the pod with ready state"}, {Name: "Age", Type: "string", Description: metav1.ObjectMeta{}.SwaggerDoc()["creationTimestamp"]}, {Name: "Containers", Type: "string", Priority: 1, Description: "Names of each container in the template."}, {Name: "Images", Type: "string", Priority: 1, Description: "Images referenced by each container in the template."}, } h.TableHandler(statefulSetColumnDefinitions, printStatefulSet) h.TableHandler(statefulSetColumnDefinitions, printStatefulSetList) func printStatefulSet(obj *apps.StatefulSet, options printers.GenerateOptions) ([]metav1.TableRow, error) { row := metav1.TableRow{ Object: runtime.RawExtension{Object: obj}, } desiredReplicas := obj.Spec.Replicas readyReplicas := obj.Status.ReadyReplicas createTime := translateTimestampSince(obj.CreationTimestamp) row.Cells = append(row.Cells, obj.Name, fmt.Sprintf("%d/%d", int64(readyReplicas), int64(desiredReplicas)), createTime) if options.Wide { names, images := layoutContainerCells(obj.Spec.Template.Spec.Containers) row.Cells = append(row.Cells, names, images) } return []metav1.TableRow{row}, nil } func printStatefulSetList(list *apps.StatefulSetList, options printers.GenerateOptions) ([]metav1.TableRow, error) { rows := make([]metav1.TableRow, 0, len(list.Items)) for i := range list.Items { r, err := printStatefulSet(&list.Items[i], options) if err != nil { return nil, err } rows = append(rows, r...) } return rows, nil }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda