Kubernetes: UpdateStatus () para recursos personalizados no funciona

Creado en 27 oct. 2017  ·  1Comentario  ·  Fuente: kubernetes/kubernetes

/ tipo de error
/ sig api-maquinaria
@ kubernetes / sig-api-machinery-bugs

Que paso :
Mi tipo de recurso personalizado tiene un campo de estado. He generado un cliente para ello usando genclient.
Aquí está la definición de mi tipo de CRD:

// +genclient
// +k8s:openapi-gen=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object

type Recovery struct {
    metav1.TypeMeta   `json:",inline,omitempty"`
    metav1.ObjectMeta `json:"metadata,omitempty"`
    Spec              RecoverySpec   `json:"spec,omitempty"`
    Status            RecoveryStatus `json:"status,omitempty"`
}

La función UpdateStatus () generada:

// UpdateStatus was generated because the type contains a Status member.
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().

func (c *recoveries) UpdateStatus(recovery *v1alpha1.Recovery) (result *v1alpha1.Recovery, err error) {
    result = &v1alpha1.Recovery{}
    err = c.client.Put().
        Namespace(c.ns).
        Resource("recoveries").
        Name(recovery.Name).
        SubResource("status").
        Body(recovery).
        Do().
        Into(result)
    return
}

Ahora, cuando llamo a UpdateStatus () para un objeto de recuperación (stash-mduabx), aparece el siguiente error:

the server could not find the requested resource (put recoveries.stash.appscode.com stash-mduabx)

Y el registro de llamada api:

PUT https://192.168.99.100:8443/apis/stash.appscode.com/v1alpha1/namespaces/test-stash/recoveries/stash-mduabx/status 404 Not Found in 11 milliseconds

Qué esperabas que sucediera :
Debería actualizar el campo de estado.

Cómo reproducirlo :
Defina un tipo de CRD con campo de estado y genere un cliente para él usando genclient. Crea un objeto de ese tipo usando kubectl. Ahora obtenga el objeto del programa go y llame a UpdateStatus () para el objeto.

Medio ambiente :

  • Versión de Kubernetes: 1.7.5
arecustom-resources kinbug siapi-machinery

Comentario más útil

El cliente genera un método de estado porque hay un campo de estado, pero eso no significa que el servidor tenga soporte para ese método.

https://github.com/kubernetes/community/pull/913 es una propuesta para agregar soporte de servidor para subrecursos de estado para objetos CRD.

>Todos los comentarios

El cliente genera un método de estado porque hay un campo de estado, pero eso no significa que el servidor tenga soporte para ese método.

https://github.com/kubernetes/community/pull/913 es una propuesta para agregar soporte de servidor para subrecursos de estado para objetos CRD.

¿Fue útil esta página
0 / 5 - 0 calificaciones