0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Kubernetes基礎メモ - 基本概念とアーキテクチャの整理

Last updated at Posted at 2025-10-12

はじめに

Kubernetesを触り始めたばかりの頃、「Pod」「Service」「Deployment」など、たくさんの概念があって混乱しました...。今回は、そんな基本概念を整理して、実際の運用で必要な知識をまとめてみました。

Kubernetesとは

Kubernetes(K8s)は、コンテナオーケストレーションツールです。複数のコンテナを効率的に管理・運用するためのプラットフォームを提供します。

主な機能

  • 自動スケーリング: 負荷に応じてPod数を自動調整
  • 自己修復: 障害が発生したPodを自動的に再起動
  • ロードバランシング: トラフィックを複数のPodに分散
  • 設定管理: 設定情報の一元管理
  • ストレージ管理: 永続化ストレージの管理

Kubernetesアーキテクチャ概要

基本概念

1. Pod

Podは、Kubernetesの最小デプロイメント単位です。1つ以上のコンテナを含むことができます。

特徴:

  • 同じPod内のコンテナは同じIPアドレスを共有
  • 同じノード上で実行される
  • 一時的な存在(再起動時にIPが変わる)

2. Service

Serviceは、Podへの安定したアクセスを提供します。PodのIPアドレスが変動しても、Serviceを通じてアクセスできます。

Service Types:

  • ClusterIP: クラスター内部からのアクセス
  • NodePort: ノードの特定ポート経由でのアクセス
  • LoadBalancer: クラウドプロバイダーのロードバランサーを使用

3. Deployment

Deploymentは、Podの管理と更新を担当します。レプリカ数の管理やローリングアップデートを自動化します。

機能:

  • レプリカ数の管理
  • ローリングアップデート
  • ロールバック機能
  • ヘルスチェック

主要リソースの関係図

よく使うコマンド

基本操作

# クラスター情報の確認
kubectl cluster-info

# ノード一覧
kubectl get nodes

# Pod一覧
kubectl get pods

# 全リソース一覧
kubectl get all

デプロイメント操作

# デプロイメント作成
kubectl create deployment nginx --image=nginx

# デプロイメント一覧
kubectl get deployments

# デプロイメント詳細
kubectl describe deployment nginx

# スケールアウト
kubectl scale deployment nginx --replicas=3

サービス操作

# サービス作成
kubectl expose deployment nginx --port=80 --type=NodePort

# サービス一覧
kubectl get services

# サービス詳細
kubectl describe service nginx

実践的な例

簡単なWebアプリケーションのデプロイ

# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web-app
  template:
    metadata:
      labels:
        app: web-app
    spec:
      containers:
      - name: web-app
        image: nginx:latest
        ports:
        - containerPort: 80
# service.yaml
apiVersion: v1
kind: Service
metadata:
  name: web-app-service
spec:
  selector:
    app: web-app
  ports:
  - port: 80
    targetPort: 80
  type: LoadBalancer

デプロイ手順

# デプロイメント作成
kubectl apply -f deployment.yaml

# サービス作成
kubectl apply -f service.yaml

# 状態確認
kubectl get pods
kubectl get services

トラブルシューティング

よくある問題と解決方法

Podが起動しない場合:

# Podの詳細確認
kubectl describe pod <pod-name>

# ログ確認
kubectl logs <pod-name>

# イベント確認
kubectl get events

Serviceにアクセスできない場合:

# Serviceの詳細確認
kubectl describe service <service-name>

# Endpoint確認
kubectl get endpoints

# Podのラベル確認
kubectl get pods --show-labels

まとめ

Kubernetesの基本概念を整理してみました。最初は複雑に感じますが、以下の順序で理解していくと良いと思います。

  1. Pod: 最小単位の理解
  2. Service: アクセス方法の理解
  3. Deployment: 管理方法の理解
  4. その他のリソース: 必要に応じて学習

実際の運用では、まずは基本的なDeploymentとServiceから始めて、徐々に他のリソースを活用していくのが現実的でしょうか。

次回以降で、引き続き整理を進めつつ、Kubernetes運用で困ったことや、良いTipsを共有していきます。

参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?