Quando si distribuiscono applicazioni su Red Hat OpenShift, è utile controllare lo stato e l'integrità dei componenti. Per prima cosa, ti mostrerò come funzionano le distribuzioni, quindi potrai controllare alcuni rapporti sull'integrità.
Come vengono distribuite le API OpenShift
Le applicazioni Red Hat OpenShift possono essere create utilizzando un'immagine contenitore ospitata su un registro remoto, un file YAML che specifica le risorse da creare, un'immagine builder utilizzando il codice sorgente dal tuo repository Git, un Dockerfile e altro ancora.
[ Potrebbe piacerti anche: Come ho costruito una conferenza OpenShift interattiva per Red Hat Academy. ]
A seconda del metodo selezionato, un Distribuzione o Configurazione distribuzione È possibile utilizzare l'oggetto API. OpenShift supporta entrambi Deployment oggetti e DeploymentConfig oggetti; tuttavia, Distribuzione gli oggetti sono consigliati a meno che non sia necessaria una funzione specifica fornita da DeploymentConfig oggetti.
In OpenShift, durante la creazione di applicazioni da un file YAML, Deployment gli oggetti sono preferiti. Quando crei applicazioni da un Dockerfile o dall'origine, un DeploymentConfig l'oggetto verrà creato automaticamente da oc new-app
comando.
Durante la risoluzione dei problemi di DeploymentConfig o Distribuzione API, concentrati sugli stati delle repliche e dei pod creati. Una Configurazione distribuzione crea un ReplicationController che gestisce i cicli di vita dei pod. Allo stesso modo, Distribuzione crea repliche che gestiscono i pod.
Esempio di distribuzione MySQL
Questo esempio crea un database MySQL da un'immagine ospitata su register.access.redhat.com:
oc new-app --docker-image=registry.access.redhat.com/rhscl/mysql-57-rhel7:latest --name=mydb -e MYSQL_USER=user1 -e MYSQL_PASSWORD=mypa55 -e MYSQL_DATABASE=testdb -e MYSQL_ROOT_PASSWORD=r00tpa55
[sysadmin@server ~]$ oc describe dc mydb
Name: mydb
Namespace: DEV
Created: 130 minutes ago
Labels: app=dev
...output omitted...
Deployment #1 (latest):
Name: mydb-1
Created: 15 minutes ago
Status: Complete
Replicas: 1 current / 1 desired
Selector: app=mydb,deployment=mydb-1,deploymentconfig=mydb
Labels: app=mydb,openshift.io/deployment-config.name=mydb
Pods Status: 1 Running / 0 Waiting / 0 Succeeded / 0 Failed
...output omitted...
Da ciò, puoi dedurre quanto segue:
- Stato:completo - La Configurazione distribuzione completato con successo.
- Repliche:1 corrente / 1 desiderata - Volevi creare un pod (desiderato) e uno è stato creato correttamente (attuale).
- Stato dei pod:1 In esecuzione / 0 In attesa / 0 Riuscito / 0 Non riuscito - C'è un pod in esecuzione senza che nessuno si rompa e questo è molto importante. Qualsiasi pod guasto deve essere esaminato e corretto, poiché ciò significherebbe un'implementazione malsana.
Distribuzione dell'applicazione PHP
Questo secondo esempio distribuisce un'applicazione PHP e questa è una descrizione di DeploymentConfig :
[sysadmin@server]$ oc describe dc/php-helloworld
Name: php-helloworld
Namespace: web
Created: 12 minutes ago
Labels: app=php-helloworld
Annotations: openshift.io/generated-by=OpenShiftNewApp
Latest Version: 1
Selector: app=php-helloworld,deploymentconfig=php-helloworld
Replicas: 1
Triggers: Config, Image(php-helloworld@latest, auto=true)
Strategy: Rolling
Template:
Labels: app=php-helloworld
deploymentconfig=php-helloworld
...output omitted...
Containers:
php-helloworld:
Image: image-registry.openshift-image-registry.svc:5000/s2i/phphelloworld@
sha256:6d27...b983
Ports: 8080/TCP, 8443/TCP
Environment: <none>
Mounts: <none>
Volumes: <none>
Deployment #1 (latest):
Name: php-helloworld-1
Created: 5 minutes ago
Status: Complete
Replicas: 3 current / 5 desired
Selector: app=php-helloworld,deployment=php-helloworld-1,deploymentconfig=phphelloworld
Labels: app=php-helloworld,openshift.io/deployment-config.name=php-helloworld
Pods Status: 3 Running / 0 Waiting / 0 Succeeded / 2 Failed
...output omitted...
Come puoi vedere, ci sono due pod guasti. Ciò indica che la distribuzione non è integra e deve essere esaminata. Gli amministratori possono visualizzare i log dai singoli pod e applicare la correzione appropriata.
[ Impara le basi dell'uso di Kubernetes in questo cheat sheet gratuito. ]
Concludi
Durante la risoluzione dei problemi di distribuzione, è sempre importante controllare lo stato del pod, il numero di repliche desiderate e quante sono attualmente in esecuzione. Tali informazioni possono rendere la risoluzione dei problemi più semplice ed efficiente.