Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

16.4.2. スケジューラーのパッケージ化

クラスターにカスタムスケジューラーを含む一般的なプロセスでは、イメージを作成し、そのイメージをデプロイメントに含める必要があります。

  1. スケジューラーバイナリーをコンテナーイメージにパッケージ化します。
  2. スケジューラーバイナリーを含む コンテナーイメージを作成します

    以下に例を示します。

    FROM <source-image>
    ADD <path-to-binary> /usr/local/bin/kube-scheduler
  3. ファイルを Dockerfile として保存し、イメージをビルドし、レジストリーにプッシュします。

    以下に例を示します。

    docker build -t <dest_env_registry_ip>:<port>/<namespace>/<image name>:<tag>
    docker push <dest_env_registry_ip>:<port>/<namespace>/<image name>:<tag>
  4. OpenShift Container Platform で、カスタムスケジューラーのデプロイメントを作成します。

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: custom-scheduler
      namespace: kube-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: custom-scheduler
    subjects:
    - kind: ServiceAccount
      name: custom-scheduler
      namespace: kube-system
    roleRef:
      kind: ClusterRole
      name: system:kube-scheduler
      apiGroup: rbac.authorization.k8s.io
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: custom-scheduler
      namespace: kube-system
      labels:
        app: custom-scheduler
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: custom-scheduler
      template:
        metadata:
          labels:
            app: custom-scheduler
        spec:
          serviceAccount: custom-scheduler
          containers:
            - name: custom-scheduler
              image: "<namespace>/<image name>:<tag>" 1
              imagePullPolicy: Always
    1
    カスタムスケジューラー用に作成したコンテナーイメージを指定します。