K8S escriben subresources CRD

Subresources necesitan utilizar la situación que se presenta en el momento de la escritura del controlador K8S CRD

Cuando primer documento escrito subrecurso vida CRD

Aquí por ejemplo, con sub kube-batch

apiVersion: apiextensions.k8s.io/v1beta1 
tipo: CustomResourceDefinition 
metadatos: 
  nombre: podgroups.scheduling.sigs.dev 
spec: 
  scheduling.sigs.dev: grupo 
  nombres: 
    tipo: PodGroup 
    plural: podgroups 
  alcance: espacio de nombres 
  de validación: 
    openAPIV3Schema: 
      propiedades: 
        apiVersion : 
          tipo: cadena 
        tipo: 
          tipo: cadena de 
        metadatos: 
          tipo: objeto 
        de especificaciones: 
          propiedades: 
            minMember: 
              formato: int32 
              tipo: entero 
            cola:
              Tipo: Cadena 
            priorityClassName: 
              Tipo: Cadena 
          Tipo: Objeto de 
        estado: 
          propiedades: 
            éxito: 
              Formato: int32 
              Tipo: entero 
            falló: 
              Formato: int32 
              Tipo: entero 
            corriendo: 
              Formato: int32 
              Tipo: entero 
          Tipo: Objeto de 
      tipo: objetos 
  v1alpha2: Versión 
  subresources: 
    estado: {}

 

types.go utilizado

// + genclient 
// + K8S: deepcopy-gen: las interfaces = k8s.io / apimachinery / PKG / runtime.Object 

// PodGroup es una colección de Pod; utilizado para la carga de trabajo por lotes. 
PodGroup tipo struct { 
	metav1.TypeMeta `JSON: "en línea"` 
	metadatos del objeto // estándar. 
	// Más información: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata 
	// + opcional 
	metav1.ObjectMeta `JSON: "metadatos, omitempty" protobuf:" bytes, 1, opt, name = metadatos "` 

	// Especificación del comportamiento deseado del grupo de vaina. 
	// Más información: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status 
	// + opcionales 
	Spec PodGroupSpec `JSON: "especificación, omitempty" protobuf:" bytes , 2, opt,

	// Estado representa la información actual acerca de un grupo de vainas. 
	// Estos datos pueden no estar al día. 
	// + opcional 
	de estado PodGroupStatus `JSON: "el estado, omitempty" protobuf: "bytes, 3, opt, nombre = Estado" ' 
} 

