OpenShift - Clústeres

OpenShift utiliza dos métodos de instalación para configurar el clúster de OpenShift.

  • Método de instalación rápida
  • Método de configuración avanzada

Configuración de clúster

Método de instalación rápida

Este método se utiliza para ejecutar una configuración rápida de instalación de clúster no obtenida. Para utilizar este método, primero debemos instalar el instalador. Esto se puede hacer ejecutando el siguiente comando.

Interactive method

$ atomic-openshift-installer install

Esto es útil cuando se desea ejecutar una configuración interactiva.

Unattended installation method

Este método se utiliza cuando se desea configurar una forma desatendida de método de instalación, en el que el usuario puede definir un archivo yaml de configuración y colocarlo en ~/.config/openshift/con el nombre de installer.cfg.yml. Luego, se puede ejecutar el siguiente comando para instalar el–u tag.

$ atomic-openshift-installer –u install

De forma predeterminada, utiliza el archivo de configuración ubicado en ~/.config/openshift/. Ansible, por otro lado, se utiliza como copia de seguridad de la instalación.

version: v2
variant: openshift-enterprise
variant_version: 3.1
ansible_log_path: /tmp/ansible.log

deployment:
   ansible_ssh_user: root
   hosts:
   - ip: 172.10.10.1
   hostname: vklnld908.int.example.com
   public_ip: 24.222.0.1
   public_hostname: master.example.com
   roles:
      - master
      - node
   containerized: true
   connect_to: 24.222.0.1
   
   - ip: 172.10.10.2
   hostname: vklnld1446.int.example.com
   public_ip: 24.222.0.2
   public_hostname: node1.example.com
   roles:
      - node
   connect_to: 10.0.0.2
   
   - ip: 172.10.10.3
   hostname: vklnld1447.int.example.com
   public_ip: 10..22.2.3
   public_hostname: node2.example.com
   roles:
      - node
   connect_to: 10.0.0.3

roles:
   master:
      <variable_name1>: "<value1>"
      <variable_name2>: "<value2>"
   node:
      <variable_name1>: "<value1>"

Aquí, tenemos una variable específica de rol, que se puede definir si se desea configurar alguna variable específica.

Una vez hecho esto, podemos verificar la instalación usando el siguiente comando.

$ oc get nodes
NAME                    STATUS    AGE
master.example.com      Ready     10d
node1.example.com       Ready     10d
node2.example.com       Ready     10d

Instalación avanzada

La instalación avanzada se basa completamente en la configuración de Ansible, donde está presente la configuración completa del host y la definición de variables con respecto a la configuración del maestro y el nodo. Contiene todos los detalles sobre la configuración.

Una vez que tenemos la configuración y el libro de jugadas está listo, simplemente podemos ejecutar el siguiente comando para configurar el clúster.

$ ansible-playbook -i inventry/hosts ~/openshift-ansible/playbooks/byo/config.yml

Agregar hosts a un clúster

Podemos agregar un host al clúster usando -

  • Herramienta de instalación rápida
  • Método de configuración avanzada

Quick installation toolfunciona tanto en modo interactivo como no interactivo. Utilice el siguiente comando.

$ atomic-openshift-installer -u -c </path/to/file> scaleup

El formato de escalado de la apariencia del archivo de configuración de la aplicación se puede utilizar para agregar tanto el maestro como el nodo.

Método de configuración avanzada

En este método, actualizamos el archivo de host de Ansible y luego agregamos un nuevo nodo o detalles del servidor en este archivo. El archivo de configuración tiene el siguiente aspecto.

[OSEv3:children]
masters
nodes
new_nodes
new_master

En el mismo archivo de hosts de Ansible, agregue detalles variables sobre el nuevo nodo como se muestra a continuación.

[new_nodes]
vklnld1448.int.example.com openshift_node_labels = "{'region': 'primary', 'zone': 'east'}"

Finalmente, usando el archivo de host actualizado, ejecute la nueva configuración e invoque el archivo de configuración para realizar la instalación usando el siguiente comando.

$ ansible-playbook -i /inventory/hosts /usr/share/ansible/openshift-ansible/playbooks/test/openshift-node/scaleup.yml

Administrar registros de clústeres

El registro del clúster de OpenShift no es más que los registros que se generan desde el maestro y las máquinas de nodo del clúster. Estos pueden administrar cualquier tipo de registro, comenzando por el registro del servidor, el registro maestro, el registro del contenedor, el registro del pod, etc. Existen múltiples tecnologías y aplicaciones presentes para la gestión del registro del contenedor.

Pocas de las herramientas figuran en la lista, que se pueden implementar para la gestión de registros.

  • Fluentd
  • ELK
  • Kabna
  • Nagios
  • Splunk

ELK stack- Esta pila es útil al intentar recopilar los registros de todos los nodos y presentarlos en un formato sistemático. La pila de ELK se divide principalmente en tres categorías principales.

ElasticSearch - Principalmente responsable de recopilar información de todos los contenedores y colocarla en una ubicación central.

Fluentd - Se utiliza para alimentar los troncos recolectados al motor del contenedor de búsqueda elástica.

Kibana - Una interfaz gráfica utilizada para presentar los datos recopilados como información útil en una interfaz gráfica.

Un punto clave a tener en cuenta es que cuando este sistema se implementa en el clúster, comienza a recopilar registros de todos los nodos.

Diagnóstico de registro

