OpenStackやOpenShiftなどのCloud製品を担当しているソリューションアーキテクトの輿水です。
前回、デフォルトのAROクラスターを作成してコンソールにログインできるところまで実施しました。OpenShift Container Platform のコマンドラインインターフェースを用いて中身をちょっと確認してみましょう。
- OpenShift Container Platform のコマンドラインインターフェース
- AROクラスター
- Azure Red Hat OpenShift のネットワークアーキテクチャー
- Azure Red Hat OpenShift コスト
OpenShift Container Platform のコマンドラインインターフェースを利用してのログイン
OpenShift上での操作はこのコンソールで行えますが、クラスターの中身を覗いてみるにはOpenShift Container Platform のコマンドラインインターフェース (CLI) であるocコマンドが適しています。ocコマンドは、コンソールにログインした際の右上にある「?」をクリックすると、ocコマンドのダウンロード画面が表示されるので、ご自身の環境にあわせてダウンロードして展開してください。ocコマンド自体はAROでもROSAでもROKSでも共通です。
作成したクラスターにocコマンドでログインするためにはtokenが必要で、コンソールから必要な情報を入手できます。
$ oc login --token=sha256~1n4d1cZh6rtlanz-jE1Mx7gDmBPQ7Q7eS1wUtf1dRgI --server=https://api.csm8323l.eastus.aroapp.io:6443 Logged into "https://api.csm8323l.eastus.aroapp.io:6443" as "kube:admin" using the token provided. You have access to 61 projects, the list has been suppressed. You can list all projects with 'oc projects' Using project "default".
AROクラスター
az createコマンドで特にパラメーターを指定せずデフォルトでAROクラスターを作成するとマスターノード3台、ワーカーノード3台の構成で作成されます。ARO(4.Xの場合)ではインフラノードは利用できません。
ノード | 台数 | インスタンスタイプ | vCPU | RAM | DISK |
---|---|---|---|---|---|
マスターノード | 3 | D8s v3 | 8 | 32GB | - |
ワーカーノード | 3 | D4s v3 | 4 | 16GB | 128GB |
- クラスターの上限
- クラスターあたりのワーカーノード上限:100ノード
- ノードあたりポッド上限:250
- ひとつのクラスターでサポートされるポッドの最大数: 250×100 = 25000
ノードに関してaz create時にパラメーター指定できるのは以下の項目になります。
- マスターノードのVMサイズ( Standard_D8s_v3 / Standard_D16s_v3 / Standard_D32s_v3 )
- ワーカーノードのVMサイズ
- ワーカーノードの台数
- ワーカーノードのディスクサイズ (GB)
VMサイズの詳細については「Azure Red Hat OpenShift のサポートポリシー」の「サポートされる仮想マシンのサイズ」に記載があります。
ocコマンドで作成されたクラスターのノードの数やmachinesetを確認してみます。ワーカーノードは米国東部 eastusリージョンの中の3つのAvailability Zone(可用性ゾーン)に1台ずつ配置されていることがわかります。以下のコマンドでは確認できませんが、マスターノードも同様の配置になります。
$ oc whoami kube:admin $ oc get nodes NAME STATUS ROLES AGE VERSION cluster-t6x9s-master-0 Ready master 17h v1.19.0+a5a0987 cluster-t6x9s-master-1 Ready master 17h v1.19.0+a5a0987 cluster-t6x9s-master-2 Ready master 17h v1.19.0+a5a0987 cluster-t6x9s-worker-eastus1-gchqq Ready worker 17h v1.19.0+a5a0987 cluster-t6x9s-worker-eastus2-hvn9r Ready worker 17h v1.19.0+a5a0987 cluster-t6x9s-worker-eastus3-xbbth Ready worker 17h v1.19.0+a5a0987 $ oc get machineset -A NAMESPACE NAME DESIRED CURRENT READY AVAILABLE AGE openshift-machine-api cluster-t6x9s-worker-eastus1 1 1 1 1 17h openshift-machine-api cluster-t6x9s-worker-eastus2 1 1 1 1 17h openshift-machine-api cluster-t6x9s-worker-eastus3 1 1 1 1 17h
更にmachineset cluster-t6x9s-worker-eastus1の内容を見るとレプリカ数やVMの種類やメモリ・使用しているディスクとサイズなどのワーカーノード情報が確認できます。
$ oc get machineset cluster-t6x9s-worker-eastus1 -n openshift-machine-api -o yaml apiVersion: machine.openshift.io/v1beta1 kind: MachineSet metadata: annotations: machine.openshift.io/GPU: "0" machine.openshift.io/memoryMb: "16384" machine.openshift.io/vCPU: "4" creationTimestamp: "2021-06-17T09:09:22Z" generation: 1 labels: machine.openshift.io/cluster-api-cluster: cluster-t6x9s machine.openshift.io/cluster-api-machine-role: worker machine.openshift.io/cluster-api-machine-type: worker 〜〜〜(略)〜〜〜 spec: metadata: {} providerSpec: value: apiVersion: azureproviderconfig.openshift.io/v1beta1 credentialsSecret: name: azure-cloud-credentials namespace: openshift-machine-api image: offer: aro4 publisher: azureopenshift resourceID: "" sku: aro_46 version: 46.82.20201126 kind: AzureMachineProviderSpec location: eastus metadata: creationTimestamp: null networkResourceGroup: aro-rg osDisk: diskSizeGB: 128 managedDisk: storageAccountType: Premium_LRS osType: Linux publicIP: false publicLoadBalancer: cluster-t6x9s resourceGroup: aro-csm8323l subnet: worker-subnet userDataSecret: name: worker-user-data vmSize: Standard_D4s_v3 vnet: aro-vnet zone: "1" status: availableReplicas: 1 fullyLabeledReplicas: 1 observedGeneration: 1 readyReplicas: 1 replicas: 1
Azure Red Hat OpenShift のネットワークアーキテクチャー
以下の図は「Azure Red Hat OpenShift (ARO) のネットワークの概念」に掲載されているネットワーク概念図を引用してます。図では4.5とありますが、現在のAROで使用しているOpenShiftのバージョンは4.6です。「Microsoft Azure Red Hat OpenShift (ARO) 其の1」の仮想ネットワーク作成時に「マスターサブネットのサブネットプライベートエンドポイントポリシー無効化」という設定をしましたが、図の上部にあるAzure Red Hat OpenShift serviceがプライベートリンクを介してマスターノードに対して接続する必要があるためです。
ネットワークアーキテクチャを見ると、AROクラスターではマスターノードやワーカーノードの他にロードバランサーやDNSを利用していることがわかります。AROはフルマネージなのでこれらの構成を自動的にセットアップしてくれますが、セルフマネージで例えばオンプレミス環境に構築するには、様々な考慮点があることがわかると思います。
Azure Red Hat OpenShift コスト
AROの利用料金についてです。マスターノードはインスタンス料金のみ、ワーカーノードはインスタンス料金とOpenShift料金がかかります。以下は時間単位の料金ですが1年・3年単位での契約も可能でその場合は時間単位に比べてディスカウントされます。
ノード | インスタンスタイプ | vCPU | RAM | DISK | インスタンス料金 | OpenShift料金 |
---|---|---|---|---|---|---|
マスターノード | D8s v3 | 8 | 32GB | - | $0.44/hour | - |
ワーカーノード | D4s v3 | 4 | 16GB | 128GB | $0.22/hour | $0.171/hour |
本記事を書くために、とりあえずデフォルトのAROクラスターを作ってみた訳ですが、半日くらい使ってこれくらいの料金でした。
内訳をみるとVMやOpenShiftの料金以外に使用したストレージやロードバランサーの費用なども従量課金されるので利用コストを算出する場合は使用するデータ容量なども考慮する必要があります。
余談ですが、Azureを初めて利用する場合、今現在「USD200* のクレジット」が付いてくるので、今回試した内容はまかなえるかもしれません。現時点で今月分の請求書は見れないようなので、来月請求書が来たら結果をお伝えします。
クラスターの削除
半日くらいで上記の料金なので、テストなどが終了したら、クラスター削除をお忘れなく。
クラスターを作成したときの環境変数 LOCATION=eastus # クラスターのロケーション(この例では米国東部) RESOURCEGROUP=aro-rg # クラスターを作成する場所のリソースグループ名。任意の名称でOK。 CLUSTER=cluster # クラスター名。任意の名称でOK。 $ az aro delete --resource-group $RESOURCEGROUP --name $CLUSTER Are you sure you want to perform this operation? (y/n): y