Ubuntu 22.04でK3s Kubernetesクラスターをセットアップする方法
導入
Kubernetesは、コンテナオーケストレーションにおいて業界で最も人気のあるツールの1つです。しかし、Kubernetesクラスターをゼロから構築するのは非常に困難で、多くの設定が必要になります。さらに、Kubernetesクラスターの構築方法はいくつかありますが、本番環境用のクラスターを構築するのでなければ、その多くは時間のかかるものになりがちです。.
Kubernetes クラスターのセットアップを簡素化し、リソースが限られた遠隔地への導入を可能にすることで、エッジコンピューティングに最適な環境を実現するため、Rancher Labs は K3s を開発しました。K3s は軽量な Kubernetes ディストリビューションで、小さなバイナリを使用して数分で Kubernetes クラスターをインストールできます。.
このチュートリアルでは、Ubuntu に K3s をインストールする方法と、K3s で利用できる追加の構成オプションについて学習します。.
前提条件
このチュートリアルを完了するには、次のものが必要です。
Ubuntu 22.04 初期サーバー セットアップ ガイドに従って、少なくとも 1 GB の RAM を搭載した Ubuntu 22.04 サーバーがセットアップされました。.
ステップ1 - K3sをインストールする
この手順では、Ubuntu マシンに K3s の最新バージョンをインストールします。.
パスワードベースのログインを使用している場合は、次のコマンドを使用して、sudo ユーザー (このチュートリアルでは sammy) としてサーバーにログインします。
$ ssh sammy@your_server_ipسپس با استفاده از دستور زیر K3 را نصب کنید.
$ curl -sfL https://get.k3s.io | sh -スクリプトを実行するには、ユーザー パスワードの入力を求められます。.
このコマンドは、curl を使用して https://get.k3s.io にあるスクリプトをダウンロードし、--sh にパイプしてスクリプトを実行します。スクリプトを実行すると、K3s クラスターのインストールが開始され、単一ノードの Kubernetes クラスターを作成するためのデフォルト設定オプションが設定されます。.
次のような出力が得られます。
[secondary_label Output]
[INFO] Finding release for channel stable
[INFO] Using v1.27.7+k3s2 as release
[INFO] Downloading hash https://github.com/k3s-io/k3s/releases/download/v1.27.7+k3s2/sha256sum-amd64.txt
[INFO] Downloading binary https://github.com/k3s-io/k3s/releases/download/v1.27.7+k3s2/k3s
[INFO] Verifying binary download
[INFO] Installing k3s to /usr/local/bin/k3s
[INFO] Skipping installation of SELinux RPM
[INFO] Creating /usr/local/bin/kubectl symlink to k3s
[INFO] Creating /usr/local/bin/crictl symlink to k3s
[INFO] Creating /usr/local/bin/ctr symlink to k3s
[INFO] Creating killall script /usr/local/bin/k3s-killall.sh
[INFO] Creating uninstall script /usr/local/bin/k3s-uninstall.sh
[INFO] env: Creating environment file /etc/systemd/system/k3s.service.env
[INFO] systemd: Creating service file /etc/systemd/system/k3s.service
[INFO] systemd: Enabling k3s unit
Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.
[INFO] systemd: Starting k3s
...スクリプトの出力には、インストールスクリプトがクラスターをインストールして起動するまでの手順が表示されます。次に、systemctlコマンドを使用してK3sサービスのステータスを確認し、実行中かどうかを確認します。.
$ systemctl status k3sこのコマンドは、ステータスをアクティブ (実行中) として表示します。
[secondary_label Output]
● k3s.service - Lightweight Kubernetes
Loaded: loaded (/etc/systemd/system/k3s.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-11-27 16:52:01 UTC; 19s ago
Docs: https://k3s.io
Process: 8396 ExecStartPre=/bin/sh -xc ! /usr/bin/systemctl is-enabled --quiet nm-cloud-setup.service (code=exi>
Process: 8398 ExecStartPre=/sbin/modprobe br_netfilter (code=exited, status=0/SUCCESS)
Process: 8399 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS)
Main PID: 8400 (k3s-server)
Tasks: 20
Memory: 467.3M
CPU: 12.952s
CGroup: /system.slice/k3s.service
├─8400 "/usr/local/bin/k3s server"
└─8421 "containerd " "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" >
...ここまでで、Ubuntu に K3s をインストールし、単一ノードの Kubernetes クラスターを作成しました。次に、クラスターにデプロイされているデフォルトの Kubernetes オブジェクトを確認します。.
ステップ2 – Kubernetesのデフォルトオブジェクトを確認する
このステップでは、K3s のインストール後にデプロイされたデフォルトの Kubernetes オブジェクトを確認します。.
kube 名前空間のクラスターにデプロイされているすべての Kubernetes オブジェクトを表示するには、次のコマンドを実行します。kubectl は K3s のインストール中に自動的にインストールされるため、別途インストールする必要はありません。.
$ sudo kubectl get all -n kube-system次のような出力が得られます。
[secondary_label Output]
NAME READY STATUS RESTARTS AGE
pod/local-path-provisioner-957fdf8bc-t8vpx 1/1 Running 0 4m34s
pod/coredns-77ccd57875-4hrd9 1/1 Running 0 4m34s
pod/helm-install-traefik-crd-j2sqs 0/1 Completed 0 4m34s
pod/helm-install-traefik-mvxhw 0/1 Completed 1 4m34s
pod/metrics-server-648b5df564-gqxcz 1/1 Running 0 4m34s
pod/svclb-traefik-18597fcd-2cf68 2/2 Running 0 4m6s
pod/traefik-768bdcdcdd-srb8d 1/1 Running 0 4m7s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kube-dns ClusterIP 10.43.0.10 <none> 53/UDP,53/TCP,9153/TCP 4m44s
service/metrics-server ClusterIP 10.43.69.115 <none> 443/TCP 4m43s
service/traefik LoadBalancer 10.43.149.125 159.65.159.115 80:32266/TCP,443:32628/TCP 4m7s
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/svclb-traefik-18597fcd 1 1 1 1 1 <none> 4m7s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/local-path-provisioner 1/1 1 1 4m44s
deployment.apps/coredns 1/1 1 1 4m44s
deployment.apps/metrics-server 1/1 1 1 4m44s
deployment.apps/traefik 1/1 1 1 4m7s
NAME DESIRED CURRENT READY AGE
replicaset.apps/local-path-provisioner-957fdf8bc 1 1 1 4m34s
replicaset.apps/coredns-77ccd57875 1 1 1 4m34s
replicaset.apps/metrics-server-648b5df564 1 1 1 4m34s
replicaset.apps/traefik-768bdcdcdd 1 1 1 4m7s
NAME COMPLETIONS DURATION AGE
job.batch/helm-install-traefik-crd 1/1 28s 4m41s
job.batch/helm-install-traefik 1/1 31s 4m41s
... 上記の出力は、Kubernetes クラスターにデプロイされたさまざまなオブジェクトを示しています。例えば、coredns、local-path-provisioner、metrics-server、traefik のそれぞれに 1 つずつ、合計 4 つのデプロイメントが実行されています。.
sudo を使用せずにコマンドを実行すると、次のエラーが発生する可能性があります。.
Output
WARN[0000] Unable to read /etc/rancher/k3s/k3s.yaml, please start server with --write-kubeconfig-mode to modify kube config permissions
error: error loading config file "/etc/rancher/k3s/k3s.yaml": open /etc/rancher/k3s/k3s.yaml: permission denied
...kubectl コマンドを実行するときに sudo を必要としないようにするには、以下に示すように、chmod を使用して構成ファイルの権限を変更します。.
$ sudo chmod 644 /etc/rancher/k3s/k3s.yamlここまでで、K3s クラスターにデフォルトでデプロイされた Kubernetes オブジェクトのステータスを確認できました。次に、インストール時に K3s の設定オプションを理解し、変更する方法を学びます。.
ステップ3 – K3Sの設定オプションを理解して変更する
K3sはデフォルト設定でインストールしましたが、設定を調整することでクラスター固有の動作をカスタマイズできます。このステップでは、K3の環境変数を使用してインストールスクリプトで設定を行う方法を学習します。.
たとえば、traefik イングレス コントローラーのインストールにはデフォルト設定が付属していますが、場合によっては、インストール中にイングレス コントローラーを無効にする必要があります。.
環境変数 INSTALL_K3S_EXEC は、K3s サービスにフラグを渡すために使用できます。以下のコマンドは、K3 インストール中に traefik を無効にするために使用できます。.
$ curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--disable=traefik" sh -Kubernetesオブジェクトを確認して検証してください。今回はコントローラーリソースは存在しません。.
$ sudo kubectl get all -n kube-system環境変数を使って設定オプションを変更するだけでなく、K3s設定ファイルでも変更可能です。必要なオプションを設定ファイルに指定し、K3sサーバーを再起動することで変更が有効になります。.
K3s は、etc/rancher/k3s/config.yaml/ にある構成ファイルを使用します。.
次のコマンドを実行して、構成ファイルを作成して書き込みます。.
$ sudo nano /etc/rancher/k3s/config.yaml設定ファイルに次の内容を記述します。.
$ disable: traefikCtrl+Xを押して書き込み、ファイルを終了します。disabled 行の traefik は、K3s サービスに traefik インストールに関連付けられたリソースを削除するよう指示します。.
次に、次のコマンドを使用して K3s サービスを再起動し、変更を適用します。.
$ sudo systemctl restart k3sこれで、kube システム名前空間内のすべての Kubernetes オブジェクトを一覧表示して確認できます。この時点では、traefik インストールに関連付けられたリソースは存在しないはずです。.
$ sudo kubectl get all -n kube-systemこのステップでは、インストール中およびインストール後にK3sの構成を変更する方法を学習しました。次に、K3sクラスターを削除して仮想マシンをクリーンアップします。.
ステップ4 – K3sをアンインストールする
K3Sをアンインストールするには、「usr/local/bin/k3s-uninstall.sh/」というシェルスクリプトを実行する必要があります。このスクリプトはK3sのインストール後に自動的に生成され、完全なクリーンアップに使用できます。アンインストール中に、K3sのインストール時に作成またはインストールされたK3s設定およびクラスタツールはすべて削除されます。.
K3 を削除するには、次のコマンドを実行します。
$ /usr/local/bin/k3s-uninstall.sh次のコマンドを使用して K3s サービスのステータスを確認し、アンインストールを確認します。
$ systemctl status k3s次のような出力が得られます。
[secondary_label Output]
Unit k3s.service could not be found.結果
この記事では、Ubuntu に K3s クラスターをインストールし、K3s で利用可能な設定オプションとその使用方法について理解しました。Kubernetes クラスターのセットアップが完了したら、Kubernetes のさまざまな種類のオブジェクトとその機能について確認してみましょう。.









