なんか適当に色々するアレ

PCいじりが基本かもしれない

dockerとかkubernetesでハマりそうなこといろいろ

   

  • kubernetesでvolumeが空っぽ・・・
    大抵の場合で直接dockerを叩いた時のように勝手にイメージ内のファイルを使って初期ボリューム作ってくれたりはしない。NFSならおとなしく手動で初期ファイル配置しておいたディレクトリをマウントしよう。単純に設定ファイル的なものの配置をしたいだけならコンテナ起動時のentrypointを自作するだとか、適当にマウントしたディレクトリに置きたいファイルとシェルとかを置いておきそれをcommandなりargsで叩こう。gcpとかazureのオブジェクトストレージもアレなとこあるからな!おとなしく手動で作れ!ベンダーロックインを嫌がってNFS使いたくなるのはわかるんだけど、まだそこまで便利なプラグインやストレージドライバは無いようだ。(あるにはあるようだが公式とかcncfの蚊帳の外なんでなんかアレ)あとNFSは遅いしたまにファイル壊れるのでそのつもりで。DBをデプロイして永続ボリュームにNFSなんぞ使ったりはしないほうが身のため。というか個人的にはkubernetes上にDBを置くとか狂気の沙汰だと思う。まぁ、ステートフルセットとアノテーションとかセレクタでやれなくはない方法はあるがかなりの荒業・・・何個もDBのdeployment置いたりするとむしろリソースの無駄遣いで本末転倒になったりも・・・
  • kubernetesのpodなんか遅い!超遅い!
    pod(というかその中のコンテナ)内のボリューム化されてないどっかに大量だったり頻繁だったりにファイル書き出したりしてない・・・?コンテナ内ローカルへの書き出しはご法度といっていいくらいアレよ(stdout/stderrは別)
    特にazureみたいにストレージ追加してない場合のI/O制限が激しい環境はkubernetesどころかインスタンスごと固まるよ・・・もう永続化は諦めた!だからDB置いてやるぜぐへへへへとか絶対やめろよ!WebPolicyAgent入れただけのhttpdだからって舐めるなよ!このクソエージェント、開発環境だからって迂闊にログレベルをdebugとかにするとマジやべーぞ!
  • なんかDockerでビルドしたイメージが超でかいんだけど・・・
    無駄にレイヤー重ねすぎてないか・・・?特にRUNでchown hoge:hoge -R /path/to/dirとかはヤバイ、超ヤバイ。/path/to/dir以下で使ってる容量まるまるイメージサイズに反映されると思っておいたほうがいい。細かい仕組みまでは面倒だから省くけど、DockerfileでADDとかCOPYとかRUNをやるたびにそれをやったことで何かしらが変化したファイル全部がレイヤーとして重ねられるとでも思っといたほうがいい。素直にentrypoint作ってそこでやれることはコンテナ起動時にやったほうがいい。
  • おい!軽いからこれ使えって言われたalpineが訳解んないんだけど!bash無いってなんだよ!
    いや、そういうもんなんで。bashはなくてもashが入ってるよ。でもまぁbashをインストールすることもできるよ、どうしてもbash使いたいならapk add --no-cache bashってやっとけ。あとついでにalpineはほとんどのコマンドがbusyboxへのシンボリックリンクだからオプション違ったりするから気をつけるんだな!もっと言えばglibcじゃなくて互換ライブラリのmuslだから使えないものもあるってことも覚えておけ!でもこれのせいでずっと使えなかった.net coreも2.1からalpineで使えるようになったぞ!docker hubに公式イメージも転がってるぜ!Microsoft頑張ったな!

書き殴ってたらだんだん飽きてきたのでこのへんで。そのうち追記したり新しいの投下するかも。

 



 - インフラ