HOME > 技術ドキュメント > Kubernetes 入門(k3s / Ubuntu 24.04 LTS)
Kubernetes 入門(k3s / Ubuntu 24.04 LTS)
Kubernetes はコンテナのオーケストレーションシステムです。複数のコンテナを自動デプロイ・スケール・自己修復する仕組みを提供します。
本記事では k3s(軽量 Kubernetes)を使って Ubuntu 24.04 LTS に Kubernetes 環境を構築し、
基本的なリソース操作を解説します。Docker の基礎知識があることを前提としています。
1. k3s とは
k3s は Rancher Labs が開発した軽量 Kubernetes です。シングルバイナリで動作し、 通常の Kubernetes と比べてインストールが大幅に簡単です。
| 項目 | k3s | kubeadm(フル) |
|---|---|---|
| インストール | 1コマンド(curl スクリプト) | 複数手順が必要 |
| メモリ使用量 | 512MB 程度〜 | 2GB 以上推奨 |
| バイナリサイズ | 約 50MB | 多数のバイナリが必要 |
| Kubernetes 互換性 | 完全互換(kubectl そのまま使える) | 完全対応 |
| 用途 | 開発・エッジ・小規模本番 | 大規模本番環境 |
2. k3s のインストール
# k3s インストール(シングルノード) curl -sfL https://get.k3s.io | sh - # インストール後、サービス状態を確認 sudo systemctl status k3s # ノードの確認(Ready になるまで待つ) sudo kubectl get nodes
kubectl コマンドには root 権限が必要です。一般ユーザーで使うには以下を設定します:
# kubeconfig を一般ユーザーで使えるようにする mkdir -p ~/.kube sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config sudo chown $USER:$USER ~/.kube/config chmod 600 ~/.kube/config # 動作確認 kubectl get nodes # NAME STATUS ROLES AGE VERSION # myserver Ready control-plane,master 1m v1.29.x+k3s1
3. 基本概念
| リソース | 説明 |
|---|---|
| Pod | Kubernetes の最小デプロイ単位。1つ以上のコンテナを含む |
| Deployment | Pod の宣言的管理。レプリカ数・ローリングアップデートを管理 |
| Service | Pod への安定したネットワークアクセスを提供 |
| Ingress | HTTP/HTTPS ルーティング。TLS 終端もここで行う |
| ConfigMap | 設定情報をコンテナに渡す仕組み |
| Secret | パスワード・証明書などの秘密情報を管理 |
4. Pod マニフェストと Deployment
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.26-alpine
ports:
- containerPort: 80
# マニフェストを適用 kubectl apply -f deployment.yaml # Pod の確認 kubectl get pods kubectl get pods -o wide # Deployment の確認 kubectl get deployments
5. Service の種類と作成
| Service 種類 | 説明 |
|---|---|
| ClusterIP | クラスター内部からのみアクセス可能(デフォルト) |
| NodePort | ノードの IP:ポートでクラスター外からアクセス可能(30000〜32767) |
| LoadBalancer | クラウドのロードバランサーを自動プロビジョニング |
# service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort
selector:
app: nginx
ports:
- port: 80
targetPort: 80
nodePort: 30080
kubectl apply -f service.yaml kubectl get services # NodePort でアクセス確認 curl http://localhost:30080
6. Ingress と TLS 設定
k3s には Traefik Ingress Controller が標準搭載されています。 TLS を有効にするには SSL証明書を Secret として登録し、Ingress から参照します。
# TLS Secret を作成(証明書と秘密鍵から)
kubectl create secret tls nginx-tls \
--cert=/path/to/fullchain.pem \
--key=/path/to/privkey.pem
# ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ingress
spec:
tls:
- hosts:
- example.com
secretName: nginx-tls
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-service
port:
number: 80
kubectl apply -f ingress.yaml kubectl get ingress
7. 主要 kubectl コマンド一覧
| コマンド | 説明 |
|---|---|
| kubectl apply -f file.yaml | マニフェストを適用(作成・更新) |
| kubectl get pods / services / deployments | リソース一覧を表示 |
| kubectl describe pod <name> | Pod の詳細情報とイベントを表示 |
| kubectl logs <pod-name> -f | Pod のログをリアルタイム表示 |
| kubectl exec -it <pod-name> -- sh | Pod 内でシェルを起動 |
| kubectl delete -f file.yaml | マニフェストで定義したリソースを削除 |
| kubectl rollout status deployment/<name> | ローリングアップデートの進捗確認 |
| kubectl scale deployment <name> --replicas=5 | レプリカ数を変更 |
8. k3s のアンインストール
# k3s サーバーのアンインストール sudo /usr/local/bin/k3s-uninstall.sh
関連ドキュメント
Docker 入門(Ubuntu 24.04 LTS) — Docker Engine インストール、Dockerfile 基礎
Docker Compose 実践(Nginx + PHP-FPM + MySQL) — 複数コンテナ構成
Nginx SSL/TLS 設定(Ubuntu 24.04 LTS) — HTTPS 設定と TLS 1.2/1.3
Kubernetes Ingress の TLS には SSL証明書が必要
Kubernetes の Ingress リソースで HTTPS を有効化するには、TLS Secret(SSL証明書と秘密鍵)が必要です。
cert-manager と Let's Encrypt の組み合わせが一般的ですが、
企業サイトや EC サイトでは OV/EV 証明書を使うことで組織の実在性を証明できます。
エスロジカルではデジサート・サイバートラストの正規取扱代理店として、
2009年から16年以上、RapidSSL 3,960円/1年(税込)〜でSSL証明書を販売しています。審査サポート・インストール代行も対応しています。
SSL証明書の購入はこちら / SSL証明書とは? / インストール代行サービス
