Closed10

Kubernetes基礎知識

kitoketakitoketa

Kubernetesとは

  • コンテナの運用を自動化するためのコンテナオーケストレーションシステム
  • 操作のためのAPIやCLIツール(kubectl)を提供
  • アプリケーションのデプロイなどの運用管理の自動化を実現
  • Dockerホストの管理
  • スケーリング
  • ロードバランサー
  • 死活監視

クラウドプラットフォームサービス

GCP Azure AWS
GKE AKS EKS
kitoketakitoketa

Kubernetesの概念

リソース名 用途 備考
クラスタ 様々なリソースを管理する集合体
Node クラスタの管理下に登録されているDockerホスト。コンテナをデプロイするために利用。MasterとNode群によって構成 GCPでいうGCE, AWSでいうEC2
Namespace クラスタの中に入れ子となる仮想的なクラスタ それぞれのNamespaceを用意して開発するなどして一定の規模のチームで有用
Pod コンテナの集合体 Podの粒度は悩みどころ。同時にデプロイが必要な粒度とか。
ReplicaSet 同じ仕様のPodを複数生成管理
Deployment アプリケーションデプロイの単位 ReplicaSetの世代管理ができる
Service サービスディスカバリを提供
Ingress Serviceをクラスタの外へ公開
kitoketakitoketa

リソース作成にはkubectl createよりもkubectl applyを使う

  • 作成時には「create」で更新時に「apply」と使い分けたくない
  • 混在して使うと「apply」実行時に差分を検出しきれないことがある
kitoketakitoketa

マニフェストファイルの設計

一つのマニフェストファイルの中に複数のリソースを記述する

  • 1つのマニフェストを適用するだけでサービスを公開できる
  • 実行順序を厳密にしたい場合
  • リソース間の結合度が強い場合
    ₋ 共通で利用する設定ファイルは別のマニフェストに切り出す
kitoketakitoketa

Nodeについて

ワーカーノードのこと
コンテナが動作する各マシンを管理している。

ワーカーノードには以下が存在しています。

  • コンテナランタイム(Dockerなど)
  • kubelet
  • kube-proxy
kitoketakitoketa

Podについて

Pod = コンテナの集合体(1プロセス1コンテナ)

以下のものが含まれる

  • コンテナ(コンテナに付随する情報)
  • ネットワーキング(PodのIPアドレス)
  • 共有ストレージ

共有ストレージ(Volume)を用意してコンテナ間でファイルの読み書きができる

Pod内のコンテナはIPアドレスとポートスペースを共有する

同じPod内のコンテナで同じポートを使うことができない

kitoketakitoketa

ReplicaSetについて

Podのレプリカを作成し、指定した数のPodを維持し続けるリソース

セルフヒーリング

ノードやPodに障害が発生した場合でも、Pod数が指定された数を満たすように別のノードでPodを起動してくれる

スケーリング

  • マニフェストを書き換える
  • 「kubectl scale」コマンド
kitoketakitoketa

Deploymentについて

複数のReplicaSetを管理
ローリングアップデートやロールバックなどの、デプロイの管理

kitoketakitoketa

Serviceについて

いくつかのtypeが存在する

  • ClusterIP
    • k8sクラスタ内からのみ疎通可能なIP
  • NodePort
    • k8sクラスタ外からも疎通可能なIP
  • LoadBalancer
    • 外から繋がる仮想IPを払い出すことができる仕組み
  • Headless
  • ExternalName
このスクラップは2021/03/26にクローズされました