OpenShift Container Platform 勉強メモ③

docker kubernetes openshift

飲み会終わりで雑になりますw

自宅or会社に気軽に試せるOpenShift環境を構築したい。

学習内容

  1. アプリケーションのデプロイの管理
  2. Metricsサブシステムのインストール、設定
  3. OpenShiftの管理、監視

7. アプリケーションのデプロイの管理

アプリのスケーリング

・レプリケーションコントローラー
こいつが担う。前から登場しているrcってやつ。
指定したポッドの数を維持し続ける。減っても増えても維持する。むしろ役割はそれだけ。
⇒自動スケーリングはできないの?
⇒できます。
⇒HorizontalPodAutoscaler(HPA)っていうリソースが存在する。

じゃあ何に基づいてスケーリングするの??
⇒OpenShiftに構築するMetricsサブシステムによって収集されたパフォーマンスメトリクスを使用
 ⇒つまり、その設定しないと自動スケーリングしない。

rcの設定は、GUIコンソールでも、コマンドでも簡単にできるよね。

ポッドスケジューリングの制御

ポッドは特定のnodeで起動するよう制御できますよ。
⇒何のために??
⇒AWSのマルチAZ構成がわかりやすい。特定の場所のサーバが死んでも、別の場所のサーバが生きていたら障害起きても大丈夫的な。

じゃあどうやって制御するか?
⇒nodeはregionというラベルを持っている。
 ⇒そいつを変更したり、dcのyamlを特定のregionにのみpodを配置するみたいな設定ができる。

デフォルトプロジェクトのpodとして運用することになる、ルーターとかプロキシは
案件で立てるpodとは別のリージョンに立てましょう。

イメージストリーム

イメージストリームは、dockerイメージとdc(末端でいえばpod)の中間役みたいな印象
役割はシンプルで

・使用するdockerイメージをずっと見続けている。
あっ、こいつバージョン変わったぞっていう履歴まで持てる。
⇒新しいバージョンに代わってそれでpod立ててコケたら、しゃあーね前のバージョンでデプロイするかぁって動いてくれる。

・上で書いたけど、イメージのバージョン変わったら、dcにバージョン変わったからデプロイお願いねって自動デプロイしてくれる。

テンプレート

CloudFormation的な。w

8. Metricsサブシステムのインストール、設定

OpenShiftクラスタのパフォーマンスを監視できますよ。
OpenShift自身がその機能を持っていないから、サブシステムを利用する必要があるけど、

3.10まではHawkularを使用していたけど、非推奨になり、3.11以降はPrometheusになった

みたいで、あまり触れなかった笑
まぁ、どちらにせよインストールはAnsibleで提供されているから比較的楽に構築できる。

はい次w

9. OpenShiftの管理、監視

リソース使用の制限

いくらなんでもpodボコボコ立てられたら困るってことで制限ができます。
そこで登場する人物は2人。

・クォータ(quota)
プロジェクト全体でこのくらいまでリソース割けますよ的な設定ができる。
・リミット(LimitRangeまたはlimit)
1podあたりこのぐらいまでリソースを割けますと有効範囲を設定できる。

例えば、クォータで500Miまでリソース割けると設定したとする。
さらに、リミットで1podデフォルトでも200Mi使用すると設定した状態で
podを3つ立てるってスケーリングすると、2つまでしかpodが立たない。便利やね。

ここで注意なのが、5つpodを立てるって想定していた場合に
クォータの設定で、pod最大5つまでって設定してはダメ!!!!(サイズ単位じゃなくてpod数単位の指定もできる)

⇒なぜか?
⇒イメージのバージョンが上がって、自動デプロイってなった場合に、設定によっては旧podを維持しながら、新podを立てて立ち上がったら、旧podを落とすみたいな挙動をする。
⇒つまり、想定するpodの2倍ぐらいを想定してクォータは設定したほうがいいです。

OpenShiftのアップグレード

3.5系から、3.10もしくは11系にするならば、新規で3.10、3.11を立てたほうが早いって言われたwww
Ansibleが用意されているけどね。
ちなみに3.10以降は手動アップグレードが無くなったみたい。

プローブを使用したアプリケーションの監視

いわばヘルスチェックってやつですよ。pod生きてるか~?って。

プローブ(ヘルスチェックするマン)には2種類ある。
・LivenessProbe
・ReadinessProbe
以下のサイトがわかりやすかったので投げますwすいませんw
https://cstoku.dev/posts/2018/k8sdojo-10/

ヘルスチェックの方法は3種類
・HTTPチェック
オーソドックスなやつ。
・コンテナ実行チェック
コンテナに入ってコマンド実行して生きているか確認する
・TCPヘルスチェック
コンテナに接続して生きているか確認する。

以上!!!最初にも書いたけど、すごい雑になりました。wあとでちゃんとまとめる(つもり)

OpenShiftって難しそうだなぁと思ってたけど、
出てくる登場人物1人1人がシンプルで仕事の責任範囲が明確でわかりやすかったです。

まぁでも本番で使うってなったら、いろいろと戸惑いそうだし
そもそもそれ、コンテナで立ててオーケストレーションする必要ある??っていうアレがつきまといますね。

銀の弾丸では無い!!!!ってやつですね。勉強していてますますそう思いました。

参考サイト

Kubernetes道場 10日目 – LivenessProbe / ReadinessProbeについて