グーグルをたくさんしてみると似たような事例がかなりありました。しかし、そのどれも私の状況には当てはまりません。 Macと関係があるかどうかはわかりません。
私の問題をできるだけ明確に説明しようとしています。
- KINDを使用して3つのノードを持つローカルKubernetesクラスターを実行しています。
/data/k8s
ローカルMacOSでマスターノードにボリュームをマウントします。/tmp/k8s
- マスターノードにNFSサーバーを作成してエクスポートします。
/data/k8s
- また、NFS クライアントとしてスレーブノードに NFS をインストールし、マスターノードを
/data/k8s
スレーブノードにローカルにマウントしました。/data/k8s
問題はこれである:
- 問題なくマスターノードですべてがうまく動作します。
- スレーブノードで
CANNOT
通常のファイルを作成すると同時にフォルダを作成できます。 - スレーブノードは、
CAN
マスターノードで生成されたすべてのファイルを変更します。 - マスターノードで生成されたすべてのファイルは、問題なくスレーブノードで同期できます。
以下はいくつかの情報です。
- オペレーティングシステム(マスターとスレーブと同じ)
NAME="Ubuntu"
VERSION="19.10 (Eoan Ermine)"
ID=ubuntu
ID_LIKE=debian
- マスターノードのマウント情報(元のホストMacOSでマウントされたスペース)
root@test2-control-plane:/data/k8s# mount | grep /data
grpcfuse on /data/k8s type fuse.grpcfuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other,max_read=1048576)
- マスターノードの設定のエクスポート
/data/k8s/ *(fsid=0,rw,sync,no_root_squash)
- マスターノードのetab情報
*(rw,sync,wdelay,hide,nocrossmnt,secure,no_root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,fsid=0,anonuid=65534,anongid=65534,sec=sys,rw,secure,no_root_squash,no_all_squash)
- マスターノードの権限情報
root@test2-control-plane:/data/k8s# ls -al
total 24
drwxrwxrwx 7 root root 224 Dec 25 01:50 .
drwxrwxrwx 3 root root 4096 Dec 24 12:33 ..
- ノードからの情報のマウント
root@test2-worker:/data/k8s# mount | grep /data
172.18.0.4:/data/k8s on /data/k8s type nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,nolock,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=172.18.0.4,mountvers=3,mountport=45257,mountproto=udp,local_lock=all,addr=172.18.0.4)
- スレーブノードの権限情報
root@test2-worker:/data/k8s# ls -al
total 24
drwxrwxrwx 8 root root 256 Dec 25 02:17 .
drwxrwxrwx 3 root root 4096 Dec 24 13:23 ..
- 私が試したこと:
- SELinuxを確認しました。
root@test2-control-plane:/data/k8s# sestatus SELinux status: disabled
- マスターノードとスレーブノードで特定のユーザーを追加し、
all_squash
同じuser_idとgroup_idでユーザーを定義しました。次に、マイスレーブノードで定義されたユーザーに切り替えます。anonuid
anongid
- あまり試しても覚えていません。
私はこれが特定のケースである可能性があることを知っています。誰でも助けていただければ幸いです。
答え1
Docker Desktopを使用してK8をローカルで実行するのと同じ問題が発生しました。
- macOSビッグサー11.1
- ドッカーv20.10.5
- k8s v1.19.7
私はこの動作が混乱していて、それを処理するホストシステムのOS権限がない場合は、どのような違いがあるかを確認するためにhostPathボリュームをemptyDirに置き換えることにしました。何らかの理由で機能したため、コンテナの起動/停止時にホストシステムからファイルをロード/保存するために、NFSサーバーのemptyDirといくつかのライフサイクルフックを使用して解決策を構築しました。
コードは次のとおりです。https://github.com/tonomychaelson/k8s-nfs-eration-not-permittied-workaround
NFSサーバーがクライアントではなくホストパスボリュームにファイルを生成する方法は非常に奇妙です。しかし、これはローカル開発者にのみ当てはまるので、これに多くの時間を費やしたくありません。さらに、クラウドのソリューションは絶対にHostPathを使用しません。
乾杯、トニー