スーパーチュートリアル!Raspberry PiでマルチノードK8Sクラスターを構築してください!

長い間、私はRaspberryPi上にKubernetesクラスターを構築することに非常に興味を持っていました。インターネットでいくつかのチュートリアルを見つけて実際の操作を行った後、Raspberry PiにKubernetesをインストールし、3つのPiクラスターで作業することができました。ただし、マスターノードのRAMとCPUの要件は、Raspberry Piが提供できる要件を超えているため、Kubernetesタスクを実行するときのパフォーマンスは優れていません。これにより、Kubernetesを適切にアップグレードすることも不可能になります。

そのため、業界で最も広く使用されているKubernetes管理プラットフォームの作成者であるRancher Labsが軽量のKubernetesリリースK3をリリースしたのを見て、私は非常に興奮しました。リソースに制約のあるシナリオ向けに設計され、ARMプロセッサ向けに最適化されています。これにより、RaspberryPiでKubernetesを実行することがより実現可能になります。この記事では、K3とRaspberryPiを使用してKubernetesクラスターを作成します。

準備

この記事でKubernetesクラスターを作成するには、以下を準備する必要があります。

  • 少なくとも1つのRaspberryPi(SDカードと電源アダプター付き)

  • イーサネットケーブル

  • すべてのRaspberryPiを相互に接続するスイッチまたはルーター

インターネットからK3をインストールするので、ルーター経由でインターネットにアクセスする必要があります。

クラスターアーキテクチャ

このクラスターでは、3つのRaspberryPiを使用します。最初のRaspberryPiでは、kmasterという名前を付け、静的IP 192.168.0.50を割り当てました(ローカルネットワークが192.168.0.0/24であるため)。最初のワーカーノード(つまり、2番目のPi)は、knode1と呼ばれ、IP192.168.0.51を割り当てます。最後のワーカーノード。これをknode2と呼び、IP192.168.0.52を割り当てます。

もちろん、ネットワークが私のものと異なる場合は、ネットワークIPを取得するために使用できます。この記事でIPが使用されている場合は、独自の値を置き換えるだけです。

各ノードをIPで参照する必要がなくなるように、そのホスト名をPCの/ etc / hostsファイルに追加します。

echo -e "192.168.0.50\tkmaster" | sudo tee -a /etc/hosts
echo -e "192.168.0.51\tknode1" | sudo tee -a /etc/hosts
echo -e "192.168.0.52\tknode2" | sudo tee -a /etc/hosts

マスターノードをインストールします

これで、マスターノードのインストールを開始する準備が整いました。最初のステップは、最新のRaspbianミラーをインストールすることです。最新のミラーが必要な理由について詳細な記事を書きました。興味のある友達はリンクでそれをチェックできます:

https://carpie.net/articles/headless-pi-with-static-ip-wired-edition

次に、Raspbianのインストールを開始し、SSHサーバーを有効にして、kmasterのホスト名を設定し、静的IP192.168.0.50を割り当てます。

Raspbianがマスターノードにインストールされたので、マスターPiを有効にして、sshを介して入力します。

ssh pi@kmaster

これで、K3をインストールする準備が整いました。マスターPiで実行します。

curl -sfL https://get.k3s.io | sh -

コマンドが実行されると、シングルノードクラスターがセットアップされて実行されます。確認してみましょう。まだこのPiで、実行します。

sudo kubectl get nodes

次のようなものが表示されます。

NAME     STATUS   ROLES    AGE    VERSION
kmaster  Ready    master   2m13s  v1.14.3-k3s.1

提取join token

ワーカーノードのペアを追加します。これらのノードにK3をインストールするには、結合トークンが必要です。結合トークンは、マスターノードのファイルシステムに存在します。コピーしてどこかに保存しましょう。後で入手できます。

sudo cat /var/lib/rancher/k3s/server/node-token

ワーカーノードをインストールします

2つのワーカーノード用にいくつかのSDカードを入手し、各ノードにRaspbianをインストールします。そのうちの1つについて、ホスト名をknode1に設定し、IP192.168.0.51を割り当てます。もう1つは、ホスト名をknode2に設定し、IP192.168.0.52を割り当てます。それでは、K3をインストールしましょう。

最初のワーカーノードを起動し、sshを介して入力します。

ssh pi@knode1

このPiでは、以前と同じようにK3をインストールしますが、インストーラーに追加のパラメーターを指定して、ワーカーノードをインストールし、既存のクラスターに参加することを通知します。

curl -sfL http://get.k3s.io | K3S_URL=https://192.168.0.50:6443 \
K3S_TOKEN=join_token_we_copied_earlier sh -

前のセクションから抽出した結合トークンに置き換えますjoin_token_we_copied_earlierknode2に対してこれらの手順を繰り返します。

PCからクラスターにアクセスする

クラスタをチェックまたは変更するときはいつでも、マスターノードにSSHで接続してkubectlを実行する必要がありますが、これは非常に面倒です。したがって、kubectlをPCに配置するのが好きですが、最初にマスターノードから必要な構成情報を取得しましょう。SSH経由でkmasterに入り、以下を実行します。

sudo cat /etc/rancher/k3s/k3s.yaml

構成情報をコピーして、PCに戻します。構成用のディレクトリを作成します。

mkdir ~/.kube

コピーした構成をとして保存します~/.kube/config次に、ファイルを編集して変更します。

server: https://localhost:6443

に:

server: https://kmaster:6443

安全のために、ファイルの読み取り/書き込み権限を自分自身に制限してください。

chmod 600 ~/.kube/config

それでは、kubectlをPCにインストールしましょう(まだインストールしていない場合)。KubernetesのWebサイトには、さまざまなプラットフォームでこれを行うための手順があります。Linux Mint(Ubuntu派生物)を実行しているので、ここでUbuntuの手順を示します。

sudo apt update && sudo apt install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | \
sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt update && sudo apt install kubectl

まだ慣れていない場合は、上記のコマンドでDebianリポジトリをKubernetesに追加し、セキュリティを確保するためにGPGキーを取得してから、パッケージリストを更新してkubectlをインストールします。これで、標準のソフトウェア更新メカニズムを介してkubectlの更新について通知されます。

これで、PCからクラスターを確認して、次のコマンドを実行できます。

kubectl get nodes

次のようなものが表示されます。

NAME     STATUS  ROLES   AGE   VERSION
kmaster  Ready   master  12m   v1.14.3-k3s.1
knode1   Ready   worker  103s  v1.14.3-k3s.1
knode1   Ready   worker  103s  v1.14.3-k3s.1

おめでとう!これで、3ノードのKubernetesクラスターが機能します。

K3の追加ボーナスを使用する

kubectl get pods --all-namespacesを実行すると、Traefikからいくつかの追加のポッドが表示されます。Treafikは、単一のエントリポイントからクラスタにトラフィックを転送するために使用できるリバースプロキシおよびロードバランサです。もちろん、KubernetesはTraefikをインストールすることもできますが、デフォルトでは提供されていません。したがって、K3sでのTraefikのデフォルトのプロビジョニングは素晴らしいデザインです!

おすすめ

転載: blog.csdn.net/qq_42206813/article/details/106682753