Menu Close
5.10.2. ノードのリソースの自動割り当て
OpenShift Container Platform は、特定のマシン設定プールに関連付けられたノードに最適な system-reserved
CPU およびメモリーリソースを自動的に判別し、ノードの起動時にそれらの値を使用してノードを更新できます。
ノード上で system-reserved
リソースを自動的に判断して割り当てるには、KubeletConfig
カスタムリソース (CR) を作成して autoSizingReserved: true
パラメーターを設定します。各ノードのスクリプトにより、各ノードにインストールされている CPU およびメモリーの容量に基づいて、予約されたそれぞれのリソースに最適な値が計算されます。増加した容量を考慮に入れたスクリプトでは、予約リソースにもこれに対応する増加を反映させることが必要になります。
最適な system-reserved
設定を自動的に判別することで、クラスターが効率的に実行され、CRI-O や kubelet などのシステムコンポーネントのリソース不足によりノードが失敗することを防ぐことができます。この際、値を手動で計算し、更新する必要はありません。
この機能はデフォルトで無効にされています。
前提条件
設定したいノードタイプの静的な
MachineConfigPool
オブジェクトに関連付けられたラベルを取得します。以下のいずれかの手順を実行します。マシン設定プールを表示します。
$ oc describe machineconfigpool <name>
以下は例になります。
$ oc describe machineconfigpool worker
出力例
Name: worker Namespace: Labels: machineconfiguration.openshift.io/mco-built-in= pools.operator.machineconfiguration.openshift.io/worker= Annotations: <none> API Version: machineconfiguration.openshift.io/v1 Kind: MachineConfigPool Metadata: ... creationTimestamp: 2019-02-08T14:52:39Z generation: 1 labels: pools.operator.machineconfiguration.openshift.io/worker: "" 1 ...
- 1
- ラベルが追加されると、
labels
の下に表示されます。
ラベルが存在しない場合は、キー/値のペアを追加します。
$ oc label machineconfigpool worker custom-kubelet=small-pods
ヒントあるいは、以下の YAML を適用してラベルを追加できます。
apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfigPool metadata: labels: custom-kubelet: small-pods name: worker
手順
設定変更のためのカスタムリソース (CR) を作成します。
リソース割り当て CR の設定例
apiVersion: machineconfiguration.openshift.io/v1 kind: KubeletConfig metadata: name: dynamic-node 1 spec: autoSizingReserved: true 2 machineConfigPoolSelector: matchLabels: pools.operator.machineconfiguration.openshift.io/worker: "" 3
上記の例では、すべてのワーカーノードでリソースの自動割り当てを有効にします。OpenShift Container Platform はノードをドレイン (解放) し、kubelet 設定を適用してノードを再起動します。
system-reserved
値を確認します。設定したノードにログインします。
$ oc debug node/<node_name>
kubelet プロセスの詳細を表示します。
# ps -ef | grep kubelet
出力例
root 1613 1 11 06:49 ? 00:00:05 kubelet --config=/etc/kubernetes/kubelet.conf --bootstrap-kubeconfig=/etc/kubernetes/kubeconfig --kubeconfig=/var/lib/kubelet/kubeconfig --container-runtime=remote --container-runtime-endpoint=/var/run/crio/crio.sock --runtime-cgroups=/system.slice/crio.service --node-labels=node-role.kubernetes.io/worker,node.openshift.io/os_id=rhcos --node-ip= --minimum-container-ttl-duration=6m0s --volume-plugin-dir=/etc/kubernetes/kubelet-plugins/volume/exec --cloud-provider=azure --cloud-config=/etc/kubernetes/cloud.conf --pod-infra-container-image=quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:7b8e2e2857d8ac3499c9eb4e449cc3296409f1da21aa21d0140134d611e65b84 --system-reserved=cpu=0.07,memory=2.5Gi --v=2
上記の例では、ワーカーノードには
0.07
CPU および 2.5 Gi のメモリーが割り当てられます。更新が適用されるまでに数分の時間がかかることがあります。