Closed10
Kubernetes基礎知識
Kubernetesとは
- コンテナの運用を自動化するためのコンテナオーケストレーションシステム
- 操作のためのAPIやCLIツール(kubectl)を提供
- アプリケーションのデプロイなどの運用管理の自動化を実現
- Dockerホストの管理
- スケーリング
- ロードバランサー
- 死活監視
クラウドプラットフォームサービス
GCP | Azure | AWS |
---|---|---|
GKE | AKS | EKS |
Kubernetesの概念
リソース名 | 用途 | 備考 |
---|---|---|
クラスタ | 様々なリソースを管理する集合体 | |
Node | クラスタの管理下に登録されているDockerホスト。コンテナをデプロイするために利用。MasterとNode群によって構成 | GCPでいうGCE, AWSでいうEC2 |
Namespace | クラスタの中に入れ子となる仮想的なクラスタ | それぞれのNamespaceを用意して開発するなどして一定の規模のチームで有用 |
Pod | コンテナの集合体 | Podの粒度は悩みどころ。同時にデプロイが必要な粒度とか。 |
ReplicaSet | 同じ仕様のPodを複数生成管理 | |
Deployment | アプリケーションデプロイの単位 | ReplicaSetの世代管理ができる |
Service | サービスディスカバリを提供 | |
Ingress | Serviceをクラスタの外へ公開 |
参考
リソース作成にはkubectl createよりもkubectl applyを使う
- 作成時には「create」で更新時に「apply」と使い分けたくない
- 混在して使うと「apply」実行時に差分を検出しきれないことがある
マニフェストファイルの設計
一つのマニフェストファイルの中に複数のリソースを記述する
- 1つのマニフェストを適用するだけでサービスを公開できる
- 実行順序を厳密にしたい場合
- リソース間の結合度が強い場合
₋ 共通で利用する設定ファイルは別のマニフェストに切り出す
Nodeについて
ワーカーノードのこと
コンテナが動作する各マシンを管理している。
ワーカーノードには以下が存在しています。
- コンテナランタイム(Dockerなど)
- kubelet
- kube-proxy
Podについて
Pod = コンテナの集合体(1プロセス1コンテナ)
以下のものが含まれる
- コンテナ(コンテナに付随する情報)
- ネットワーキング(PodのIPアドレス)
- 共有ストレージ
共有ストレージ(Volume)を用意してコンテナ間でファイルの読み書きができる
Pod内のコンテナはIPアドレスとポートスペースを共有する
同じPod内のコンテナで同じポートを使うことができない
ReplicaSetについて
Podのレプリカを作成し、指定した数のPodを維持し続けるリソース
セルフヒーリング
ノードやPodに障害が発生した場合でも、Pod数が指定された数を満たすように別のノードでPodを起動してくれる
スケーリング
- マニフェストを書き換える
- 「kubectl scale」コマンド
Deploymentについて
複数のReplicaSetを管理
ローリングアップデートやロールバックなどの、デプロイの管理
Serviceについて
いくつかのtypeが存在する
- ClusterIP
- k8sクラスタ内からのみ疎通可能なIP
- NodePort
- k8sクラスタ外からも疎通可能なIP
- LoadBalancer
- 外から繋がる仮想IPを払い出すことができる仕組み
- Headless
- ExternalName
このスクラップは2021/03/26にクローズされました