Saat men-deploy aplikasi ke Red Hat OpenShift, sangat berguna untuk memeriksa status dan kesehatan komponen. Pertama, saya akan menunjukkan cara kerja penerapan, lalu Anda dapat melihat beberapa laporan kesehatan.
Bagaimana OpenShift API di-deploy
Aplikasi Red Hat OpenShift dapat dibuat menggunakan image container yang dihosting di registri jarak jauh, file YAML yang menentukan sumber daya yang akan dibuat, image builder menggunakan kode sumber dari repositori Git Anda, Dockerfile, dan banyak lagi.
[ Anda mungkin juga menyukai: Bagaimana saya membuat kuliah OpenShift interaktif untuk Red Hat Academy. ]
Bergantung pada metode yang dipilih, Penerapan atau DeploymentConfig Objek API dapat digunakan. OpenShift mendukung Deployment objek dan DeploymentConfig objek; namun, Penerapan objek direkomendasikan kecuali Anda memerlukan fitur khusus yang disediakan oleh DeploymentConfig objek.
Di OpenShift, saat membuat aplikasi dari file YAML, Deployment objek lebih disukai. Saat membangun aplikasi dari Dockerfile atau dari sumber, DeploymentConfig objek akan dibuat secara otomatis oleh oc new-app
perintah.
Saat memecahkan masalah DeploymentConfig atau Penerapan API, fokus pada status replika dan pod yang dibuat. DeploymentConfig membuat ReplicationController yang mengelola siklus hidup pod. Dengan cara yang sama, Penerapan membuat replika yang mengelola pod.
Contoh penerapan MySQL
Contoh ini membuat database MySQL dari gambar yang dihosting di registry.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...
Dari sini, Anda dapat menyimpulkan hal berikut:
- Status:Selesai - DeploymentConfig berhasil diselesaikan.
- Replika:1 saat ini / 1 diinginkan - Anda ingin satu pod dibuat (diinginkan) dan satu pod berhasil dibuat (saat ini).
- Status Pod:1 Berjalan / 0 Menunggu / 0 Berhasil / 0 Gagal - Ada satu pod yang berjalan tanpa gagal, dan itu sangat penting. Pod yang gagal perlu diselidiki dan diperbaiki, karena itu berarti penerapan yang tidak sehat.
Penerapan aplikasi PHP
Contoh kedua ini menerapkan aplikasi PHP, dan ini adalah deskripsi dari 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...
Seperti yang Anda lihat, ada dua pod yang gagal. Ini menunjukkan penyebaran tidak sehat dan perlu diselidiki. Administrator dapat melihat log dari pod individual dan menerapkan perbaikan yang sesuai.
[ Pelajari dasar-dasar penggunaan Kubernetes di lembar contekan gratis ini. ]
Menutup
Saat memecahkan masalah penerapan, selalu penting untuk memperhatikan status pod, jumlah replika yang diinginkan, dan berapa banyak yang sedang berjalan. Informasi tersebut dapat membuat pemecahan masalah menjadi lebih mudah dan efisien.