Skip to main content

API Version

Para que las funcionalidades y los recursos de Kubernetes sean creados también son necesarias nuevas APIs.

Las versiones estables son las que llamamos de V1.

Pero encontramos por el camino varias versiones diferentes y vamos a entender cómo ellas aparecen.

alt text

Explicando mejor cada una de ellas tenemos:

Alpha

alt text

Cuando una API acabó de ser incluida en el código de Kubernetes por la primera vez

No está disponible por padrón y precisa ser habilitada para ser usada.

Todavía puede tener bugs y puede ser depreciada rápidamente. Generalmente es utilizada por usuarios que tienen interés en dar su feedback y colaborar con Kubernetes. No debe ser usada en producción.

Crear un objeto alpha que no está habilitado no funcionará.

Beta

Avanzando un poco en la versión alpha con bugs ya corregidos tenemos la beta.

Esta ya está disponible por padrón, todavía puede contener errores menores, pero ya fue testada y aprobada incluyendo tests end to end. La tendencia es que en el futuro ellas pasen a ser v1, pero no es garantizado.

GA Stable

Después de algunos meses y algunas releases las betas pasan para GA que son consideradas las versiones estables que conocemos v1. Son mucho más confiables y estarán presentes en varias releases futuras de Kubernetes pudiendo ser usadas por todos los usuarios.

alt text

Aquí tenemos un ejemplo de la versión 1.30 de Kubernetes.

Si quiere buscar otras versiones

alt text

Un ejemplo de la evolución.

API GROUP1.251.261.271.281.291.30
admissionregistration.k8s.iov1v1, v1alpha1v1, v1alpha1v1, v1beta1, v1alpha1v1, v1beta1, v1alpha1v1, v1beta1, v1alpha1

Podemos observar que el Kubernetes soporta varias versiones al mismo tiempo a fin de dar soporte a versiones anteriores.


Podemos observar que el API group ofrece soporte a varias versiones al mismo tiempo. Eso significa que seremos capaces de crear el mismo objeto usando cualquiera de esas versiones.

Aunque soporte varias versiones, solamente una puede ser la versión preferencial o almacenada.

alt text

La versión preferencial es aquella que es recuperada por el comando kubectl y la almacenada es aquella que es almacenada en el etcd.

Cuando una versión es definida diferente de la preferencial ella es convertida para la versión preferencial.

> kubectl proxy
Starting to serve on 127.0.0.1:8001

curl http://localhost:8001/apis/batch
{
"kind": "APIGroup",
"apiVersion": "v1",
"name": "batch",
"versions": [
{
"groupVersion": "batch/v1",
"version": "v1"
}
],
"preferredVersion": {
"groupVersion": "batch/v1",
"version": "v1"
}
}

Para observar lo que tenemos dentro del etcd es necesario realizar la búsqueda en el propio etcd.

Para habilitar las versiones alpha podemos pasar el parámetro para el servicio del kube-api-server.

En el caso para habilitar la versión v2alpha1 del batch podemos pasar

--runtime-config=batch/v2alpha1

Es necesario la reinicialización del servicio si for pod estático o servicio en el sistema operativo.