【Docker】Kubernetes入門・実践ガイド - j-komatsu/myCheatSheet GitHub Wiki
Kubernetes入門・実践ガイド
1. Kubernetesとは?
Kubernetes(K8s)は、コンテナ化されたアプリケーションを自動的にデプロイ、スケール、運用するためのオープンソースのプラットフォームです。
🎯 Kubernetesの主な特徴
特徴 | 説明 |
---|---|
自動スケーリング | 負荷に応じて自動的にスケール |
自己修復機能 | コンテナがクラッシュしても自動で復旧 |
ローリングアップデート | ダウンタイムなしでアプリを更新 |
サービスディスカバリ | ネットワークの構成なしで通信可能 |
ストレージ管理 | 各種ストレージ(NFS, Ceph, AWS S3等)と統合 |
graph LR;
A[Kubernetes] -->|マニフェスト適用| B[コンテナ管理];
B -->|スケール管理| C[負荷分散];
B -->|障害対応| D[自己修復];
B -->|自動更新| E[ローリングアップデート];
2. 基本コンポーネント
Kubernetesの主なコンポーネントは以下の通りです。
コンポーネント | 説明 |
---|---|
Pod | 1つ以上のコンテナをまとめた最小単位 |
Node | Kubernetesクラスタを構成するマシン(VM/物理) |
Cluster | 全体のコンテナオーケストレーションの単位 |
Service | Pod間の通信を管理する抽象化レイヤー |
Deployment | アプリのデプロイ戦略(ローリングアップデート等) |
Container | 実際のアプリケーションが動作する環境(例: Docker) |
graph TD;
A[Kubernetes Cluster] --> B[Node];
B --> C[Pod];
C --> D[コンテナ];
🎯 KubernetesとDockerの関係
項目 | Kubernetes | Docker |
---|---|---|
役割 | コンテナオーケストレーション | コンテナ実行環境 |
管理対象 | Pod(複数コンテナをまとめる) | 個々のコンテナ |
スケーリング | 自動スケーリング可能 | 手動スケーリングが必要 |
ネットワーク | Serviceを介して通信 | Docker Composeなどを利用 |
3. 各クラウドプロバイダでのKubernetes利用
3.1 AWS - Amazon EKS
- 概要: AWSが提供するフルマネージドKubernetesサービス。
- 利用方法:
aws eks --region ap-northeast-1 create-cluster --name my-cluster
- 特徴:
- IAM統合でセキュリティ管理が容易
- Fargateを利用可能(サーバレス)
3.2 GCP - Google Kubernetes Engine (GKE)
- 概要: Googleが提供するフルマネージドKubernetes。
- 利用方法:
gcloud container clusters create my-cluster --zone=asia-northeast1-a
- 特徴:
- Google Cloud Load Balancerと統合
- AutoPilotモードあり(管理負担が少ない)
3.3 Azure - Azure Kubernetes Service (AKS)
- 概要: MicrosoftのフルマネージドKubernetes。
- 利用方法:
az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 3
- 特徴:
- Azure ADと統合しセキュアな認証
- Windowsコンテナ対応
4. Kubernetesを使ったアプリケーションデプロイ
4.1 デプロイの基本(YAMLマニフェスト)
以下はNginxをKubernetes上にデプロイする基本的なマニフェストです。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
# デプロイ適用
kubectl apply -f nginx-deployment.yaml
5. 専門者向けトピック
5.1 Helmを使ったデプロイの自動化
Helmは、Kubernetesのパッケージマネージャーです。
# Helmインストール
helm install my-release bitnami/nginx
5.2 KubernetesとCI/CDの連携
KubernetesをGitHub Actionsと連携する設定例:
name: Deploy to Kubernetes
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up kubectl
uses: azure/setup-kubectl@v1
- name: Deploy to Kubernetes
run: |
kubectl apply -f deployment.yaml
6. まとめ
- Kubernetesはコンテナ管理を自動化する強力なツール
- Dockerはコンテナを実行する技術であり、Kubernetesと組み合わせて利用される
- AWS/GCP/Azureでの利用方法を理解
- 実際のデプロイにはYAMLマニフェストを活用
- CI/CDを組み合わせると効率的な運用が可能
これで、基本から専門的な内容まで幅広くカバーしました。