Kubernetes(くーばねてぃす)
k8s
ずっとくーばねいつって呼んでた
このページは公式と入門 Kubernetesから理解したものを自分の言葉で書いてる
概要
複数hostを束ねてDockerを利用するためのツール
Google製
分散アプリケーションを作成、デプロイ、管理するためのプラットフォーム
用語
ノード:Dockerがインストールさてるサーバ
Pod:コンテナのグループ、これ単位でデプロイ可能
Service:(マイクロサービスなど)サービス間の分離のためにLBやネーミング、ディスカバリ機能を提供する
Namespace:サービス同士の連携範囲を制御する。分離とアクセス制御。これを使って1人1環境とか作れる
Ingress:複数のサービスをまとめつつ、単一の外部からアクセス可能なAPIを提供可。GCPのグローバルロードバランサをイメージするとわかりやすいかも。
クラスタ構築
参考:https://blog.sky-net.pw/article/84
モジュールインストール
https://kubernetes.io/docs/setup/independent/install-kubeadm/#master-nodes
初期化
sudo kubeadm init
Dockerが最新だと、kubernetesのサポートより進んでるぞ!って警告が出る。
etcdが立ち上がってるとエラーになる。(むしろ自分で入れる必要なかった)
スワップ領域があるとエラーになる。(swapoff -aやる)
何やってるか判るなら以下のコマンド打って無視することも可能
sudo kubeadm init --ignore-preflight-errors {string}
--ignore-preflight-errors:A list of checks whose errors will be shown as warnings. Example: 'IsPrivilegedUser,Swap'. Value 'all' ignores errors from all checks.
プレイブック作った:https://github.com/sh-ogawa/k8s-example
1回目kuberesetすることによって、joinコマンド取る行ずれる・・・
もう1回やると全部成功する
resetコマンド別にする・・・
使う理由
異なるサービスでもコンテナに閉じ込めることで1つの物理に安全に共存させられる
開発環境として1エンジニアに1環境渡すとか
ハードウェアリソースがスカスカなサービスを1つの物理にまとめてコストダウンさせるとか
Kubernetesでレイヤー分割することで、OSはOSを見る人、KubernetesはKubernetesを見る人、アプリはアプリを見る人がそれぞれの債務範囲で頑張れる
メリット
クラスタ内の状態をあるべき姿に自動でしてくれる
3つのコンテナを動かしたい場合、4つ目を動かすと1つ破棄する
逆に1つ破棄すると3つになるように1つ起動してくれるとか
デメリット
まだ判らん。最新のDocker使ったらいけないって部分で自前で構築するのはつらそうってのはある。
上手く使う方法
Podをうまく活用するためのデザインとして、1コンテナ1アプリにしておく
起動方法
code:console
sudo kubectl apply -f pod.yaml
Podマニフェストを書いて、それを登録すると動く