Oracle WebLogic Operator チュートリアル

ライセンス対象のノードに対するWebLogicのPodの配置

このユースケースはノードに対するWebLogicのPodの割り当て で実施した個々のサーバ/Podを特定のノードに配置するケースに似ています。ここではライセンス適用範囲のユースケースにフォーカスします。

Kubernetesはバージョン v1.13から5,000ノード以上のクラスタに対応しました。しかし、WebLogicのような特定のソフトウェアはライセンスを必要とします。nodeSelector の機能を利用してWebLogicのPodをライセンスされたワーカーノードに配置します。

今回のハンズオンでは、WebLogicドメイン内の全てのWebLogicのPodを特定のノードにアサインする方法を学びます。

ライセンスされたノードに対するWebLogicサーバのPodのアサイン

ノードにPodをアサインするために、カスタム・タグを利用して希望するノードにラベルを付与する必要があります。ドメイン・リソース定義に nodeSelector プロパティを定義し、ノードに適用したラベルの値を設定します。最後にドメイン設定の変更を適用します。

最初に kubectl get node を使用してノード名を取得します。

$ kubectl get node
NAME             STATUS    ROLES     AGE       VERSION
130.61.110.174   Ready     node      11d       v1.11.5
130.61.52.240    Ready     node      11d       v1.11.5

OKEの場合、ノード名はパブリックIPアドレスやサブネットのCIDRブロックの最初のIPアドレスになることがあります。但し、明確にはノードを特定するユニークな文字列です。

kubectl get pod -n sample-domain1-ns -o wide を使い、Pod情報の詳細から現在のPodの配置をチェックします。

$ kubectl get pod -n sample-domain1-ns -o wide
NAME                             READY     STATUS    RESTARTS   AGE       IP            NODE             NOMINATED NODE
sample-domain1-admin-server      1/1       Running   0          2m        10.244.2.33   130.61.110.174     <none>
sample-domain1-managed-server1   1/1       Running   0          1m        10.244.1.8    130.61.52.240    <none>
sample-domain1-managed-server2   1/1       Running   0          1m        10.244.0.10   130.61.110.174   <none>
sample-domain1-managed-server3   1/1       Running   0          1m        10.244.2.34   130.61.52.240     <none>

Kubernetesの結果から3つの管理対象サーバが2つのワーカー・ノードに配置されていることが確認できます。このシナリオではすべてのPodを移動する1つのノードを選択します。

ラベルの設定

今回はライセンスされたノードを 130.61.110.174 とします。

このノードにラベルを設定します。任意のラベル名を指定できますが、ここでは licensed-for-weblogic を使用します。ノード名を正しく設定し kubectl label nodes <nodename> <labelname>=true コマンドを実行してください。

$ kubectl label nodes 130.61.110.174 licensed-for-weblogic=true
node/130.61.110.174 labeled
ドメイン・リソース定義の変更

定義を変更する前に、一度ドメイン・リソース定義を削除します。 以下のコマンドを実行してください。

$ kubectl delete -f /u01/domain.yaml
podが完全に削除されるまで待機します。以下のような出力が得られればpodが削除されています。
$ kubectl get po -n sample-domain1-ns -o wide
No resources found in sample-domain1-ns namespace.

domain.yaml ファイルをテキストエディタで開き serverPod: エントリを見つけ、中に新しいプロパティを追加します。

serverPod:
  env:
  [...]
  nodeSelector:
    licensed-for-weblogic: true
インデントに注意してください。文法についてはサンプル domain.yaml の同じ部分のコメント内の記述でダブルチェックできます。

設定を変更したら、ドメイン・リソース定義を適用します。

$ kubectl apply -f /u01/domain.yaml

Operatorは変更に従ってサーバの再配置を開始します。繰り返し情報を更新して期待した結果が表示されるまで待ってください。

$ kubectl get po -n sample-domain1-ns -o wide
NAME                             READY     STATUS    RESTARTS   AGE       IP            NODE           NOMINATED NODE
sample-domain1-admin-server      1/1       Running   0          4h        10.244.2.40   130.61.110.174   <none>
sample-domain1-managed-server1   1/1       Running   0          4h        10.244.2.43   130.61.110.174   <none>
sample-domain1-managed-server2   1/1       Running   0          4h        10.244.2.42   130.61.110.174   <none>
sample-domain1-managed-server3   1/1       Running   0          4h        10.244.2.41   130.61.110.174   <none>

ラベルと domain.yaml 内の nodeSelector エントリの削除

ノード配置を削除するために、ノード名を適切に指定して各ノードのラベルを kubectl label node <nodename> <labelname>- コマンドを使って削除してください。

$ kubectl label nodes 130.61.110.174 licensed-for-weblogic-
node/130.61.110.174 labeled

domain.yaml 内のノード配置の記述を削除、またはコメントアウトして適用してください。

$ kubectl apply -f /u01/domain.yaml
domain.weblogic.oracle/sample-domain1 configured

Podはスケジューラの決定に基づいて再配置/再起動されます。

以上で、WebLogic Operatorのハンズオンは終わりです。お疲れ様でした。