ページの先頭行へ戻る
Enterprise Service Development Platform V1.1.0 インストールガイド
FUJITSU Software

B.1 アップデート手順後のContainer Management cgroup driver変更

本項ではContainer Managementのcgroup driverをcgroupfsからsystemdに変更する手順、および変更を切り戻す手順を記載します。

cgroup driver変更手順

  1. Kubernetes masterサーバ、nodeサーバにログインし、cgroup driverの設定を行います。

    ログイン方法は、「運用ガイド」の「共通の操作」-「SSL-VPNの接続による各サーバへのログイン」を参照してください。

  2. kubeletのサービス停止を行います。

    # sudo systemctl stop kubelet
  3. dockerの設定ファイルを更新します。

    /etc/docker/daemon.json に cgroupdriverの定義を追加します。

    # sudo vi /etc/docker/daemon.json

    以下の様に修正を追加を行います。

    {
          "exec-opts": ["native.cgroupdriver=systemd"], ※この行を追加します。
          "insecure-registries": [
          "XXX.XXX.XXX.XXX:4567"
          ],
          "log-driver": "json-file",
          "log-opts": {
          "max-file": "10",
          "max-size": "10m"
          },
          "storage-driver": "devicemapper",
          "storage-opts": [
          "dm.directlvm_device=/dev/vdb"
          ]
        }
  4. /usr/lib/systemd/system/docker.service から cgroupdriverの定義を削除します。

    ご利用のプラットフォームに合わせ以下を実行してください。

    【CentOSの場合】

    # sudo sed -i -e "s#ExecStart=.*#ExecStart=/usr/bin/dockerd#g" /usr/lib/systemd/system/docker.service

    【RHELの場合】

    # sudo sed -i -e "/--exec-opt native.cgroupdriver=cgroupfs/d" /usr/lib/systemd/system/docker.service
  5. dockerの設定変更の反映を行います。

    以下のコマンドを実行し、設定ファイルの内容を反映してください。

    # sudo systemctl daemon-reload
    # sudo systemctl restart docker
  6. kubeletの設定ファイルを更新します。

    以下のコマンドを実行し、cgroupdriverの定義を変更します。

    # sudo systemctl daemon-reload
    # sudo systemctl restart docker
  7. /etc/sysconfig/kubelet を編集します。

    以下の様に --runtime-cgroups=/systemd/system.slice --kubelet-cgroups=/systemd/system.slice を追記します。

    KUBELET_EXTRA_ARGS=--node-ip=XX.XX.XX.XX --runtime-cgroups=/systemd/system.slice --kubelet-cgroups=/systemd/system.slice
  8. /var/lib/kubelet/kubeadm-flags.envを編集します。

    # sudo vi /var/lib/kubelet/kubeadm-flags.env

    以下の様に cgroup driverをsystemdに変更します。

    KUBELET_KUBEADM_ARGS=--cgroup-driver=systemd --cni-bin-dir=/opt/cni/bin --cni-conf-dir=/etc/cni/net.d --network-plugin=cni
  9. kubeletの設定変更の反映を行います。

    以下のコマンドを実行し、設定ファイルの変更を反映します。

    # sudo systemctl daemon-reload
    # sudo systemctl start kubelet

cgroup driver変更切り戻し手順

  1. kubeletのサービス停止を行います。

    # sudo systemctl stop kubelet
  2. dockerの設定ファイルを更新します。

    /etc/docker/daemon.json から cgroupdriverの定義を削除します。

    # sudo vi /etc/docker/daemon.json

    以下の様にして定義を削除します。

    {
          "exec-opts": ["native.cgroupdriver=systemd"], ※この行を削除します。
          "insecure-registries": [
          "XXX.XXX.XXX.XXX:4567"
          ],
          "log-driver": "json-file",
          "log-opts": {
          "max-file": "10",
          "max-size": "10m"
          },
          "storage-driver": "devicemapper",
          "storage-opts": [
          "dm.directlvm_device=/dev/vdb"
          ]
        }
  3. /usr/lib/systemd/system/docker.service に cgroupdriver の定義を追加します。

    # sudo vi /usr/lib/systemd/system/docker.service

    【RHELの場合】

    [Unit]
    Description=Docker Application Container Engine
    :
    [Service]
    Type=notify
    :
    ExecStart=/usr/bin/dockerd-current \
              --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
              --default-runtime=docker-runc \
              --authorization-plugin=rhel-push-plugin \
              --exec-opt native.cgroupdriver=cgroupfs \       ※この行を追加します。
              --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
              --init-path=/usr/libexec/docker/docker-init-current \
              $OPTIONS \
              $DOCKER_STORAGE_OPTIONS \
              $DOCKER_NETWORK_OPTIONS \
              $ADD_REGISTRY \
              $BLOCK_REGISTRY \
              $INSECURE_REGISTRY \
              $REGISTRIES
    

    【CentOSの場合】

    :
    ExecStart=/usr/bin/dockerd --exec-opt native.cgroupdriver=cgroupfs  ※この行でcgroupfsを指定します。
    ExecReload=/bin/kill -s HUP $MAINPID
    TimeoutSec=0
  4. dockerの設定変更の反映を行います。

    以下のコマンドを実行し、設定ファイルの内容を反映してください。

    # sudo systemctl daemon-reload
    # sudo systemctl restart docker
  5. kubeletの設定ファイルを更新します。

    以下のコマンドを実行し、cgroupdriverの定義を変更します。

    # sudo sed -i -e 's/cgroupDriver: systemd/cgroupDriver: cgroupfs/' /usr/lib/systemd/system/kubelet.service.d/kubelet.conf
  6. 以下のコマンドを実行して、Kubernetes masterサーバの設定ファイルを変更します。

    # sudo sed -i -e 's/--cgroup-driver=systemd/--cgroup-driver=cgroupfs/' /var/lib/kubelet/kubeadm-flags.env
  7. kubeletの設定変更の反映を行います。

    以下のコマンドを実行し、設定ファイルの変更を反映します。

    # sudo systemctl daemon-reload
    # sudo systemctl start kubelet