LoginSignup
0
2

More than 5 years have passed since last update.

kubernetes: volumeをホストに指定するとPermission Denied

Last updated at Posted at 2016-04-19

kubernetesでvolumeをホスト上のディレクトリに指定してPod(rc)を起動したところ、該当ディレクトリにコンテナからアクセスするとPermission Deniedエラーとなる事象に遭遇。

ホスト側のマウント先ディレクトリの権限は777にしていたがダメだった。

原因は SELinux。

SELinuxとはセキュリティ管理モジュールで、SELinux はデフォルトでは、Kubernetes がその共有ディレクトリーにアクセスすることをブロックする。

ホスト上でSELinuxが動作しているかは以下のコマンドで確認できる。

getenforce

enforcing : SELinux機能、アクセス制御が有効
permissive : SElinuxは警告を出力するが、アクセス制限は無効
disabled : SElinux機能、アクセス制御が無効

SElinuxの無効化

/etc/selinux/configSELINUX=disabled と編集して再起動すると無効化できる

SElinuxの一時的無効化

setenforce 0 コマンドでい時期的に無効化(permissive)に変更できる
setenforce 1 で再有効化

指定ディレクトリを許可

無効化はせず、コンテナ稼働ホスト(Minion)上で以下を実行すると、SELinuxは、指定したホストマウント先ディレクトリへの読み書きを許可する設定にできる。

sudo chcon -R -t svirt_sandbox_file_t <マウント先ディレクトリ>

参考)
https://access.redhat.com/documentation/ja/red-hat-enterprise-linux-atomic-host/7/getting-started-with-containers/chapter-6-get-started-provisioning-storage-in-kubernetes
http://rfs.jp/server/security/selinux01.html
http://kubernetes.io/docs/user-guide/security-context/

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2