株式会社エスロジカル
株式会社エスロジカル
SSL証明書(DV、OV、EV)、セキュリティ、Web開発、Linux開発、Go言語

HOME > 技術ドキュメント > Kubernetes 入門(k3s / Ubuntu 24.04 LTS)

Kubernetes 入門(k3s / Ubuntu 24.04 LTS)


Kubernetes はコンテナのオーケストレーションシステムです。複数のコンテナを自動デプロイ・スケール・自己修復する仕組みを提供します。
本記事では k3s(軽量 Kubernetes)を使って Ubuntu 24.04 LTS に Kubernetes 環境を構築し、 基本的なリソース操作を解説します。Docker の基礎知識があることを前提としています。


k3s は Rancher Labs が開発した軽量 Kubernetes です。シングルバイナリで動作し、 通常の Kubernetes と比べてインストールが大幅に簡単です。

項目 k3s kubeadm(フル)
インストール 1コマンド(curl スクリプト) 複数手順が必要
メモリ使用量 512MB 程度〜 2GB 以上推奨
バイナリサイズ 約 50MB 多数のバイナリが必要
Kubernetes 互換性 完全互換(kubectl そのまま使える) 完全対応
用途 開発・エッジ・小規模本番 大規模本番環境

# 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

リソース 説明
Pod Kubernetes の最小デプロイ単位。1つ以上のコンテナを含む
Deployment Pod の宣言的管理。レプリカ数・ローリングアップデートを管理
Service Pod への安定したネットワークアクセスを提供
Ingress HTTP/HTTPS ルーティング。TLS 終端もここで行う
ConfigMap 設定情報をコンテナに渡す仕組み
Secret パスワード・証明書などの秘密情報を管理

# 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

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

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

コマンド 説明
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 レプリカ数を変更

# 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 リソースで HTTPS を有効化するには、TLS Secret(SSL証明書と秘密鍵)が必要です。 cert-manager と Let's Encrypt の組み合わせが一般的ですが、 企業サイトや EC サイトでは OV/EV 証明書を使うことで組織の実在性を証明できます。
エスロジカルではデジサート・サイバートラストの正規取扱代理店として、 2009年から16年以上、RapidSSL 3,960円/1年(税込)〜でSSL証明書を販売しています。審査サポート・インストール代行も対応しています。

SSL証明書の購入はこちら / SSL証明書とは? / インストール代行サービス


← 技術ドキュメント一覧へ戻る