// PodGroupSpec representa la plantilla de un grupo de vainas. 
escriba PodGroupSpec struct { 
	// MinMember define el número mínimo de miembros / tareas para ejecutar el grupo pod; 
	// si no hay suficientes recursos para iniciar todas las tareas, el planificador 
	// no comenzará a nadie. 
	MinMember int32 `json: "minMember, omitempty" protobuf: "bytes, 1, opt, name = minMember"` 

	// Queue define la cola para asignar recurso para PodGroup; Si la cola no existe, 
	// no se programará la PodGroup.
	Cola de cadena `JSON: "la cola, omitempty" protobuf: "bytes, 2, OPT, el nombre de la cola ="` 

	// Si se especifica, indica la prioridad de la PodGroup. "sistema de nodo crítico" y 
	// "sistema-cluster-crítico" son dos palabras clave especiales que indican los 
	// prioridades más altas con la primera es la más alta prioridad. Cualquier otro 
	nombre // debe definirse mediante la creación de un objeto PriorityClass con ese nombre. 
	// Si no se especifica, la prioridad PodGroup será por defecto o cero si no hay 
	// defecto. 
	// + opcional 
	PriorityClassName cadena `JSON: "priorityClassName, omitempty" protobuf: "bytes, 3, opt, name = priorityClassName" ' 
} 

// PodGroupStatus representa el estado actual de un grupo de vainas.
	// fase actual de PodGroup. 
	Fase PodGroupPhase `JSON: "fase, omitempty" protobuf: "bytes, 1, opt, name = fase"` 

	// Las condiciones de PodGroup. 
	// + opcionales 
	Condiciones [] PodGroupCondition `JSON: "condiciones, omitempty" protobuf: "bytes, 2, opt, nombre = condiciones"` 

	// El número de vainas ejecutan activamente. 
	// + opcional 
	Ejecución int32 `JSON: "correr, omitempty" protobuf: "bytes, 3, opt, corriendo name ="` 

	// El número de vainas que alcanzaron la fase Sucedido. 
	// + opcional 
	Sucedido int32 `JSON: "tenido éxito, omitempty" protobuf: "bytes, 4, opt, name = éxito"` 

	// El número de vainas que alcanzaron la fase Error. 
	// + opcional
	No se ha podido int32 `JSON:" fallado,

 

Varios cuando se indique.

1. Cuando un presentaciones YAML, establece el atributo de estado es inútil, ya que la dirección de la ruta predeterminada del recurso se presenta es / apis / {nombre de grupo} / {version} / / espacios de nombres {ns} / {} resourcesname / {nombre}

Por lo que el estado no está configurado subresources

Por ejemplo, envío una

apiVersion: scheduling.incubator.k8s.io/v1alpha1 
tipo: PodGroup 
Metadatos: 
  Nombre:. QJ 1- 
especificaciones: 
  minMember :. 6 
# Este atributo no está configurado comando kubectl Estado tuvo éxito:.. 1

 

subresouces CRD miran a la definición de K8S

// CustomResourceSubresources define el estado y escala subresources para CustomResources. 
CustomResourceSubresources tipo struct { 
	// Estado indica el estado de subrecurso CustomResources 
	Estado * CustomResourceSubresourceStatus 
	// Escala denota el subrecurso escala para CustomResources 
	Escala * CustomResourceSubresourceScale 
}
// CustomResourceSubresourceStatus define cómo servir al estado de subrecurso CustomResources. 
// Estado está representado por el `.status` en el recorrido del JSON de un CustomResource. Cuando se establece,
// * expone una subrecurso estado / para el recurso personalizado
peticiones PUT * // al subrecurso / estado toman un objeto de recurso personalizado, e ignoran los cambios en nada excepto la estrofa estado de
las solicitudes // * PUT / POST / parche para el recurso personalizado ignorar los cambios en el estado estrofa
tipo CustomResourceSubresourceStatus struct {}

// define CustomResourceSubresourceScale cómo servir al subrecurso escala para CustomResources.
escriba CustomResourceSubresourceScale struct {
// SpecReplicasPath define la ruta dentro de JSON de un CustomResource que corresponde a Scale.Spec.Replicas. // el valor de 0.
// Sólo se permiten caminos JSON sin la notación de matriz.
// debe ser una ruta JSON bajo .spec.
// Si no hay ningún valor por debajo de la ruta dada en la CustomResource, la escala subrecurso / devolverá un error en GET.
SpecReplicasPath cadena
// StatusReplicasPath define la ruta dentro de JSON de un CustomResource que corresponde a Scale.Status.Replicas.
// Sólo se permiten caminos JSON sin la notación de matriz.
// debe ser una ruta JSON bajo .status.
// Si no hay valor en virtud de la ruta dada en la CustomResource, el valor réplica de estado en la escala / subrecurso

StatusReplicasPath cadena
// LabelSelectorPath define el interior camino JSON de un CustomResource que corresponde a Scale.Status.Selector. // Si no hay ningún valor por debajo de la ruta dada en la CustomResource , el valor del selector etiqueta de estado en la escala /
// Sólo se permiten caminos JSON sin la notación de matriz.
// debe ser una ruta JSON bajo .status o .spec.
// Debe establecerse en el trabajo con HPA.
// El campo señalado por este camino JSON debe ser un campo de cadena (no un complejo struct selector)
// que contiene un selector etiqueta serializado en forma de cadena.
// Más información: https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions#scale-subresource // subrecurso pondrá por defecto en la cadena vacía. // + opcional LabelSelectorPath * cadena }




 

Apoyar Estado, escala son dos,

// * PUT peticiones al estado subrecurso / toman un objeto de recurso personalizado, e ignoran los cambios en nada excepto la estrofa estado 
// * PUT / POST / solicitudes de parche en el recurso personalizado ignorar los cambios en el estado de la estrofa

Cuando la solicitud es / será cuando el estado de los otros campos de modificar el estado de ignorar los objetos sólo

Es decir: si desea modificar el campo de estado con una línea de comandos, que se presentará / apis / {nombre de grupo} / {version} / / espacios de nombres {ns} / {resourcesname} / {nombre} / estado

 

2. Durante la prueba si desea modificar manualmente el estado de cómo hacer

Para modificar el estado debe primero recuperar el objeto actual, porque no hay reversión de las restricciones, el objeto se presentará en serio, así que para obtener

A continuación, el estado añadido en el ámbito salir del objeto

rizo --cacert {} -H ca.pen "Autorización: Portador {testigo}" APISERVER / apis / {nombre de grupo} / {version} / / espacios de nombres {ns} / {} / resourcesname {nombre}

Si se devuelve el resultado

{

...

"Especificaciones":{...}

}

Modificar el estado de complemento

{

...

"Especificaciones":{...},

"Status": { "éxito": 1}

}

Seguido de una petición a este órgano

 

enrollamiento --cacert {} -H ca.pen "Autorización: Portador {} símbolo" H "Content-Type: application / json" --request PUT APISERVER / apis / {groupName} / {version} / / espacios de nombres {ns } / {resourcesname} / {nombre} / estado --Hojas '上边 cuerpo'

 

Recuerde que debe ir a solicitar el último objetivo, ya que verificará ResourceVersion

  

 

Supongo que te gusta

Origin www.cnblogs.com/xuchenCN/p/12522167.html
Recomendado
Clasificación