Ubuntu 18.04LTSにKubernetesをインストールしてデプロイする

Kubernetesとは何ですか?

Kubernetesは、ホストコンピューターのクラスター全体でのアプリケーションコンテナーのデプロイの自動化、スケーリング、操作のためのプラットフォームを提供する、無料のオープンソースコンテナー管理システムです。 Kubernetesを使用すると、ハイブリッド、オンプレミス、パブリッククラウドのインフラストラクチャを自由に利用して、組織のデプロイタスクを実行できます。

このチュートリアルでは、UbuntuシステムにKubernetesをインストールする方法と、2ノードのUbuntuクラスターにKubernetesをデプロイする方法について説明します。

この記事に記載されているコマンドと手順は、Ubuntu 18.04LTSシステムで実行されています。 Ubuntuコマンドラインであるターミナルを使用してすべてのコマンドを実行するため、システムダッシュまたはCtrl + Alt + Tショートカットのいずれかを使用して開くことができます。

Kubernetesのインストール

この記事で形成する2ノードのクラスターは、マスターノードとスレーブノードで構成されます。 これらのノードには両方とも、Kubernetesがインストールされている必要があります。 したがって、以下に説明する手順に従って、両方のUbuntuノードにKubernetesをインストールします。

ステップ1:両方のノードにDockerをインストールする

次のコマンドを実行して、両方のノードにDockerユーティリティをインストールします。 sudo 各ノードのターミナル:

$ sudo apt install docker.io

インストールを続行するために、Y / nオプションのプロンプトが表示されます。 Yを入力し、Enterキーを押して続行してください。 その後、Dockerがシステムにインストールされます。 次のコマンドを使用して、インストールを確認し、Dockerのバージョン番号を確認することもできます。

$ docker --version

ステップ2:両方のノードでDockerを有効にする

それぞれで次のコマンドを実行して、両方のノードでDockerユーティリティを有効にします。

$ sudo systemctl enable docker

手順3:両方のノードにKubernetes署名キーを追加する

Kubernetes署名鍵を取得するには、次のコマンドを実行します。

$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add

Curlがシステムにインストールされていない場合は、rootとして次のコマンドを使用してインストールできます。

$ sudo apt install curl

インストールを続行するために、Y / nオプションのプロンプトが表示されます。 Yを入力し、Enterキーを押して続行してください。 これで、Curlユーティリティがシステムにインストールされます。

ステップ4:両方のノードにXenialKubernetesリポジトリを追加する

Xenial Kubernetesリポジトリを追加するには、両方のノードで次のコマンドを実行します。

$ sudo apt-add-repository "deb https://apt.kubernetes.io/ kubernetes-xenial main"

ステップ5:Kubeadmをインストールする

インストールプロセスの最後のステップは、次のコマンドを使用して両方のノードにKubeadmをインストールすることです。

$ sudo apt install kubeadm

インストールを続行するために、Y / nオプションのプロンプトが表示されます。 Yを入力し、Enterキーを押して続行してください。 その後、Kubeadmがシステムにインストールされます。

次のコマンドを使用して、Kubeadmのバージョン番号を確認し、インストールを確認することもできます。

$ kubeadm version

Kubernetesのデプロイ

ステップ1:両方のノードでスワップメモリ​​を無効にする(実行中の場合)

スワップメモリ​​を使用しているシステムではKubernetesが正しく機能しないため、両方のノードでスワップメモリ​​を無効にする必要があります。 スワップメモリ​​を無効にするには、両方のノードで次のコマンドを実行します

$ sudo swapoff -a

ステップ2:各ノードに一意のホスト名を与える

マスターノードに一意のホスト名を付けるには、マスターノードで次のコマンドを実行します。

$ sudo hostnamectl set-hostname master-node

スレーブノードに一意のホスト名を付けるには、スレーブノードで次のコマンドを実行します。

$ hostnamectl set-hostname slave-node

ステップ3:マスターノードでKubernetesを初期化する

次のコマンドを次のように実行します sudo マスターノード:

$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16

インターネット接続によっては、処理に1分以上かかる場合があります。 このコマンドの出力は非常に重要です。

出力から次の情報を書き留めてください。

クラスタの使用を開始するには、通常のユーザーとして以下を実行する必要があります。

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

各ノードで以下を実行することにより、任意の数のマシンに参加できるようになりました

ルートとして:

kubeadm join 192.168.100.6:6443 --token 06tl4c.oqn35jzecidg0r0m --discovery-token-ca-cert-hash sha256:c40f5fa0aba6ba311efcdb0e8cb637ae0eb8ce27b7a03d47be6d966142f2204c

次に、クラスターの使用を開始するために、出力で提案されたコマンドを実行します。

次のコマンドを実行して、マスターノードのステータスを確認できます。

$ kubectl get nodes

マスターノードのステータスがまだ「準備ができていません」であることがわかります。 これは、マスターノードにポッドがまだデプロイされていないため、Container NetworkingInterfaceが空であるためです。

ステップ4:マスターノードを介してポッドネットワークを展開する

ポッドネットワークは、ネットワークのノード間の通信媒体です。 このチュートリアルでは、次のコマンドを使用して、クラスターにFlannelポッドネットワークを展開しています。

$ sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

ネットワークのステータスを表示するには、次のコマンドを使用します。

$ kubectl get pods --all-namespaces

これで、ノードのステータスを確認すると、マスターノードの準備ができていることがわかります。

$ sudo kubectl get nodes

ステップ5:クラスターを形成するために、スレーブノードをネットワークに追加します

スレーブノードで、マスターノードでKubernetesを初期化するときに生成した次のコマンドを実行します。

$ sudo kubeadm join 192.168.100.6:6443 --token 06tl4c.oqn35jzecidg0r0m --discovery-token-ca-cert-hash sha256:c40f5fa0aba6ba311efcdb0e8cb637ae0eb8ce27b7a03d47be6d966142f2204c

これで、マスターノードで次のコマンドを実行すると、マスターノードとサーバーノードの2つのノードがシステムで実行されていることが確認されます。

$ sudo kubectl get nodes

これは、2ノードクラスタがKubernetesコンテナ管理システムを介して稼働していることを示しています。

この記事では、2つのUbuntuノードへのKubernetesコンテナ管理システムのインストールについて説明しました。 次に、単純な2ノードクラスターを形成し、その上にKubernetesをデプロイしました。 これで、Nginxサーバーや Apache このクラスター化されたネットワークを利用するためのコンテナー。