OpenStackやOpenShiftなどのCloud製品を担当しているソリューションアーキテクトの輿水です。
Red Hat OpenShift on IBM Cloud (ROKS)については以前にHands on Lab環境と使ってみるという記事を書きましたが、半年くらい経過しているのでRed Hat OpenShift on IBM Cloud (ROKS)を再度チラッと見てみます。
今回のお題
- Red Hat OpenShift on IBM Cloud CLI
- Red Hat OpenShift on IBM Cloud コンソールの利用
- クラスター作成
- クラスターアップデート
- ノード追加
- クラスターの中を覗いてみる
- Red Hat OpenShift on IBM Cloud コスト
Red Hat OpenShift on IBM Cloud CLI
前回はCLIはまったく使用せず、Red Hat OpenShift on IBM Cloud コンソールを利用してクラスターを作成しました。他のクラウドではCLIを利用するケースが多いので、IBM CloudのCLIも確認してみます。OpenShift CLI のインストール手順にしたがって導入します。
- IBM Cloud CLI (ibmcloud)
- Red Hat OpenShift on IBM Cloud プラグイン (OpenShift クラスターの ibmcloud oc)
- IBM Cloud Container Registry プラグイン (ibmcloud cr)
- IBM Cloud Kubernetes Service 可観測性プラグイン (ibmcloud ob)
IBM Cloud CLIをインストールした後の作業は、コマンドラインでibmcloudにログインしておく必要があります。以下のうように入力を求められるので、Webにログインする際に利用しているメールアドレスをパスワードを入力します。初回のみリージョンの選択肢が表示されるので適切なものを選んでください。
$ ibmcloud login API エンドポイント: https://cloud.ibm.com Email> xxxxxx@redhat.com(IBM Cloudに登録したメールアドレス) Password>(IBM Cloudに登録したパスワード) 認証中です... OK リージョンを選択します (または Enter キーを押してスキップします): 1. au-syd 2. in-che 3. jp-osa 4. jp-tok 5. kr-seo 6. eu-de 7. eu-gb 8. ca-tor 9. us-south 10. us-east 11. br-sao 数値を入力してください> 4 ターゲットのリージョン jp-tok API エンドポイント: https://cloud.ibm.com リージョン: jp-tok ユーザー: xxxxxx@redhat.com アカウント: xxxxxx's Account (xxxxxx) <-> xxxxxx
▼手順に従ってCLIをインストール
$ ibmcloud plugin install container-service リポジトリー 'IBM Cloud' から 'container-service' を検索しています... プラグイン 'container-service/kubernetes-service 1.0.295' がリポジトリー 'IBM Cloud' 内で見つかりました プラグイン 'container-service/kubernetes-service 1.0.208' は既にインストールされていました。 'container-service/kubernetes-service 1.0.295' で更新しますか? [y/N] > y バイナリー・ファイルをダウンロードしようとしています... 29.09 MiB / 29.09 MiB [============================================] 100.00% 5s 30501488 バイトがダウンロードされました バイナリーをインストールしています... OK プラグイン 'container-service 1.0.295' は ~/.bluemix/plugins/container-service に正常にインストールされました。 'ibmcloud plugin show container-service' を使用して詳細を表示してください。 $ ibmcloud plugin install container-registry リポジトリー 'IBM Cloud' から 'container-registry' を検索しています... プラグイン 'container-registry 0.1.536' がリポジトリー 'IBM Cloud' 内で見つかりました プラグイン 'container-registry 0.1.497' は既にインストールされていました。 'container-registry 0.1.536' で更新しますか? [y/N] > y バイナリー・ファイルをダウンロードしようとしています... 26.27 MiB / 26.27 MiB [============================================] 100.00% 3s 27547088 バイトがダウンロードされました バイナリーをインストールしています... OK プラグイン 'container-registry 0.1.536' は ~/.bluemix/plugins/container-registry に正常にインストールされました。 'ibmcloud plugin show container-registry' を使用して詳細を表示してください。 $ ibmcloud plugin install observe-service リポジトリー 'IBM Cloud' から 'observe-service' を検索しています... プラグイン 'observe-service 1.0.61' がリポジトリー 'IBM Cloud' 内で見つかりました バイナリー・ファイルをダウンロードしようとしています... 17.70 MiB / 17.70 MiB [============================================] 100.00% 2s 18561888 バイトがダウンロードされました バイナリーをインストールしています... OK プラグイン 'observe-service 1.0.61' は ~/.bluemix/plugins/observe-service に正常にインストールされました。 'ibmcloud plugin show observe-service' を使用して詳細を表示してください。 $ ibmcloud plugin list インストール済みプラグインをリストしています... プラグイン名 バージョン 状況 サポートされるプライベート・エンドポイント cloud-functions/wsk/functions/fn 1.0.49 更新が使用可能です false cloud-object-storage 1.2.1 更新が使用可能です false container-registry 0.1.536 true container-service/kubernetes-service 1.0.295 false observe-service/ob 1.0.61 false
Red Hat OpenShift on IBM Cloud リソースを作成および管理には「ibmcloud oc」を利用します。AWSのrosaコマンド、AROのazコマンドと同じような使用感です。
これはあくまで個人的な感覚ですが、Red Hat OpenShift on IBM Cloudに関しては、Red Hat OpenShift on IBM Cloud コンソールが直感的にわかりやすく、クラスターの作成やノードの追加はRed Hat OpenShift on IBM Cloud コンソールで実施した方が簡単です。すべてのコマンドを対比した訳はないのですが、ibmcloud ocコマンドで出来ることはほぼRed Hat OpenShift on IBM Cloud コンソールから実施できると思います。
クラスター作成
Red Hat OpenShift on IBM Cloud コンソールから「Create Cluster」を選びクラスターを作成します。シングルゾーンまたはマルチゾーン、使用するワーカーのvCPUやメモリ、台数を指定できます。昨年末に作成した際はバージョンが4.5でしたが、現在はデフォルトが4.6になっています。また、4.7へのアップデートも可能です。
▼シングルゾーン構成 ▼マルチゾーン構成
クラスター作成後のクラスター管理画面が以前より使い勝手がよくなっている印象です。Add-onの導入状況の表示(インストールもそこから可)や右側に「IBM Cloud Shell」や「Oauth token request」へのリンクを出すことができたりします。
クラスターアップデート
Red Hat OpenShift on IBM Cloudでは以下の2通りの方法があります。
- OpenShiftのWebコンソールからアップデート
- Red Hat OpenShift on IBM Cloud コンソールのクラスター管理画面(もしくはコマンド)でアップデート
作成したクラスター(デフォルトで作成すると4.6)をクラスター管理画面から4.6から4.7にアップデートしてみます。後述しますが、クラスター管理画面でのアップデートは「ibmcloud oc cluster master update」に該当するようで、マスターの更新を行います。ワーカーノードは別途アップデートを行う必要があります。
▼クラスター管理画面
▼Webコンソールでの進捗確認ができる
ノードの追加
作成したクラスターへの新しいワーカーノードを追加もクラスター管理画面から実施できます。同じworker poolにノードを追加する場合は[Resize]になります。追加と思って[Add]を選ぶと新規のworker poolを作ってしまいます。
▼同一worker poolへのノードの追加 ▼新規worker poolの追加
クラスターの中を覗いてみる
AROクラスターでも実施したように、中身をちょっと見てみましょうといくつかコマンドを試してみました。Red Hat OpenShift on IBM Cloudではマスターノードは利用者からは認識できない状況になっています。「oc get nodes」コマンドで確認できるのはワーカーのみです。ROLESに「master,worker」と出ますがマスターノードを兼ねている訳ではありません。この点が他のマネージドOpenShiftと異なる点で、マスターに関してはIBM様にお任せとなってます。
$ oc get nodes NAME STATUS ROLES AGE VERSION 10.212.234.207 Ready master,worker 160m v1.20.0+2817867 10.212.234.217 Ready master,worker 160m v1.20.0+2817867 10.212.234.220 Ready master,worker 160m v1.20.0+2817867 10.212.234.223 Ready master,worker 6h9m v1.19.0+c3e2e69 10.212.234.233 Ready master,worker 160m v1.20.0+2817867 10.212.234.234 Ready master,worker 6h8m v1.19.0+c3e2e69 10.212.234.243 Ready master,worker 6h8m v1.19.0+c3e2e69 10.212.234.245 Ready master,worker 141m v1.20.0+2817867 $ oc whoami IAM#mkoshimi@redhat.com $ oc get machineset -A error: the server doesn't have a resource type "machineset"
ibmcloud ocコマンドでクラスターの中身をチラ見してみます。
▼クラスター一覧 $ ibmcloud oc cluster ls OK Name ID State Created Workers Location Version Resource Group Name Provider mycluster-osa22-b3c.4x16 c3ci566o0ios9ivro38g normal 2 hours ago 9 Osaka 4.6.28_1543_openshift Default classic mycluster-tok02-b3c.4x16 c3chubft05l5kt4orku0 normal 3 hours ago 3 Tokyo 4.7.12_1520_openshift Default classic ▼特定のクラスターのリソース状況 $ ibmcloud oc cluster get --cluster c3chubft05l5kt4orku0 --show-resources Retrieving cluster c3chubft05l5kt4orku0 and all its resources... OK Name: mycluster-tok02-b3c.4x16 ID: c3chubft05l5kt4orku0 State: normal Status: All Workers Normal Created: 2021-06-28T01:00:51+0000 Location: tok02 Pod Subnet: 172.30.0.0/16 Service Subnet: 172.21.0.0/16 Master URL: https://c100-e.jp-tok.containers.cloud.ibm.com:30608 Public Service Endpoint URL: https://c100-e.jp-tok.containers.cloud.ibm.com:30608 Private Service Endpoint URL: - Master Location: Tokyo Master Status: Ready (5 hours ago) Master State: deployed Master Health: normal Ingress Subdomain: mycluster-tok02-b-490845-162f4dd9d7174cb8b0ffbc223c7b2a54-0000.jp-tok.containers.appdomain.cloud Ingress Secret: mycluster-tok02-b-490845-162f4dd9d7174cb8b0ffbc223c7b2a54-0000 Ingress Status: healthy Ingress Message: All Ingress components are healthy Workers: 8 Worker Zones: tok02 Version: 4.7.12_1520_openshift Creator: - Monitoring Dashboard: - Resource Group ID: 461c4fdfb3aa498eb230ce340f6023fa Resource Group Name: Default Addons Name Enabled openshift-container-storage true Subnet VLANs VLAN ID Subnet CIDR Public User-managed 3108638 10.212.77.216/29 false false 3108636 162.133.94.40/29 true false
クラスターのアップデートをクラスター管理画面から実施できると書きましたが、クラスターに属しているワーカーノードの状態を確認すると、アップデート前に作成したワーカーノードについては「* To update to 4.7.16_1522_openshift version, run 'ibmcloud ks worker update'. Review and make any required version changes」という記載があり、ワーカーノードは手動でアップデートする必要があります。
$ ibmcloud oc worker ls --cluster c3chubft05l5kt4orku0 OK ID Public IP Private IP Flavor State Status Zone Version kube-c3chubft05l5kt4orku0-myclusterto-default-000001c2 162.133.80.21 10.212.234.234 b3c.4x16.encrypted normal Ready tok02 4.6.34_1546_openshift* kube-c3chubft05l5kt4orku0-myclusterto-default-000002de 162.133.80.25 10.212.234.243 b3c.4x16.encrypted normal Ready tok02 4.6.34_1546_openshift* kube-c3chubft05l5kt4orku0-myclusterto-default-000003c8 162.133.80.24 10.212.234.223 b3c.4x16.encrypted normal Ready tok02 4.6.34_1546_openshift* ↑最初に作成したワーカー kube-c3chubft05l5kt4orku0-myclusterto-default-000008a7 162.133.80.23 10.212.234.245 b3c.4x16.encrypted normal Ready tok02 4.7.16_1522_openshift ↑クラスターを4.6から4.7にアップデートした後に、Resizeで追加されたワーカー kube-c3chubft05l5kt4orku0-myclusterto-myworke-00000445 162.133.80.19 10.212.234.233 b3c.4x16.encrypted normal Ready tok02 4.7.16_1522_openshift kube-c3chubft05l5kt4orku0-myclusterto-myworke-000005d9 162.133.80.26 10.212.234.207 b3c.4x16.encrypted normal Ready tok02 4.7.16_1522_openshift kube-c3chubft05l5kt4orku0-myclusterto-myworke-00000675 162.133.80.22 10.212.234.217 b3c.4x16.encrypted normal Ready tok02 4.7.16_1522_openshift kube-c3chubft05l5kt4orku0-myclusterto-myworke-0000078b 162.133.80.30 10.212.234.220 b3c.4x16.encrypted normal Ready tok02 4.7.16_1522_openshift ↑クラスターを4.6から4.7にアップデートした後に、新しいワーカープールを追加して出来たワーカー * To update to 4.7.16_1522_openshift version, run 'ibmcloud ks worker update'. Review and make any required version changes
ここ、さりげにksコマンドになってますが、特定のワーカーのアップデートしている間はそのワーカーで稼働していたpodは他のワーカーに退避されるようにしておく必要があります。
$ ibmcloud ks worker update --cluster c3chubft05l5kt4orku0 --worker kube-c3chubft05l5kt4orku0-myclusterto-default-000001c2 Updating the worker node version can cause downtime for your apps and services. During the update, all pods might be rescheduled onto other worker nodes and data is deleted if not stored outside the pod. To avoid downtime, ensure that you have enough worker nodes to handle your workload while the selected worker nodes are updating. You might need to change your YAML files for deployments before updating. Review the docs for details: 'https://ibm.biz/upworker' Are you sure you want to update your worker node [kube-c3chubft05l5kt4orku0-myclusterto-default-000001c2] to 4.7.16_1522_openshift? [y/N]> y Processing kube-c3chubft05l5kt4orku0-myclusterto-default-000001c2... Processing on kube-c3chubft05l5kt4orku0-myclusterto-default-000001c2 complete.
最初にコマンド実行したワーカーがアップデートされたことを確認してから、順次このコマンドを実施します。
$ ibmcloud oc worker ls --cluster c3chubft05l5kt4orku0 OK ID Public IP Private IP Flavor State Status Zone Version kube-c3chubft05l5kt4orku0-myclusterto-default-000001c2 162.133.80.21 10.212.234.234 b3c.4x16.encrypted normal Ready tok02 4.6.34_1546_openshift --> 4.7.16_1522_openshift (pending) kube-c3chubft05l5kt4orku0-myclusterto-default-000002de 162.133.80.25 10.212.234.243 b3c.4x16.encrypted normal Ready tok02 4.6.34_1546_openshift --> 4.7.16_1522_openshift (pending) kube-c3chubft05l5kt4orku0-myclusterto-default-000003c8 162.133.80.24 10.212.234.223 b3c.4x16.encrypted normal Ready tok02 4.6.34_1546_openshift --> 4.7.16_1522_openshift (pending) kube-c3chubft05l5kt4orku0-myclusterto-default-000008a7 162.133.80.23 10.212.234.245 b3c.4x16.encrypted normal Ready tok02 4.7.16_1522_openshift kube-c3chubft05l5kt4orku0-myclusterto-myworke-00000445 162.133.80.19 10.212.234.233 b3c.4x16.encrypted normal Ready tok02 4.7.16_1522_openshift kube-c3chubft05l5kt4orku0-myclusterto-myworke-000005d9 162.133.80.26 10.212.234.207 b3c.4x16.encrypted normal Ready tok02 4.7.16_1522_openshift kube-c3chubft05l5kt4orku0-myclusterto-myworke-00000675 162.133.80.22 10.212.234.217 b3c.4x16.encrypted normal Ready tok02 4.7.16_1522_openshift kube-c3chubft05l5kt4orku0-myclusterto-myworke-0000078b 162.133.80.30 10.212.234.220 b3c.4x16.encrypted normal Ready tok02 4.7.16_1522_openshift $ ibmcloud oc worker ls --cluster c3chubft05l5kt4orku0 OK ID Public IP Private IP Flavor State Status Zone Version kube-c3chubft05l5kt4orku0-myclusterto-default-000001c2 162.133.80.21 10.212.234.234 b3c.4x16.encrypted normal Ready tok02 4.7.16_1522_openshift kube-c3chubft05l5kt4orku0-myclusterto-default-000002de 162.133.80.25 10.212.234.243 b3c.4x16.encrypted normal Ready tok02 4.7.16_1522_openshift kube-c3chubft05l5kt4orku0-myclusterto-default-000003c8 162.133.80.24 10.212.234.223 b3c.4x16.encrypted normal Ready tok02 4.7.16_1522_openshift kube-c3chubft05l5kt4orku0-myclusterto-default-000008a7 162.133.80.23 10.212.234.245 b3c.4x16.encrypted normal Ready tok02 4.7.16_1522_openshift kube-c3chubft05l5kt4orku0-myclusterto-myworke-00000445 162.133.80.19 10.212.234.233 b3c.4x16.encrypted normal Ready tok02 4.7.16_1522_openshift kube-c3chubft05l5kt4orku0-myclusterto-myworke-000005d9 162.133.80.26 10.212.234.207 b3c.4x16.encrypted normal Ready tok02 4.7.16_1522_openshift kube-c3chubft05l5kt4orku0-myclusterto-myworke-00000675 162.133.80.22 10.212.234.217 b3c.4x16.encrypted normal Ready tok02 4.7.16_1522_openshift kube-c3chubft05l5kt4orku0-myclusterto-myworke-0000078b 162.133.80.30 10.212.234.220 b3c.4x16.encrypted normal Ready tok02 4.7.16_1522_openshift
Red Hat OpenShift on IBM Cloud コスト
Red Hat OpenShift on IBM Cloudではマスター部分は見えない状態で、料金表にはワーカーノードの記載のみがあります。
ノード | インスタンスタイプ | vCPU | RAM | DISK | インスタンス料金 | OpenShift料金 |
---|---|---|---|---|---|---|
マスターノード | - | - | - | - | - | |
ワーカーノード | 4 vCPU 16GB RAM 仮想 - 共有 | 4 | 16GB | 25GB SSD | - | $0.44/hour |
マルチゾーンの場合はMultizone load balancerも必要になります。その他、ストレージやネットワーク利用分も従量課金するのは他のクラウド製品と同様です。
参照:OpenShift料金表 (参照にはIBM Cloudのアカウントでログインが必要)
▼以下はコンソールから確認できる費用
初期設定で円を選んでしまいドルに変える方法がわからず。