はじめに
以下の記事を参考に、Red Hat OpenShift on IBM Cloudを試してみたときのログです。
参考: OpenShift on IBM Cloud をデモサイトから無料で試す方法
このデモサイトでは、IBM Cloud上で稼働するOpenShift4.3の環境が一時的にアサインされて、その環境を使ったハンズオンを無料でお手軽に実施できます。
アサインされる環境の利用時間は限られていて、Provisioningされてから4時間で使用できなくなります。1時間単位で3回延長可(すなわち最長7時間は利用可)です。長期にわたって環境を維持できる訳では無いのでまとまった時間を取って実施するのがよいでしょう。
まずはHands on LabsへのアクセスとLab1の実施の所までやってみます。
関連記事
Red Hat OpenShift on IBM Cloud の無料Hands-onを試してみる - Lab1
Red Hat OpenShift on IBM Cloud の無料Hands-onを試してみる - Lab2
Red Hat OpenShift on IBM Cloud の無料Hands-onを試してみる - Lab3
Hands on Labs へのアクセス
以下にアクセスしてRedHat OpenShift on IBM Cloud を選択。
https://www.ibm.com/demos/
一番下の Hands on Labs for Red Hat OpenShift on IBM Cloudを選択。
以下のように、動画やハンズオンのメニューが出てくるので、ここから適宜選択してやってみます。
Hands on 実施
Lab1
Lab1では、管理コンソールや、アプリのデプロイから稼働までの基本的な流れなどが体験できます。
しばらくするとActiveになるので再度Launch Labをクリック
別のタブが開くので、左側のメニューに従ってハンズオンを実施します。
Exercise1 / Basics
ここでは、IBM Cloud Portalと、OpenShift Web Consoleの画面を確認します。
Exerciseの記述に従って、いくつか画面を確認してみます。
IBM Cloud Portal
IBM Cloud の画面が開きます(IBM CloudにログインするとDTE Cloud Platformというデモ用アカウントへのアクセス権限が一時的に付与されて、OpenShiftのクラスターの状況はそこから参照できるようになるようです)。
「概要」のメニューからワーカーノードの数やステータスが確認できます。
OpenShift Web Console
IBM Cloud Portal画面の右上の「OpenShift Webコンソール」をクリックすると、OpenShift Web Consoleが開きます。
Administrator/Developerと、役割に応じてPerspecitiveを切り替えて利用することができます。
Number of nodes in the cluster inventory dashboard
Standard services deployed in the default project
Exercise2 / Deploying an application
ここでは、s2i (Source to Image)の流れを確認します。
Developer Perspective - Topology - Project - Create Project選択
Git Repo URLにhttps://github.com/svennam92/node-s2i-openshift
を指定して、Builder ImageからNode.jsを選択。
しばらくするとBuild Completeのステータスとなります。
Nodeのラベルをクリックすると、詳細が表示されます。
Node.jsのアプリが特定のPodで稼働していること、そのPodへのアクセス方法などが確認できます。
右下のRoutesで示されているリンクをクリックします。
Podで稼働しているNode.jsのアプリケーションにアクセスすることができます。
ログインしてみます。(任意のユーザーID/パスワードが指定可)
Exercise3 / Using the command line interface (CLI)
ここでは、CLI(ocコマンド)を使ってみます。
最初にLaunchしたときに接続される右側のターミナルを使います。
クラスターにログイン
container-lab$ oc login --server https://c100-e.us-south.containers.cloud.ibm.com:3xx2 -u apikey -p 8xxxxx3
Login successful.
You have access to 58 projects, the list has been suppressed. You can list all projects with 'oc projects'
Using project "default".
Welcome! See 'oc help' to get started.
デフォルトプロジェクトの設定
container-lab$ oc project example-health
Now using project "example-health" on server "https://c100-e.us-south.containers.cloud.ibm.com:32642".
ホスト名確認
container-lab$ oc get routes
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
node-s-2-i-openshift node-s-2-i-openshift-example-health.dte-ocp4-0t7vlh-915b3b336cabec458a7c7ec2aa7c625f-0000.us-south.containers.appdomain.cloud node-s-2-i-openshift 8080-tcp None
負荷をかけるためのコマンド(無限ループ)
「oc get routes」で取得されるホスト名に対して、1秒毎にCURLの発行を無限に繰り返す。
container-lab$ APP_ROUTE=`oc get routes --no-headers|cut -d' ' -f4`
container-lab$ while sleep 1; do curl -s http://$APP_ROUTE/info; echo "";done
{"personal":{"name":"Ralph DAlmeida","age":38,"gender":"male","street":"34 Main Street","city":"Toronto","zipcode":"M5H 1T1"},"medications":["Metoprolol","ACE inhibitors","Vitamin D"],"appointments":["2018-01-15 1:00 - Dentist","2018-02-14 4:00 - Internal Medicine","2018-09-30 8:00 - Pediatry"]}
{"personal":{"name":"Ralph DAlmeida","age":38,"gender":"male","street":"34 Main Street","city":"Toronto","zipcode":"M5H 1T1"},"medications":["Metoprolol","ACE inhibitors","Vitamin D"],"appointments":["2018-01-15 1:00 - Dentist","2018-02-14 4:00 - Internal Medicine","2018-09-30 8:00 - Pediatry"]}
{"personal":{"name":"Ralph DAlmeida","age":38,"gender":"male","street":"34 Main Street","city":"Toronto","zipcode":"M5H 1T1"},"medications":["Metoprolol","ACE inhibitors","Vitamin D"],"appointments":["2018-01-15 1:00 - Dentist","2018-02-14 4:00 - Internal Medicine","2018-09-30 8:00 - Pediatry"]}
{"personal":{"name":"Ralph DAlmeida","age":38,"gender":"male","street":"34 Main Street","city":"Toronto","zipcode":"M5H 1T1"},"medications":["Metoprolol","ACE inhibitors","Vitamin D"],"appointments":["2018-01-15 1:00 - Dentist","2018-02-14 4:00 - Internal Medicine","2018-09-30 8:00 - Pediatry"]}
...
後のExerciseで使うので、一旦ここでは停止させておきます。
Exercise4 / Logging and events
ここではLogの情報などを確認してみます。
OpenShift Web ConsoleからNode.jsが稼働しているPodを選択します。
Advanced - Eventメニューからは各種イベントの情報(Podの生成など)が確認できます。
Exercise5 / Metrics and Dashboards
ここではメトリック情報などを確認します。
OpenShift Web Consoleにて Monitoring - Dashboardsを選択します。
Allow selected permissionsをクリック
Kubernetes / Compute Resources / Namespace (Workloads)を選択
namespaceからexample-healthを選択。
CPU,Memory状況などが確認できます。
Openshift Web Console - Monitoring - Metricsのメニューでは、PrometheusのUIが提供されており、Prometheus Query Languageを使用したメトリックス情報可視化が行えます。
Exercise6 / Scaling the application
ここではアプリケーションのスケーリングを試してみます。
Exercise3の負荷をかけるコマンドを裏で実行しておきます。
OpenShift Web ConsoleのWorkloads - Deploymentsのメニューを選択し、node-s-2-i-opensiftを選択
右側のActionsのプルダウンからEdit Deploymentを選択
resources{}
部分を以下のように修正。
resources:
limits:
cpu: 30m
memory: 100Mi
requests:
cpu: 3m
memory: 40Mi
この修正では、コンテナに対してリソース(CPU,Memory)の割り当てや制限を追加で指定しています。
参考:
Kubernetes - コンテナおよびPodへのCPUリソースの割り当て
KubernetesのResource RequestsとResource Limitsについて
変更されたDeploymentのstart/stopをEventで確認できます。
Workload - Deployments - node-s-2-i-openshiftを選択し、pod数が1であることを確認します。
次に、Workloads - Horizontal Pod Autoscales メニューから、Create Horizontal Pod Autoscalerをクリック
Autoscaleの定義を以下のように更新してCreateをクリックします。
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: patient-hpa
namespace: example-health
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: node-s-2-i-openshift
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
targetAverageUtilization: 1
参考:
Kubernetes - Horizontal Pod Autoscaler Walkthrough
Kuberentes の水平オートスケール
KubernetesのPodとNodeのAuto Scalingについて