仕事でkubernetesの本番運用を検討して思ったことをまとめる。
あくまで「kubernetesをとりあえず動かせる」程度の理解レベルにての話で、知識豊富な専門家が取り組むのであればこの限りではないと思う。
kubernetesクラスタで永続化データを扱うのは難易度が高いのでやめたほうがいい
kubernetesで永続化データを扱おうとすると途端に不安要素が増える。
「volumeを使えば永続化できる」ということはすぐに解るのだが本番運用を考えると
- 容量が設定値を超えそうになったらどうすればいいのか?
- 複数コンテナから同時にread/writeを行いたいけど、どう設定するのがよいのか?
- マウントできなくなったらどのように対応すればいいのか?
- 実ファイルはどこに存在しているのか
とか不安に思えることが湧いてくるけど、ちょっと調べてもなかなか情報が出てこない。
上記はパッと思いついただけなので、実際に運用するともっと意味不明な状態に陥る事はあると思う。
そのとき、kubernetes自体の仕組みがわかってないと問題解決のための方針すら決められずお手上げになってしまいそうで怖い。
実際に検証中に「なぜかvolumeに急にマウントできなくなりコンテナが立ち上がらない状態」になってしまった。
マウントできないので中のデータをサルベージもできない。
検証環境だからどうでもいいデータしか入ってなかったけど、本番だと絶対にどうにかしないといけない。
ぱっと調べたところ「クラスターの設定をどうのこうのする」というような英語の情報しか出てこず、これは「ちょっと勉強してkubernetesがとりあえず使えるようになった」程度ではどうにもならないと感じた。
(vmやオンプレミスでもよくわからん現象の問題解決は難易度が高いと感じるのに、kubernetesでそうなるともはや手出しできない。さらにkubernetesは専門家も少ないので人に頼ることもできない。)
僕レベルの知識だと、このあたりの情報が簡単に出てくるくらいになってないと本番で運用するのは厳しいと感じた。
「使える」程度の知識でkubernetesを本番運用するならデータはクラスタ外に任せたほうが良さそう
永続データを持たないコンテナだけならkubernetesを使うのはメリットも多く、操作や挙動もシンプルになるので、良さそうと感じている。
「データはPaaS等の外部に任せてしまう」というのが「ちょっとkubernetesをかじった」程度の知識で扱える最大値なんではないかなと思った