Edited at

RancherでKubernetes on AWS

More than 1 year has passed since last update.


概要

Rancherを使ってAWS上のKubernetes環境をつくります。


構成イメージ

こんな環境をつくります。

Nodeは1台でも構いません。



IAMユーザの作成、キーの発行

Rancher UIからEC2インスタンスを起動するため、IAMキーが必要になりますので、ユーザーを作成し、発行します。

AWSマネージメントコンソールのサービスからIAMを選択します。


ユーザーを選択します。


ユーザーを追加 を選択します。


任意のユーザー名を入力し、アクセスの種類でプログラムによるアクセスにチェックを入れ、次に進みます。


既存のポリシーを直接アタッチを選択し、ポリシー名AmazonEC2FullAccessにチェックを入れ、次に進みます。


ユーザーの作成をクリックします。


.csvのダウンロードをクリックし、CSVファイルをローカルにダウンロードしておきます。



Rancherの起動

マネージメントコンソールのサービス一覧からEC2を選択します。


インスタンスインスタンスの作成を選択します。


AWS Marketplace を選択します。


Rancher on RancherOSのイメージを選択します。


Continueをクリックします。


インスタンスタイプを選択します。選択できる最安のものはt2.smallになります。

選択後、確認と作成をクリックします。

デフォルトVPCへの構築を前提としていますので、必要であれば、VPCの選択等の設定を実施してください。


作成をクリックします。


必要に応じて、キーペアを選択します。

今回のハンズオンではSSHログインしませんので、キーペアなしでも構いません。


インスタンスの表示をクリックし、インスタンス一覧を表示します。


作成したインスタンスのIPv4パブリックIPを確認します。

※ MarketplaceからRancherのAMIを起動すると、Rancher on RancherOS-v1-1-0-AutogenByAWSMP-というセキュリティグループが自動的に作成され、インスタンスに適用されます。SSHポートとTCP/8080がすべて許可される設定になっていますので、継続して利用する場合は、ソースの設定を適切に実施することを推奨します。TCP/8080はAPIの利用ポートにもなりますので、後ほど作成するノードからアクセスできるように構成する必要があります。


ブラウザで先程のパブリックIPの8080番ポートにアクセスします。

http://xx.xx.xx.xx:8080

Welcome to Rancher!と表示されることを確認してください。



Rancherのアクセス制限

デフォルトではRancherのUIに対して、アクセス制限がかかっていませんので、ユーザー名、パスワードによる認証を有効にします。

RancherUIの上段メニューからAdminAccess Controlを選択します。


Access Controlの一覧からLocal を選択し、ユーザー名、パスワードを入力し、`Enable Loacl Auth`をクリックします。


確認のため、一旦ログアウトします。


先程指定したユーザー名、パスワードでログインできることを確認します。

必要であれば、言語を日本語に変更することも可能です。



Kubernetesクラスタの作成

上段メニューの環境を管理を選択します。


環境を追加をクリックします。


名前を入力し、環境のテンプレートでKubernetesを選択し、作成をクリックします。


メニューの環境を作成したKubernetesに切り替えます。


メニューのインフラストラクチャホストを選択します。


ホストを追加をクリックします。


サイトのアドレスにチェックが入っていることを確認し、保存をクリックします。


AMAZON EC2を選択し、リージョンを指定、先に作ったIAMユーザのアクセスキー、秘密キーを入力し、次に進みます。


アベイラビリティゾーン、サブネットを指定し、次に進みます。


セキュリティグループを選択します。 rancher-machineを選択し、次に進みます。

rancher-machine を選択することにより、必要なポートが許可されたセキュリティグループが生成されますが、SSHポート等がすべて許可される設定になっていますので、継続して利用する場合は、ソースの設定を適切に実施することを推奨します。SSHはRancherからアクセスできるように構成する必要があります。


名前を指定し、その他のオプションを選択し(そのままでも構いません)、作成をクリックします。


同様にもう一方のアベイラビリティゾーンにもホストを作成します。(1台のみでも構いません。)

ホストが正常に起動し、rancher-agent-bootstrap以外が緑の◯になっていることを確認します。


作成したホストにSSHでログインしたい場合は、ホスト右上のメニューボタンをクリックし、マシン設定を選択すると、ZIPファイルがダウンロードできます。SSHの秘密鍵が、展開したディレクトリのmachines/ホスト名/id_rsaにありますので、このファイルを指定し、SSHログインが可能です。


メニューのKUBERNETESインフラストラクチャスタックを選択し、すべて緑になっていることを確認します。


メニューKUBERNETESダッシュボードを選択し、Kubernetes UIをクリックします。


別ウインドウでKubernetes UIが起動します。


ノードに適用するセキュリティグループに設定を追加します。

AWSマネージメントコンソールからセキュリティグループ一覧を表示し、rancher-machineを選択、インバウンドタブを選択、編集をクリックします。


下記の2つのルールを追加します。

タイプ
プロトコル
ポート範囲
ソース

HTTP
TCP
80
任意の場所

カスタムTCP
TCP
30000-32767
任意の場所

1行目はハンズオンの中で、Webサーバのコンテナを起動して、アクセスするためにHTTPを許可しています。

2行目はインスタンスのパブリックIPを送信元とした通信を許可するために設定します。(ポート番号の仕様はよく分かっていません。30000台が使われる?)

継続して利用する場合は、ソースの設定を適切に実施することを推奨します。



nginxコンテナの起動

Kubernetes UIから 作成をクリックします。


以下のように入力し、配備をクリックします。


  • アプリケーション名


    • nginx(任意)



  • コンテナイメージ


    • nginx



  • ポッド数


    • 1



  • サービス


    • 外部



  • ポート


    • 80



  • ターゲットポート


    • 80



  • プロトコル


    • TCP




左メニューのワークロードを選択し、すべて正常に起動していることを確認します。


左メニューのサービスを選択し、正常に起動していることを確認し、外部エンドポイントのリンクをクリックします。


nginxの画面が表示されることを確認します。



その他Kubernetesチュートリアル

kubectlはRancher UIメニューの KUBERNETESCLI から実行可能



削除

Rancher UIのメニューからインフラストラクチャホストを選択します。

表示されているホストの非アクティブ化ボタンをクリックします。


表示がINACTIVEになったことを確認した後、メニューボタンから削除を選択します。

ホストがないことを確認します。


AWSマネージメントコンソールから以下を削除します。


  • 作成したIAMユーザー

  • Marketplaceから起動したEC2インスタンス

  • セキュリティグループ


    • Rancher on RancherOS-v1-1-0-AutogenByAWSMP-

    • rancher-machine