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 このクラスター化されたネットワークを利用するためのコンテナー。