KubernetesでWindowsコンテナをクラスタ化して管理~Master構築編~

前回の環境セットアップ編ではKubernetesでWindowsコンテナクラスタを構築するための環境セットアップまで完了させました。今回は、Linux上にKubernetes Master Nodeを手動で構築します。

スポンサーリンク

0. 環境の構成の確認と参考サイト

今回解説する手順は、環境全体のうち次の図にあるMaster Node部分の構築手順です。

kubernetes windows environment

以下の手順は、Microsoft Docsにあるこちらのサイトの手順をもとに構築しています。ただし、Kubernetesは新しいバージョンがどんどんリリースされるため、手順が使えなくなる可能性もあるのでご注意ください。また、日本語版のドキュメントも存在していますが、内容のUpdateや間違いの修正が反映されていないため、実行するコマンドや手順自体は上記リンク先の英語版で確認することをお勧めします。

1. Kubernetesのインストール

1-1. 必要なパッケージとセットアップツールを準備

まず、Kubernetesを動かすのに必要なパッケージをインストールします。

次に、Microsoftが用意しているGithub上のリポジトリにある設定Scriptをダウンロードします。

1-2. Kubernetes本体とCNI Pluginの展開

設定Scriptを準備できたら、次はKubernetes本体のバイナリをダウンロードします。以下はv1.9.2をダウンロードしていますが、ダウンロードURLを適宜新しいバージョンに変更可能です。執筆時点ではv1.9.3がリリースされています。

Kubernetes実行ファイルのためにPATH情報をログインユーザーのプロファイルに追加しておきます。

次にCNI Pluginをダウンロードして展開します。下記のコマンドではCNI Pluginの最新リリースのバイナリを取得しています。

以上の準備ができたら、各種設定の反映のために、一度OSを再起動しておきます。

2. Kubernetesの初期設定と起動

以下ではKubernetesの初期設定を行います。初期設定に用いる各種設定パラメータ名とその値および意味は以下の通りとします。

パラメータ名 意味
MASTER_IP 192.168.1.20 Kubernetes Master(Ubuntu)のIPアドレス
CLUSTER_CIDR 172.16.0.0/16 コンテナクラスタ用Networkで使うCIDRで、/16で必ず指定する。ここから各Node用に/24ずつアサインされる。
api-version 1.9.2 インストールするKubernetesのバージョン

2-1. Node間通信用証明書の生成

KubernetesのMasterを含めたNode間の管理通信のやり取りには証明書が用いられます。その証明書を以下のScriptで生成します。

2-2. manifestファイルの生成

Kubernetes Master Nodeではmanifestファイルによって様々な設定を行います。手動でmanifestを作るのは手間なので、Pythonのスクリプトを使って生成します。ただ、事前にダウンロードしているScriptはPython 2系対応の内容になっていますがUbuntu 17.10ではデフォルトでPython 3系が使われているため、明示的にPython 2.7を指定して実行します。この点が、Microsoftのドキュメントに明記されていないので注意が必要です。

上記のコマンドではAPI Versionとして1.9.2を指定しましたが、実際に利用するバージョンに合わせて設定します。

2-3. 操作用CLI(kubectl)の設定

Kubernetesを操作するコマンドkubectlでKubernetes MasterのAPIエンドポイントにアクセスできるよう、設定ファイルの生成と適切なディレクトリへの保存を行います。

ここで生成した~/.kube/configファイルは次回解説するWindowsコンテナNodeにも設置する必要があります。ダウンロードしておくと良いです。

3. Kubernetes Masterの起動と動作確認

3-1. Kubernetes Masterの起動

Kubernetes Masterをフォアグラウンドで起動します。起動するとずっと大量の出力が出続けるので、別Terminalを開き、ログの記録はしないよう注意してから実行します。まず、kubeletプロセスを開始します。

出力結果が似たような内容の繰り返しになってきたら(初回は1~2分後)、別のTerminalでkubeproxyを開始します。この時、前節で指定したCLUSTER_CIDRの第2オクテットまでを引数に渡します。

以上でKubernetes Masterが起動しました。デーモン化はしていないので、Master NodeのOSを起動するたびに手動でKubernetesを立ち上げる必要があります。

3-2. Master Nodeの起動確認

いくつかの方法でMaster Nodeが起動していることを確認します。まず、Kubernetes Master Nodeでは23個くらいのコンテナが起動します。起動していることを確認します。

次に、kubectlコマンドでKubernetesクラスタのAPIエンドポイント情報などを確認します。

また、コンテナ間の通信のためにcbr0というインターフェースが生成されており、CLUSTER_CIDRの中のIPが付与されていることを確認します。

以上で、Kubernetes Masterの構築が完了しました。次回はWindows Server version 1709でKubernetes Worker Nodeを構築します。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

フォローする