Controlador de Replicación VS Implementación en Kubernetes


Quería saber cuál es la diferencia entre un Controlador de Replicación y una Implementación dentro de Kubernetes (1.2). Repasando el documento de introducción ( http://kubernetes.io/docs/hellonode / ) He creado una implementación, pero no aparece en la interfaz web.

Cuando creo aplicaciones desde la interfaz de usuario web, se crean como controladores de replicación. Funcionalmente, sin embargo, parecen muy similares (ambos administran pods y tienen servicios).

Entonces, ¿cuál es el diferencia y cuándo debo usar cada uno?

Author: Anirudh Ramanathan, 2016-05-24

5 answers

Las implementaciones son un concepto más nuevo y de mayor nivel que los Controladores de replicación. Gestionan la implementación de Conjuntos de Réplicas (también un concepto más reciente, pero casi equivalente a los Controladores de Replicación), y permiten una fácil actualización de un Conjunto de réplicas, así como la capacidad de retroceder a una implementación anterior.

Anteriormente esto tendría que hacerse con kubectl rolling-update que no era declarativo y no proporcionaba las características de reversión.

El panel de Kubernetes aún no ha sido actualizado para admitir implementaciones, y actualmente solo admite Controladores de replicación (consulte Implementaciones no visibles en Kubernetes Dashboard).

EDITAR: El panel ahora admite implementaciones.

 40
Author: Pixel Elephant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:18:21

Las implementaciones todavía están en beta (su API está bajo extensions/v1beta1), que es probablemente la razón por la que no aparecen en la interfaz de usuario. Automatizan las transiciones de estado además de mantener vivas las cápsulas. Desde la página enlazada:

Una implementación proporciona actualizaciones declarativas para Pods y Conjuntos de Réplicas (el Controlador de Replicación de próxima generación). Solo necesitas describir el estado deseado en un objeto de implementación y la implementación controlador cambiará el estado real al deseado estado a tarifa controlada para usted. Puede definir implementaciones para crear nuevas recursos, o reemplazar los existentes por otros nuevos.

También proporcionan el historial de implementación y otras características útiles.

$ kubectl rollout history deployment/nginx-deployment
deployments "nginx-deployment":
REVISION    CHANGE-CAUSE
1           kubectl create -f docs/user-guide/nginx-deployment.yaml --record
2           kubectl apply -f docs/user-guide/new-nginx-deployment.yaml
3           kubectl apply -f docs/user-guide/bad-nginx-deployment.yaml

También realiza un seguimiento de los cambios.

$ kubectl rollout history deployment/nginx-deployment --revision=2
deployments "nginx-deployment" revision 2
Labels:     app=nginx,pod-template-hash=1564180365
Annotations:    kubernetes.io/change-cause=kubectl apply -f docs/user-guide/new-nginx-deployment.yaml
Image(s):   nginx:1.9.1
No volumes.
 7
Author: kichik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-24 20:25:52

Ahora con la versión 1.1 El panel admite implementaciones. Puede implementar o actualizar su panel de control sin tener que esperar a la versión 1.3 de k8s. Puede, por ejemplo, usar el YAML oficial, que acabamos de cambiar para usar Implementaciones hoy.

En general, recomendaría (y la gente de los colaboradores de Google y Kubernetes también lo hacen) el uso de implementaciones sobre RCs, ya que son una primitiva mucho más poderosa (incluyen actualizaciones continuas, control de versiones/auditoría, canaray / verde-azul despliegues, reversiones, etc.).

 6
Author: puja,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-27 10:10:36

El panel de control (interfaz de usuario web) se ha rediseñado enormemente para admitir la administración de más recursos (como Deployments y DaemonSets, etc.) y el tablero actual no permite mucho con respecto a Deployments.

La administración de implementaciones en dashboard será compatible pronto en kubernetes 1.3 (consulte issue Feature request: handle Deployments).

 2
Author: janetkuo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-24 21:39:22

Desde mi experiencia, las implementaciones no proporcionan toda la funcionalidad que necesito. O, tal vez, los estoy usando de una manera equivocada.

Cuando es necesario reiniciar el servidor de nodo - todos los pods que se ejecutan en ese servidor iniciado por la implementación - fallan. Y no puedo encontrar una manera de evitar esto.

Pero

Think solution es un controlador de replicación. Por lo menos en la descripción está escrito que él maneja tales casos.

La principal ventaja de implementación, como yo lo veo, es cuando necesita cambia la versión de tu aplicación constantemente.

Así que ambos caminos son buenos, pero por diferentes razones.

 2
Author: Tomas Šatas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-09 09:04:58