こんにちは、 @dz_ こと大平かづみです。
Prologue - はじめに
Azure Container Service (ACS) のコンテナ基盤に、 Kubernetes が仲間入りしました!
早速試してみます (b’v`★)
とはいえ、 Kubernetes は初めて触るので、その点はご容赦くださいませ^^;
作業環境
環境
- Azure Container Service
- クライアント
- Windows 10
- Bash on Windows (≒ Ubuntu 14.04)
備考
- Azure のアカウントがある前提で進めます。
- Azure Container Service は、接続に SSH を使います。ここでは ssh-agent (Bash on Windows) を使って進めます。環境に合わせて適宜読み替えてください。
- ACS を作成するときに、SSH 公開鍵を登録する
- SSH でマスターノードに接続する
Azure Container Service (ACS) で Kubernetes 環境を作ってみる
それではさっそく、画面に倣って進みます。
リソースの新規作成画面から、 Azure Container Service を選択し、作成します。
それぞれ項目に入力し、次へ進みます。
項目 | 値 |
---|---|
User name | 任意のユーザー名。マスターノードへの SSH接続時に使用する。 |
SSH public key | SSH 公開鍵の文字列 (id_rsa.pub の内容 (ssh-rsa XXXXX... ))。マスターノードへの SSH接続時に使用する。 |
サブスクリプション | 使用するサブスクリプション |
リソースグループ | リソースグループ名 |
場所 | リソースの配置場所 |
Orchestrator configuration では、 Kubernetes を選択します。すると、
おや? 今までの DC/OS や Swarm 選択時にはなかった項目が表示されました。(下図参照) Service Principal というものが必要とのこと。
- Service Principal Client ID
- Service Principal Client Secret
Service Principals | Microsoft Azure Container Service Engine を確認すると、 Service Principal は Azure CLI 2.0 (Preview) 、旧 Azure CLI 、Azure PowerShell 、旧ポータルから作成できるようです。
なお、私は、最初 Azure CLI 2.0 で試みて Service Principal を発行することはできたのですが、ログインして確認する (az login --service-principal
) でうまく認証が通らず、正しく作成できたのか判断できなかったので、旧 Azure CLI にて作り直しました。
Service Principal を入力して進みましょう。Container Service settings を入力し次に進みます。なお、 Agent count はコンテナが配置されるエージェントノードの個数です。これとは別に、マスターノードが作成されます。
項目 | 値 |
---|---|
Agent count | エージェントノードの個数 |
Agent virtual machine site | エージェントノードのマシンサイズ |
DNS prefix for container service | 各ノードのインスタンス名のプレフィックス |
それぞれ内容を確認して、作成します。
しばらくするとデプロイが完了します。
デプロイ完了!(。・ω・)ノ
Kubernetes on ACS に触ってみる
さて、ACSが準備できたら、接続して Kubernetes に触れてみます!このウォークスルーを参考に進めます。
今回は Bash on Windows (Ubuntu 14.04) から接続します。まず、登録した ssh公開鍵に対応するキーを登録しておきます。
$ eval "$(ssh-agent -s)"
$ ssh-add ~/.ssh/id_rsa
次に、ポータルの ACS のリソースグループで、前回のデプロイを開き、SSHMATER0 の値をコピーします。これは、マスターノードへの接続用コマンドです。
ただし、このコマンドのまま実行すると以下のエラーでつながらないです。
$ ssh user@xxxmgmt.japaneast.cloudapp.azure.com -A -p 2200
ssh: connect to host xxxmgmt.japaneast.cloudapp.azure.com port 2200: Resource temporarily unavailable
このコマンドでは 2200 ポートを指定していますが、ネットワーク セキュリティ グループを確認してみると、 22 と 443 しか開いていないようです。なので、ポート指定をせずに接続しました。
# Kubernetes のマスターノードに SSH 接続する
$ ssh user@xxxmgmt.japaneast.cloudapp.azure.com -A
Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.4.0-28-generic x86_64)
* Documentation: https://help.ubuntu.com/
Get cloud support with Ubuntu Advantage Cloud Guest:
http://www.ubuntu.com/business/services/cloud
130 packages can be updated.
52 updates are security updates.
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
つながった!
どれどれ、 kubectl
コマンドを使ってみると、
# Kubernetes のノード情報を表示する
$ kubectl get nodes
NAME STATUS AGE
k8s-agent-55298537-0 Ready 3h
k8s-agent-55298537-1 Ready 3h
k8s-master-55298537-0 Ready,SchedulingDisabled 3h
うむ、ノードも無事に認識しているようですね。おけっ! (b’v`★)
Epilogue - おわりに
Kubernetes 初心者でも、クラスタ作るところまでは問題ないですね!
続きは、さらに Kubernetes をもうちょっと勉強してから試してみます~
ちなみに、私が Bash on Windows に Azure CLI 2.0 を入れようとして奮闘した情報はこちら!