OpenShift tiene un oc adm dignosticscomando con OC que se puede utilizar para analizar múltiples situaciones de error. Esta herramienta se puede utilizar desde el maestro como administrador de clúster. Esta utilidad es muy útil para solucionar problemas y reconocer problemas conocidos. Esto se ejecuta en el cliente maestro y los nodos.

Si se ejecuta sin parámetros o indicadores, buscará los archivos de configuración del cliente, el servidor y las máquinas de nodo, y los usará para el diagnóstico. Se pueden ejecutar los diagnósticos individualmente pasando los siguientes argumentos:

  • AggregatedLogging
  • AnalyzeLogs
  • ClusterRegistry
  • ClusterRoleBindings
  • ClusterRoles
  • ClusterRouter
  • ConfigContexts
  • DiagnosticPod
  • MasterConfigCheck
  • MasterNode
  • MetricsApiProxy
  • NetworkCheck
  • NodeConfigCheck
  • NodeDefinitions
  • ServiceExternalIPs
  • UnitStatus

Uno simplemente puede ejecutarlos con el siguiente comando.

$ oc adm diagnostics <DiagnosticName>

Actualizar un clúster

La actualización del clúster implica actualizar varias cosas dentro del clúster y hacer que el clúster se actualice con nuevos componentes y actualizaciones. Esto implica:

  • Actualización de componentes maestros
  • Actualización de los componentes del nodo
  • Actualización de políticas
  • Actualización de rutas
  • Actualización del flujo de imágenes

Para realizar todas estas actualizaciones, primero necesitamos instalar instaladores rápidos o utilidades. Para eso, necesitamos actualizar las siguientes utilidades:

  • atomic-openshift-utils
  • atomic-openshift-excluder
  • atomic-openshift-docker-excluder
  • paquete etcd

Antes de comenzar la actualización, necesitamos hacer una copia de seguridad de etcd en la máquina maestra, lo cual se puede hacer usando los siguientes comandos.

$ ETCD_DATA_DIR = /var/lib/origin/openshift.local.etcd
$ etcdctl backup \
   --data-dir $ETCD_DATA_DIR \
   --backup-dir $ETCD_DATA_DIR.bak.<date>

Actualización de componentes maestros

En OpenShift master, comenzamos la actualización actualizando el archivo etcd y luego pasamos a Docker. Finalmente, ejecutamos el ejecutador automático para colocar el clúster en la posición requerida. Sin embargo, antes de comenzar la actualización, primero debemos activar los paquetes atómicos openshift en cada uno de los maestros. Esto se puede hacer usando los siguientes comandos.

Step 1 - Eliminar paquetes atomic-openshift

$ atomic-openshift-excluder unexclude

Step 2 - Actualizar etcd en todos los maestros.

$ yum update etcd

Step 3 - Reinicie el servicio de etcd y compruebe si se ha iniciado correctamente.

$ systemctl restart etcd
$ journalctl -r -u etcd

Step 4 - Actualice el paquete Docker.

$ yum update docker

Step 5 - Reinicie el servicio Docker y compruebe si está correctamente activado.

$ systemctl restart docker
$ journalctl -r -u docker

Step 6 - Una vez hecho esto, reinicie el sistema con los siguientes comandos.

$ systemctl reboot
$ journalctl -r -u docker

Step 7 - Finalmente, ejecute el ejecutador atómico para que los paquetes vuelvan a la lista de exclusiones de yum.

$ atomic-openshift-excluder exclude

No existe tal obligación para actualizar la política, solo necesita actualizarse si se recomienda, lo que se puede verificar con el siguiente comando.

$ oadm policy reconcile-cluster-roles

En la mayoría de los casos, no es necesario actualizar la definición de política.

Actualización de los componentes del nodo

Una vez que se completa la actualización maestra, podemos comenzar a actualizar los nodos. Una cosa a tener en cuenta es que el período de actualización debe ser corto para evitar cualquier tipo de problema en el clúster.

Step 1 - Elimine todos los paquetes atómicos de OpenShift de todos los nodos donde desea realizar la actualización.

$ atomic-openshift-excluder unexclude

Step 2 - A continuación, desactive la programación de nodos antes de la actualización.

$ oadm manage-node <node name> --schedulable = false

Step 3 - Replica todo el nodo del host actual al otro host.

$ oadm drain <node name> --force --delete-local-data --ignore-daemonsets

Step 4 - Actualice la configuración de Docker en el host.

$ yum update docker

Step 5 - Reinicie el servicio Docker y luego inicie el nodo de servicio Docker.

$systemctl restart docker
$ systemctl restart atomic-openshift-node

Step 6 - Compruebe si ambos se iniciaron correctamente.

$ journalctl -r -u atomic-openshift-node

Step 7 - Una vez completada la actualización, reinicie la máquina del nodo.

$ systemctl reboot
$ journalctl -r -u docker

Step 8 - Vuelva a habilitar la programación en los nodos.

$ oadm manage-node <node> --schedulable.

Step 9 - Ejecute el ejecutador atomic-openshift para recuperar el paquete OpenShift en el nodo.

$ atomic-openshift-excluder exclude

Step 10 - Por último, compruebe si todos los nodos están disponibles.

$ oc get nodes

NAME                 STATUS   AGE
master.example.com   Ready    12d
node1.example.com    Ready    12d
node2.example.com    Ready    12d