さくらのVPSでは、OSインストール後に自動的にアプリケーションのセットアップまで行えるスタートアップスクリプトのひとつとして、コンテナ管理ツールのKubernetesを提供しています。ここではKubernetesスタートアップスクリプトを利用したKubernetesのインストール手順を説明します。
Kubernetesとは
Kubernetesとは、Cloud Native Computing Foundationが開発するオープンソースのコンテナ管理ツールです。ホストサーバがオンプレミスの物理マシンなのかクラウド上の仮想マシンなのか、またインフラ提供事業者やネットワークの論理的位置などによらず、複数のインフラを横断的に統合し、管理下のコンテナを一元的に管理することが可能です。
詳しくはKubernetes公式サイトをご覧ください。
さくらのVPSでは煩雑なKubernetesのインストールを、インストール先のホストが管理機能を持つマスターノードと、マスターノードの制御によってコンテナが動作するワーカーノードそれぞれのスタートアップスクリプトとして提供し、両者を組み合わせて簡単にKubernetes環境を構築することができます。
スタートアップスクリプトの構成
Kubernetesでは
・システム全体を管理するマスターノード
・実際に自身内にコンテナを起動するホストとなるワーカーノード
の2種類の役割を持つノードが最低限必要となります。さくらのVPSではCentOS7環境向けに、対象のサーバをそれぞれの役割ごとに構築するスタートアップスクリプトを
- [public] CentOS_kubernetes-master
- [public] CentOS_kubernetes-worker
の名称で提供しています。
サーバの作成
VPSでは以下の手順でサーバを作成します。マスターノード作成時とワーカーノード作成時でそれぞれ以下のように作成フォームを入力・選択します。
※サーバのスペックは2コア以上のCPU・2GB以上の搭載メモリを推奨します。これを下回る場合、高負荷により正常に通信が行えない場合があります。
※現在CentOS7環境向けのみ提供しています。OSに「CentOS7 x86_64」以外を選択した場合はスタートアップスクリプト選択メニューに表示されません。
マスターノード
スタートアップスクリプト選択メニューで「[public] CentOS_Kubernetes-master」を選択します。
入力フォームが表示されるので必要に応じ設定値を入力します。
apiserver-advertise-address | マスターがワーカからのAPI接続を待ち受けるIPアドレスを指定します。何も入力しなかった場合はVPSサーバのグローバルIPアドレスが指定されます。 |
---|---|
service-cidr | サービスが内部で使用するVirtual IPの割り当て範囲を指定します。デフォルトでは「10.96.0.0/12」が指定されます。 |
Network add-on | ポッド用ネットワーク構築に使用するアドオンを選択します。 |
マスターノードにポッドをスケジュールする | 「はい」を選択することで、マスターノードにポッドがスケジューリングされるようになります。「いいえ」の場合はワーカーノードのみとなります。 |
Web UIを有効にする | KubernetesのWeb UI操作環境であるDashboardをインストールし有効にします。 |
ワーカーノード
スタートアップスクリプト選択メニューで「[public] CentOS_Kubernetes-worker」を選択します。下部に設定値の入力フォームが表示されるので必要に応じ入力、または変更を行います。
kubeadm join | Kubernetesクラスタにワーカーノードとして参加するkubeadm joinコマンドを実行し、スタートアップスクリプト終了時に自動的に指定したクラスタのワーカーノードとして動作するようにします。 |
---|
※kubeadm joinコマンドの引数について
Kubernetesのマスターノードを構築した場合、コマンド実行途中にワーカーノード向けのkubeadm joinコマンド実行例が表示されますが、Kubernetesスタートアップスクリプトではこれを /root/.kubeadm_join ファイルに書き出しています。ワーカーノード作成時のkubeadm join入力フォームにはこちらをご参考ください。
OSインストールの開始
各項目を入力後、「設定内容を確認する」ボタンを押下すると確認画面が表示されます。
修正が必要であれば「修正」を、問題が無ければ「インストールを実行する」ボタンを押下しインストールを実行します。
※OSインストール完了後はサーバにログインが可能な状態となりますが、初回の起動時にスタートアップスクリプトが動作し、最終段階で自動的にリブートが行われます。初回起動から最初のリブートまでの間はスタートアップスクリプト動作中となりますのでログインしての作業時はご注意ください。
初期設定
マスターノード
スタートアップスクリプトにより、Kubernetesがあらかじめインストールされサービスが開始された状態でサーバが起動します。マスターノードでは、スタートアップスクリプトのオプションで「Web UIを有効にする」のチェックを有効にするとコントロールパネルに接続可能な状態でセットアップされるので、クラスタネットワークに接続可能な環境からWebブラウザで
- http://マスターノードのIPアドレス:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login
に接続し、初期画面が表示されることを確認します。
ワーカーノード
ワーカーノードとして利用可能なツールや設定が行われている状態でセットアップされます。サーバ作成時の入力フォーム「kubeadm join」でマスターノードを指定していた場合、そのマスターノードのクラスタに組み込まれた状態となり、すぐにワーカーノードとして機能します。
マスターノードでは、kubectl get nodesコマンドでワーカーノードとして表示されることを確認できます。
# kubectl get nodes NAME LABELS STATUS 192.168.1.101 Ready 192.168.1.102 Ready 192.168.1.103 Ready