15.3. Downward API を使用した Huge Page リソースの使用
コンテナーが消費する huge page リソースに関する情報を注入するには、Downward API を使用します。この設定により、アプリケーションは自身のメモリー使用量データを直接取得して使用できるようになります。
リソースの割り当ては、環境変数、ボリュームプラグイン、またはその両方として挿入できます。コンテナーで開発および実行するアプリケーションは、指定されたボリューム内の環境変数またはファイルを読み取ることで、利用可能なリソースを判別できます。
手順
以下の例のような
hugepages-volume-pod.yamlファイルを作成します。apiVersion: v1 kind: Pod metadata: generateName: hugepages-volume- labels: app: hugepages-example spec: containers: - securityContext: capabilities: add: [ "IPC_LOCK" ] image: rhel7:latest command: - sleep - inf name: example volumeMounts: - mountPath: /dev/hugepages name: hugepage - mountPath: /etc/podinfo name: podinfo resources: limits: hugepages-1Gi: 2Gi memory: "1Gi" cpu: "1" requests: hugepages-1Gi: 2Gi env: - name: REQUESTS_HUGEPAGES_1GI valueFrom: resourceFieldRef: containerName: example resource: requests.hugepages-1Gi volumes: - name: hugepage emptyDir: medium: HugePages - name: podinfo downwardAPI: items: - path: "hugepages_1G_request" resourceFieldRef: containerName: example resource: requests.hugepages-1Gi divisor: 1Giここでは、以下のようになります。
spec.containers.securityContext.env.name-
requests.hugepages-1Giから読み込んで使用するリソースを指定し、その値をREQUESTS_HUGEPAGES_1GI環境変数として公開します。 spec.volumes.name.items.path-
requests.hugepages-1Giから読み込んで使用するリソースを指定し、その値をファイル/etc/podinfo/hugepages_1G_requestとして公開します。
次のコマンドを入力して、
huge page-volume-pod.yamlファイルから Pod を作成します。$ oc create -f hugepages-volume-pod.yaml
検証
REQUESTS_HUGEPAGES_1GI環境変数の値を確認します。$ oc exec -it $(oc get pods -l app=hugepages-example -o jsonpath='{.items[0].metadata.name}') \ -- env | grep REQUESTS_HUGEPAGES_1GI出力例
REQUESTS_HUGEPAGES_1GI=2147483648/etc/podinfo/hugepages_1G_requestファイルの値を確認します。$ oc exec -it $(oc get pods -l app=hugepages-example -o jsonpath='{.items[0].metadata.name}') \ -- cat /etc/podinfo/hugepages_1G_request出力例
2