5.2 Kubernetes基礎

Kubernetes Fundamentals

Kubernetes(K8s)は、Googleが開発しCNCFに寄贈したコンテナオーケストレーションプラットフォームである。宣言的な設定でコンテナのデプロイ、スケーリング、管理を自動化する。

Kubernetesアーキテクチャ

K8sアーキテクチャ

図1: Kubernetesクラスタのアーキテクチャ

コンポーネント 役割
API Server クラスタへの全リクエストを処理
etcd クラスタ状態を保存する分散KVS
Scheduler Podを適切なノードに配置
Controller Manager 望ましい状態を維持
kubelet ノード上でPodを管理
kube-proxy ネットワークルールを管理

主要リソース

K8sリソース階層

図2: Kubernetesの主要リソース

Kubernetesは「望ましい状態」をYAMLファイルで宣言し、コントローラが現在の状態を望ましい状態に近づけるように動作する。この宣言的アプローチがKubernetesの特徴である [1]。

Serviceタイプ

タイプ アクセス範囲 用途
ClusterIP クラスタ内部のみ 内部通信(デフォルト)
NodePort ノードIP:ポート 開発/テスト
LoadBalancer 外部ロードバランサ 本番公開
ExternalName 外部DNS名 外部サービス参照
マネージドK8sでのLoadBalancer
クラウド環境でtype: LoadBalancerを指定すると、各クラウドのロードバランサ(AWS ALB/NLB、Azure LB、GCP LB)が自動的にプロビジョニングされる。
出典
[1] Kubernetes Documentation. https://kubernetes.io/docs/
[2] CNCF (Cloud Native Computing Foundation). https://www.cncf.io/