Kubernetesとは何ですか?
Kubernetesは、無料のオープンソースコンテナ管理システムであり、ホストコンピュータのクラスタ全体でのアプリケーションコンテナのデプロイの自動化、スケーリング、操作のためのプラットフォームを提供します。 Kubernetesを使用すると、ハイブリッド、オンプレミス、パブリッククラウドのインフラストラクチャを自由に利用して、組織のデプロイタスクを実行できます。
このチュートリアルでは、UbuntuシステムにKubernetesをインストールする方法と、2ノードのUbuntuクラスターにKubernetesをデプロイする方法について説明します。
この記事に記載されているコマンドと手順は、Ubuntu18.04LTSシステムで実行されています。すべてのコマンドを実行するためにUbuntuコマンドラインであるターミナルを使用するため、システムダッシュまたはCtrl + Alt+Tショートカットのいずれかを使用して開くことができます。
Kubernetesのインストール
この記事で形成する2ノードのクラスターは、マスターノードとスレーブノードで構成されます。これらのノードには両方とも、Kubernetesがインストールされている必要があります。したがって、以下に説明する手順に従って、両方のUbuntuノードにKubernetesをインストールします。
ステップ1:両方のノードにDockerをインストールします
各ノードのターミナルでsudoとして次のコマンドを実行して、両方のノードにDockerユーティリティをインストールします。
$ 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 http://apt.kubernetes.io/ kubernetes-xenial main"
ステップ5:Kubeadmをインストールする
インストールプロセスの最後のステップは、次のコマンドを使用して両方のノードにKubeadmをインストールすることです。
$ sudo apt install kubeadm
インストールを続行するために、Y/nオプションのプロンプトが表示されます。 Yを入力し、Enterキーを押して続行してください。その後、Kubeadmがシステムにインストールされます。
次のコマンドを使用して、Kubeadmのバージョン番号を確認し、インストールを確認することもできます。
$kubeadmバージョン
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
次に、クラスターの使用を開始するために、出力で提案されたコマンドを実行します。
次のコマンドを実行して、マスターノードのステータスを確認できます。
$kubectlgetノード
マスターノードのステータスがまだ「準備ができていません」であることがわかります。これは、マスターノードにポッドがまだデプロイされていないため、ContainerNetworkingInterfaceが空であるためです。
ステップ4:マスターノードを介してポッドネットワークをデプロイする
ポッドネットワークは、ネットワークのノード間の通信媒体です。このチュートリアルでは、次のコマンドを使用して、クラスターにFlannelポッドネットワークを展開しています。
$ sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
ネットワークのステータスを表示するには、次のコマンドを使用します。
$ kubectl get pods --all-namespaces
これで、ノードのステータスを確認すると、マスターノードの準備ができていることがわかります。
$ sudokubectlgetノード
ステップ5:クラスターを形成するためにスレーブノードをネットワークに追加します
スレーブノードで、マスターノードでKubernetesを初期化するときに生成した次のコマンドを実行します。
$ sudo kubeadm join 192.168.100.6:6443 --token 06tl4c.oqn35jzecidg0r0m --discovery-token-ca-cert-hash sha256:c40f5fa0aba6ba311efcdb0e8cb637ae0eb8ce27b7a03d47be6d966142f2
これで、マスターノードで次のコマンドを実行すると、マスターノードとサーバーノードの2つのノードがシステムで実行されていることが確認されます。
$ sudokubectlgetノードこれは、2ノードクラスタがKubernetesコンテナ管理システムを介して稼働していることを示しています。
この記事では、2つのUbuntuノードへのKubernetesコンテナ管理システムのインストールについて説明しました。次に、単純な2ノードクラスターを形成し、その上にKubernetesをデプロイしました。これで、NginxサーバーやApacheコンテナなどの任意のサービスをデプロイして使用し、このクラスター化されたネットワークを利用できるようになりました。
Ubuntu