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