随分間が空いてしまいましたが。(まとめるのを忘れていました)
20190803 Java & k8s on Azureまつり
午前中の部
-
コンテナは歴史がある
- Dockerよりもk8sになってきている。
-
microserviceは何のために?
- 競合他社に負けないために
- 受け入れられるものと受け入れられないもの
- 改善の繰り返し
- 影響の極小化
- カナリアリリース
Windows Server 2016 TP3からDockerが使える。
-
Dev/Ops
- コンテナを触るなら、両方の知識が必要
-
コンテナ
- 出来るだけ小さいイメージを作るように心がけるべき。
-
open-jdk
- Azul Systemsのzuluが使える。
-
dockerだけだと機能が足りない
- 冗長構成には不向き(複雑な構成になると表現が難しい)
-
dockerのセキュリティ
- 脆弱性
- officialのイメージを使う。
- Aqua Security/Twistlock
- 脆弱性がチェックできる模様
- 脆弱性
-
docker-composeは不要になるか?
- 複雑なシステム(サービスが複数あるようなものとか)だとdocker-composeだと面倒臭くなる。
- なので、簡単なものであればdocker-composeでも良いがk8sを押している。
- 複雑なシステム(サービスが複数あるようなものとか)だとdocker-composeだと面倒臭くなる。
-
本番運用時は動いている環境は考慮しなければいけないのか?
- しないといけない。
- コンテナが全てのリソースを食い潰さないように設計しないといけない。
- しないといけない。
-
なんでもかんでもコンテナに向いているわけではない
- スケールアウトするようなものには向いている。
- スケールアップが必要なものは向いていない。
- 所詮、間借りしているだけだから、直接触った方がよい。
-
Azureの場合
- Web App
- サービスが少ない場合はk8sよりもおすすめな模様。(ランニングコストが安いとのこと。)
- Container Instance
- Web Appは一度動かしたら動かしっぱなしで課金されてしまう。
- Container Instanceは動いている時だけ課金される違いがある。
- Web App
午後の部
-
k8sのインストール方法
- GUI
- azコマンド
- リソースグループのテンプレートを使う
-
k8s
- poはpodの略。
- コンテナを起動しているわけではない。
- なぜそうなっているかというと、依存関係が強いものをまとめられるようにしているとのこと。(パフォーマンス重視とのこと)
- 落ちたらIPが変わる。
- yamlファイルのlabels属性でフィルタリングできる?
- podの操作ができる。
- p.52のapplyは-fが必要
- p.58で実行するのは12-Ingress.yaml
-
コンテナの注意点
- latestタグは使わない。
- タグにはbuild-idをつける。
- 小さいイメージの作成を心がける。
- openjdkでもalpineのやつが一番軽い。
- ユーザーのパーミッションを設定する。
- DockerHubのイメージはむやみに信じない。
- 使う場合はセキュリティを確認して!
- cacheが効くような書き方でdockerfileを作る。
-
k8s
- ReplicationConroller -> Replica Set -> Deployment
- リソース使用量:きちんと指定する。(設定しないと全部使い切っちゃう)
- kubectl top pod で見れる。
- Selector/Labelの理解が重要
- 安全に切り替えができる
- ServiceにLBを使わない
- 外部に公開するのは基本的にIngress
- 困った時は
- describe, log, exec, get events
- 情報は英語を見ましょう。
- 本番環境に適用するならなおさら。(お試しなら日本語の情報を参考にしてもいいけど。)
- 全てのk8sの機能を利用する必要はない
- 変化が早い
- 複雑な構成を作らない。
- 運用構成を変えればできるようなものは無理してk8sでやらない。
- k8sはポータビリティがある?
- ある点とない点がある。
- LBもPVも実装依存
- どのバージョンを利用しているか?
- バージョン毎の差異が大きい(設定など)
- 大規模k8sクラスタを構成しない(ノードを多く作らない)
- 多くても20〜30ノードに留めておくのがよい(再構築の際に時間がかかる)
- k8sのバージョンアップは新規クラスタ構築が推奨とのこと。
- PVは極力使わない。
- DBはマネージドサービスを使うのがよい。
- PVとの絡みがあるから?