GNU/Linux >> Linux の 問題 >  >> Linux

CanonicalのマルチパスでK3Sを使用するKubernetesクラスタ

これは、Kubernetes関連のもう1つのノートブックエントリであり、Canonicalのマルチパスで作成された仮想マシンでK3Sを使用してKubernetesクラスタを設定する手順を説明します。さらに、クラスターが実行される仮想マシンの外部からK3Sクラスターを管理するためのKubernetesコマンドラインクラスター管理ツールであるkubectlを構成する方法についても説明します。

マルチパスはWindows、Mac OS X、Linuxで実行できるため、この記事で説明する手順は、Mac OS Xでのみテストしましたが、上記のすべての環境に適用できます。

背景

賢明な読者は、DockerでKubernetesクラスターを実行する方法を説明した最近の記事を思い出し、KindではなくK3Sに移行した理由を疑問に思うかもしれません。
これには2つの理由があります:

  • K3Sは本番環境に対応していると主張しています。
    おそらくGoogle規模の本番環境には対応していませんが、私のニーズには十分だと思います。
  • K3Sは、実際のKubernetesクラスターに似ています。
    Kindと一緒に仕事をしていた短い時間の間に、K3Sを見るようになった2つの問題に遭遇しました。
  • –種類のクラスターを再起動できません。
  • –種類はLoadBalancerタイプをサポートしていません。

前提条件

K3Sの準備として、必要なツールをいくつかインストールしてから、K3Sを実行する仮想マシンを作成します。

ツール

K3Sをインストールする前に、仮想マシンのホストとして機能するコンピューターに次のツールをインストールする必要があります。

  • マルチパス
    Ubuntuのインスタンスを実行できるCanonicalの仮想マシン。
    マルチパスのインストール方法については、こちらをご覧ください。
  • kubectl
    以前と同様に、kubectlはKubernetesコマンドラインクラスター管理ツールです。
    kubectlのインストール方法については、こちらをご覧ください。

仮想マシン

2つのノードで構成されるKubernetesクラスターを作成します。 1人のマスターと1人のエージェント。このために、2台の仮想マシンが必要になります。

マルチパスをインストールしたら、ターミナルウィンドウを開きます:

  • マスターノード仮想マシンを作成して起動します:
multipass launch --name k3s-master --mem 4G --disk 5G 18.04
multipass launch --name k3s-agent --mem 4G --disk 5G 18.04
  • 2つの仮想マシンを確認します:
multipass list

出力は次のようになります。

Name                    State             IPv4             Image
k3s-agent               Running           192.168.64.10    Ubuntu 18.04 LTS
k3s-master              Running           192.168.64.7     Ubuntu 18.04 LTS

k3s-masterのIPアドレスに注意してください。後でエージェントノードにK3Sをインストールするときに必要になります。

K3Sをインストールする

次に、マスターノードとエージェントノードにK3Sをインストールする方法について説明します。

マスターノードにK3Sをインストールする

このステップでは、マスターノードにK3Sをインストールし、マスターノードトークンを取得します。マスターノードトークンは、後でマネージャーが管理するK3Sノードを作成する必要があります。

  • 必要に応じてターミナルウィンドウを開きます。
  • k3s-master VMでシェルを開きます:
multipass shell k3s-master
curl -sfL https://get.k3s.io | sh -

次のような出力がコンソールに表示されます。

