超強力チュートリアル!ベリーパイにマルチノードK 8 Sクラスタを構築!


長い間、私はベリーパイにKubernetesクラスタを構築することに興味を持っていました.ネット上でいくつかのチュートリアルを見つけて、実操に従って、私はすでにKubernetesをベリーパイにインストールして、3つのPiクラスタの中で仕事をすることができます.しかし、masterノードではRAMとCPUに対する要求が私のベリーパイが提供できるものを上回っているため、Kubernetesタスクを実行する際の性能は優れていません.これにより、Kubernetesをその場でアップグレードすることは不可能になります.
そのため、業界で最も広く応用されているKubernetes管理プラットフォームの創設者Rancher Labsが軽量級のKubernetesリリース版K 3 sを発売したのを見て、資源が制限されているシーンのために設計され、ARMプロセッサに対して最適化され、ベリーパイでKubernetesを実行することができます.本稿では、K 3 sとベリーパイを使用してKubernetesクラスタを作成します.
前期準備
本明細書のKubernetesクラスタを作成するには、次の準備が必要です.
  • 少なくとも1つのベリーパイ(SDカードと電源アダプタ付き)
  • イーサネットケーブル
  • 私たちのすべてのベリーパイを接続するスイッチまたはルータ
  • 私はネットワークからK 3 sをインストールするので、ルータを通じてインターネットにアクセスする必要があります.
    クラスタアーキテクチャ
    このクラスタでは、3つのベリーパイを使用します.最初のベリーパイはkmasterと命名し、静的IP 192.168.0.50を割り当てました(私のローカルネットワークは192.168.0.0/24です).最初のworkerノード(つまり2番目のPi)は、knode 1と呼ばれ、IP 192.168.0.51が割り当てられます.最後のworkerノードは、knode 2と呼ばれ、IP 192.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 serverを有効にし、kmasterのホスト名を設定し、静的IP 192.168.0.50を割り当てます.
    Raspbianがmasterノードにインストールされている以上、master Piを有効にし、sshを介してアクセスします.
    ssh pi@kmaster
    

    K 3 sをインストールする準備をします.マスター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
    ワークノードのペアを追加したいです.これらのノードにK 3 sをインストールするにはjoin tokenが必要です.Join tokenはmasterノードのファイルシステムに存在します.コピーして保存し、後で取得できます.
    sudo cat /var/lib/rancher/k3s/server/node-token
    

    workerノードのインストール
    2つのworkerノードのSDカードを取得し、各ノードにRaspbianをインストールします.いずれかの場合、ホスト名はknode 1に設定され、IP 192.168.0.51が割り当てられる.別の場合、ホスト名はknode 2に設定され、IP 192.168.0.52が割り当てられる.では、K 3 sをインストールしましょう.
    最初のworkerノードを起動し、sshを介してアクセスします.
    ssh pi@knode1
    

    このPiでは、以前のようにK 3 sをインストールしますが、ワークノードをインストールし、既存のクラスタを追加する必要があることを理解するために、インストーラに追加のパラメータを与えます.
    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_earlierは、前のセクションから抽出されたjoin tokenを使用して置き換えられる.knode 2の手順を繰り返します.
    PCからクラスタにアクセス
    クラスタをチェックまたは変更するたびに、SSHを介してマスターノードにkubectlを実行する必要があります.これは煩わしいです.したがって、kubectlをPCに置くようにしますが、まずmasterノードから必要な構成情報を取得しましょう.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
    

    今、私たちのPCにkubectlをインストールしましょう(もしあなたがまだいなければ).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
    

    まだ詳しくない場合は、上記のコマンドでKubernetesにDebianウェアハウスを追加し、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
    

    Congratulations!あなたは今すでに仕事をしている3つのノードのKubernetesクラスタを持っています!
    K 3 sを使用した追加bonus
    kubectl get pods--all-namespacesを実行すると、Traefikの追加podが表示されます.Treafikは逆エージェントと負荷イコライザであり,単一のエントリポイントからトラフィックをクラスタに導くことができる.KubernetesはもちろんTraefikもインストールできますが、デフォルトでは提供されていません.だからK 3 sではデフォルトでTraefikが提供されているのは素晴らしいデザインです!