Microsoft Azure Red Hat OpenShift (ARO) その2

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が必要で、コンソールから必要な情報を入手できます。

f:id:mkoshimizu:20210625170307p:plain

f:id:mkoshimizu:20210625170324p:plain

$ 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

f:id:mkoshimizu:20210625183536p:plain:w650
ノード配置イメージ

更に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はフルマネージなのでこれらの構成を自動的にセットアップしてくれますが、セルフマネージで例えばオンプレミス環境に構築するには、様々な考慮点があることがわかると思います。

f:id:mkoshimizu:20210625184751p:plain

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

azure.microsoft.com

本記事を書くために、とりあえずデフォルトのAROクラスターを作ってみた訳ですが、半日くらい使ってこれくらいの料金でした。

f:id:mkoshimizu:20210625233151p:plain 内訳をみるとVMやOpenShiftの料金以外に使用したストレージやロードバランサーの費用なども従量課金されるので利用コストを算出する場合は使用するデータ容量なども考慮する必要があります。

f:id:mkoshimizu:20210625233703p:plain:w650

余談ですが、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

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。