1

私はkubernetesとdockerにかなり慣れていないので、しばらくお待ちください。

kubernetes pod である docker に含まれる Linux に Windows 共有をマウントしようとしています。

共有を手動でマウントするために、kubernetesとdockerですべての正しい権限を取得することができました。ただし、これは自動化する必要があるため、Dockerfile を介して行う必要があります。

これは私の Dockerfile です:

WORKDIR /app
COPY ./start-script.sh ./start-script.sh

RUN apt-get update && apt-get install -y cifs-utils
RUN mkdir Windows-Share
# RUN mount.cifs <Window share folder> /app/Windows-Share/ -o username=<username>,password=<password>,domain=<domain>

ENTRYPOINT ["bash", "./start-script.sh"]

ここに私のstart-script.shがあります:

#!/bin/bash
mount.cifs <Window share folder> /app/Windows-Share/ -o username=<username>,password=<password>,domain=<domain>
exec dotnet <dotnet dll>

ここで、docker コマンドのいずれにもアクセスできないことに注意してください。それらはすべて kubernetes によって処理されます。kubernetes がポッドを作成すると、ログに次のように表示されます。

マウント エラー (13): 許可が拒否されました

mount.cifs(8) のマニュアル ページを参照してください (man mount.cifs など)。

kubernetes ポッドにログインしてマウント コマンドを手動で実行すると、問題なくマウントされるため、これは私を混乱させます。私は何が欠けていますか?

4

2 に答える 2

1

同じ問題がありました。マウントはサーバー自体で機能し、イメージを docker コンテナーとして実行していましたが、イメージを kubernetes デプロイメントとして実行していませんでした。私の場合、特権といくつかの Linux 機能を使用して、デプロイメントにセキュリティ コンテキストを追加するのに役立ちました。

securityContext:
        capabilities:
          add:
            - SYS_ADMIN
            - DAC_READ_SEARCH
            - NET_BIND_SERVICE
        privileged: true
于 2021-02-17T08:04:58.490 に答える