すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:GPU ノードの Docker ランタイムのアップグレード

最終更新日:Jun 19, 2026

nvidia-container-runtime を使用して Docker を 19.03.5 にアップグレードし、クラスターノード上で共有 GPU リソース分離を有効にします。

背景情報

nvidia-container-runtime を使用すると、GPU アクセラレーション対応の Docker コンテナをビルドおよび実行できます。このコンポーネントは、NVIDIA GPU を使用するようにコンテナを自動的に設定します。

前提条件

以下を確認してください:

  • CentOS または Alibaba Cloud Linux 2 を実行している GPU ノードがあること

  • kubectl が ACK クラスターに接続されています。詳細については、「kubectl を使用してクラスターに接続する」をご参照ください。

  • kubectl get nodes から GPU ノード名を取得していること。以下の手順では、<NODE_NAME> をこの値に置き換えてください

操作手順

ノードの cordon

マスターノードで次のコマンドを実行して、対象ノードをスケジュール不可としてマークし、アップグレード中の新しい Pod のスケジューリングをブロックします。

kubectl cordon <NODE_NAME>

ノードの drain

既存の Pod を他の利用可能なノードに移行します。

kubectl drain <NODE_NAME> --ignore-daemonsets --delete-local-data --force

GPU ノードへのログインとサービスの停止

アップグレードの前に、kubelet と Docker を停止します。

service kubelet stop
docker rm -f $(docker ps -aq)
service docker stop

Docker と nvidia-container-runtime の削除

既存の Docker ランタイムと nvidia-container-runtime パッケージを削除します。

yum remove -y docker-ce docker-ce-cli containerd
yum remove -y nvidia-container-runtime*  libnvidia-container*

daemon.json のバックアップ

現在の設定を確認してから、バックアップとしてファイルを /tmp に移動します。

  1. 現在の設定を確認します。出力例:

       cat /etc/docker/daemon.json
       {
           "default-runtime": "nvidia",
           "runtimes": {
               "nvidia": {
                   "path": "/usr/bin/nvidia-container-runtime",
                   "runtimeArgs": []
               }
           },
           "exec-opts": ["native.cgroupdriver=systemd"],
           "log-driver": "json-file",
           "log-opts": {
               "max-size": "100m",
               "max-file": "10"
           },
           "bip": "169.254.123.1/24",
           "oom-score-adjust": -1000,
           "storage-driver": "overlay2",
           "storage-opts":["overlay2.override_kernel_check=true"],
           "live-restore": true
       }
  2. ファイルを /tmp に移動します:

       mv /etc/docker/daemon.json /tmp

Docker 19.03.5 のインストール

Docker 19.03.5 をダウンロードしてインストールします。

VERSION=19.03.5
URL=http://aliacs-k8s-cn-beijing.oss-cn-beijing.aliyuncs.com/public/pkg/docker/docker-${VERSION}.tar.gz
curl -ssL $URL -o /tmp/docker-${VERSION}.tar.gz
cd /tmp
tar -xf docker-${VERSION}.tar.gz
cd /tmp/pkg/docker/${VERSION}/rpm
yum localinstall -y $(ls .)

nvidia-container-runtime 3.1.0 のインストール

nvidia-container-runtime 3.1.0 をダウンロードしてインストールします。

sudo cd /tmp
sudo yum install -y unzip
sudo wget https://aliacs-k8s-cn-hongkong.oss-cn-hongkong.aliyuncs.com/public/pkg/nvidia-container-runtime/nvidia-container-runtime-3.13.0-linux-amd64.tar.gz
sudo tar -xvf nvidia-container-runtime-3.13.0-linux-amd64.tar.gz
sudo yum -y -q --nogpgcheck localinstall pkg/nvidia-container-runtime/3.13.0/common/*

daemon.json の復元

バックアップした設定ファイルを復元します。

  1. ファイルを復元します:

       mv /tmp/daemon.json  /etc/docker/daemon.json
  2. 設定を確認します。出力例:

       cat /etc/docker/daemon.json
       {
           "default-runtime": "nvidia",
           "runtimes": {
               "nvidia": {
                   "path": "/usr/bin/nvidia-container-runtime",
                   "runtimeArgs": []
               }
           },
           "exec-opts": ["native.cgroupdriver=systemd"],
           "log-driver": "json-file",
           "log-opts": {
               "max-size": "100m",
               "max-file": "10"
           },
           "bip": "169.254.123.1/24",
           "oom-score-adjust": -1000,
           "storage-driver": "overlay2",
           "storage-opts":["overlay2.override_kernel_check=true"],
           "live-restore": true
       }

Docker と kubelet の起動

Docker と kubelet を起動します。

service docker start
service kubelet start

ノードの uncordon

ノードをスケジュール可能としてマークして、Pod のスケジューリングを再開します。

kubectl uncordon <NODE_NAME>

cGPU インストーラーの再起動

ノード上の cGPU インストーラーを再起動します。

docker ps |grep cgpu-installer | awk '{print $1}' | xargs docker rm -f