2017-07-27 6 views
1

私はdockerによってsshをubuntuに提供することができ、ユーザはそのenvを設定することができます。 たとえば、apt-getをインストールしてbashrc、vimrcなどを修正します。 このコンピュータを再起動すると、再起動後も同じenvが使用されます。k8sで持続的なubuntu envを提供する方法

k8で同じサービスを提供するにはどうすればよいですか? ノードを再起動すると、別のコンピュータに別のポッドが作成されます。 しかし、envはユーザの最新のenvではなく、initイメージに基づいています。

単純な方法では、すべてのボリュームを共有ストレージ(PV + PVC)にマウントします。/bin/lib/opt/usr/etc/lib64/root/var/homeなどのように(各ディレクトリはインストールによって影響を受ける可能性があります)これを行うベストプラクティスまたは他の方法は何ですか?

+1

はあなたがhttps://kubernetes.io/docs/concepts/storage/persistent-volumes/で見たことがありますか? PVCにステートフルなものを置いている可能性はありますか? – Saket

+0

それは、私が言及した素朴な方法ですが、あなたの返信にはまだ感謝しています。 – ChunTingLin

答えて

0

ConfigMaps(https://github.com/kubernetes/kubernetes/blob/master/docs/design/configmap.md)を使用することをお勧めします。 https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#configure-all-key-value-pairs-in-a-configmap-as-pod-environment-variables

設定マップでは、スクリプトを保存できるので、.bashrc(またはセクション)をconfipmapに保存することもできます。

+0

私はキーの値のペアを保持したくありません。ユーザーは彼の.bashrcを変更してaptなどをインストールすることができます。ノードの再起動後にこれらの設定を保存することができます。 – ChunTingLin

+0

設定マップにスクリプトを保存することもできます。それはあなたの事例で効果がありますか? –

1

@Saketは正しいです。

ドッカーコンテナがその状態(この場合はコンテナ内の何かを変更する)を維持する必要がある場合、その状態をどこかに保存する必要があります。回答:ディスクに保存します。

k8sでは、ストレージは永続ボリュームとして表されます。 PVC(パーシステントボリュームクレーム)と呼ばれるものは、POD(あなたのコード)と実際のストレージボリューム(実装の詳細が抽象化されている)との関係を維持するために使用されます。 k8の最新バージョンでは、永続的なボリュームの動的作成がサポートされているため、コンテナを配備する際に各ユーザーに固有の固有のPVCを作成するだけです(ここでは、各ユーザーに "配備"と "サービス"同じように)。

結論...コンテナ内でSSHを実行するのは珍しい。代わりに各ユーザに自分のk8s環境を与えることを考えましたか?たとえば、Openshiftは複数テナントです。確かRedhatはEclipse CheのバックエンドとしてOpenshiftを統合しているので、k8でIDE全体を実行しています。参照:

https://openshift.io/

+0

OpenShiftとEclipse Cheを見ていきます。ありがとう。 – ChunTingLin

関連する問題