[INFO]  Finding latest release
[INFO]  Using v1.17.4+k3s1 as release
[INFO]  Downloading hash https://github.com/rancher/k3s/releases/download/v1.17.4+k3s1/sha256sum-amd64.txt
[INFO]  Downloading binary https://github.com/rancher/k3s/releases/download/v1.17.4+k3s1/k3s
[INFO]  Verifying binary download
[INFO]  Installing k3s to /usr/local/bin/k3s
chcon: can't apply partial context to unlabeled file '/usr/local/bin/k3s'
[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

K3Sのインストールを確認します:

k3s -version

したがって、上記のコマンドの出力は次のようになります。

k3s version v1.17.4+k3s1 (3eee8ac3)

マスターノードトークンを取得します:

sudo cat /var/lib/rancher/k3s/server/node-token
K103a5c4b22b4de5715dff39d58b1325c38e84217d40146c0f65249d439cab1a531::server:271a74dadde37a98053a984a8dc676f8

k3s-master VMシェルを終了します:

exit

エージェントノードにK3Sをインストールする

K3SマスターのIPアドレスとノードトークンを使用して、エージェントノードにK3Sをインストールする準備が整いました。

  • 必要に応じてターミナルウィンドウを開きます。
  • k3s-agent VMでシェルを開きます:
multipass shell k3s-agent
  • エージェントノードに最新バージョンのK3Sをインストールします。
    K3S_URL変数のk3s-masterのIPアドレスとK3S_TOKEN変数のノードトークンを置き換えます。
curl -sfL https://get.k3s.io | K3S_URL="https://192.168.64.7:6443" K3S_TOKEN="K103a5c4b22b4de5715dff39d58b1325c38e84217d40146c0f65249d439cab1a531::server:271a74dadde37a98053a984a8dc676f8" sh -

これに似た出力がコンソールに表示されます:

[INFO]  Finding latest release
[INFO]  Using v1.17.4+k3s1 as release
[INFO]  Downloading hash https://github.com/rancher/k3s/releases/download/v1.17.4+k3s1/sha256sum-amd64.txt
[INFO]  Downloading binary https://github.com/rancher/k3s/releases/download/v1.17.4+k3s1/k3s
[INFO]  Verifying binary download
[INFO]  Installing k3s to /usr/local/bin/k3s
chcon: can't apply partial context to unlabeled file '/usr/local/bin/k3s'
[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-agent-uninstall.sh
[INFO]  env: Creating environment file /etc/systemd/system/k3s-agent.service.env
[INFO]  systemd: Creating service file /etc/systemd/system/k3s-agent.service
[INFO]  systemd: Enabling k3s-agent unit
Created symlink /etc/systemd/system/multi-user.target.wants/k3s-agent.service → /etc/systemd/system/k3s-agent.service.
[INFO]  systemd: Starting k3s-agent

k3s-agent VMシェルを終了します:

exit

クラスターを確認する

マルチパスVMホスト(またはK3S仮想マシンの外部)でkubectlを構成する前に、K3Sクラスターが適切にセットアップされていることをすばやく確認したいと思います。

  • 必要に応じてターミナルウィンドウを開きます。
  • k3s-master VMでシェルを開きます:
multipass shell k3s-master

クラスタ内のノードを一覧表示します:

sudo kubectl get nodes -o wide

私の場合、ノードリストは次のようになります。

NAME         STATUS   ROLES    AGE     VERSION        INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
k3s-agent    Ready    <none>   5m31s   v1.17.4+k3s1   192.168.64.10   <none>        Ubuntu 18.04.4 LTS   4.15.0-91-generic   containerd://1.3.3-k3s2
k3s-master   Ready    master   39m     v1.17.4+k3s1   192.168.64.7    <none>        Ubuntu 18.04.4 LTS   4.15.0-91-generic   containerd://1.3.3-k3s2
exit

外部kubectlの構成

K3Sクラスターが稼働している状態で、開発用コンピューターであるVMホストにインストールしたkubectlを構成して、K3Sクラスターを管理できるようにします。

マスターノードのkubectl構成を取得する

作成したばかりのK3Sクラスターを管理するために外部kubectl管理ツールを構成できるようにするために、マスターノードからkubectl構成をコピーし、後でいくつかの変更を加えます。

  • 必要に応じてターミナルウィンドウを開きます。
  • k3s-master VMでシェルを開きます:

multipass shell k3s-master

  • マスターノードのkubectl構成を表示します:

sudo kubectl config view

私の場合、次のようになります:

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://127.0.0.1:6443
  name: default
contexts:
- context:
    cluster: default
    user: default
  name: default
current-context: default
kind: Config
preferences: {}
users:
- name: default
  user:
    password: ea3527757bd8c5c9ae8dbb00fef7595c
    username: admin

構成ファイルは上記と同じではないことに注意してください。たとえば、パスワードは異なります。

  • k3s-master VMシェルを終了します:

exit

kubectl構成を置き換えます

これで、VMホストのkubectl構成を、マスターノードからのkubectl構成の変更バージョンに置き換えることができます。

  • 必要に応じてターミナルウィンドウを開きます。
  • ローカルのkubectl構成を編集するか、存在しない場合は作成します。

vi ~/.kube/config

  • コンテンツがある場合は、マスターノードのkubectl構成に置き換えます。
  • クラスターのIPアドレスをk3s-masterVMのIPアドレスに変更し、TLS検証をスキップするように構成します。
    結果は次のようになり、4行目と5行目が変更されます。
apiVersion: v1
clusters:
- cluster:
    insecure-skip-tls-verify: true
    server: https://192.168.64.7:6443
  name: default
contexts:
- context:
    cluster: default
    user: default
  name: default
current-context: default
kind: Config
preferences: {}
users:
- name: default
  user:
    password: ea3527757bd8c5c9ae8dbb00fef7595c
    username: admin
  • 構成を保存してviを終了します。
    :wq
  • 構成を確認します:

kubectl get nodes

よりコンパクトなリストではありますが、マスターノード内からリストされたものと同じノードもリストされるはずです:

NAME         STATUS   ROLES    AGE   VERSION
k3s-master   Ready    master   66m   v1.17.4+k3s1
k3s-agent    Ready    <none>   32m   v1.17.4+k3s1

K3Sクラスターを再起動します

はじめにと同様に、KindからK3Sに切り替える理由の1つは、K3Sクラスターを再起動できることです。 Kubernetes関連の作業を中断する必要がある場合は、K3S仮想マシンのホストであるコンピューターをシャットダウンするだけです。後でコンピューターを再起動するときに、K3Sクラスターを再起動して以前の状態に復元するために必要なのは、次の2つのコマンドを使用してクラスターの仮想マシンを再起動することだけです。

multipass start k3s-master

multipass start k3s-agent


Linux
  1. Kubernetesとは何ですか?完全ガイド

  2. 最初のポッドをKubernetesクラスターにデプロイする方法

  3. ランチャーを使用してKubernetesクラスターをセットアップする

  1. Rancherを使用してKubernetesクラスターをセットアップする方法

  2. KubernetesにRedisクラスターをデプロイする方法

  3. CentOS7にKubernetesクラスターをインストールする方法

  1. RHEL 8にKubernetes(k8s)クラスターをインストールする方法

  2. RockyLinux8にKubernetesクラスターをインストールする方法

  3. Kubeadmを使用してHAでKubernetes(k8s)クラスターをセットアップする方法