fbpx

Docker Enterprise 3.1 で Kubernetes を始めよう! #docker #mirantis #kubernetes #k8s

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

本ブログは Mirantis社のblog記事「Getting Started with Docker Enterprise 3.1」の翻訳記事です。
また、掲載に辺りMirantis Launchpad CLI ツール のインストール部分を加筆しました。

Mirantis社がリリースしたDocker Enterprise 3.1 は、最新のアプリケーションをすばやく作成できる機能をそろえています。さらに、そのインストールや設定はとても簡単です。この記事では、Mirantis Launchpad CLI ツールを使って Docker Enterprise をインストールして、Universal Control Plane(UCP)を利用した Kubernetes オブジェクトの管理方法や、Kubernetes クラスタを拡張する方法を学びます。

では、さっそく始めましょう。

Docker Enterprise を初期化する

Mirantis Launchpad CLI ツールをインストールする

  1. https://github.com/Mirantis/launchpad へアクセスしてインストールに利用しているOSに対応した最新バージョンを取得してください。 
    ※ このツールは定期的に更新されるため、常に最新バージョンを使用していることを確認してください。
  2. ダウンロードしたバイナリの名前を launchpad に変更し、実行したいPATHのディレクトリに移動して実行権限を付与します。
  3. OSXではセキュリティとプライバシーの設定で Launchpad を実行することを許可する必要があります。

インストールが完了したら、ツールのバージョンをチェックして正常にインストールされているか確認します。

$ launchpad version
version: 1.0.0

正常にインストールを完了するには、利用者情報を登録する必要があります。
登録によって提供される情報は、評価ライセンスの割り当て、および、製品の試用に関するサポートの提供に使用されます。launchpad register コマンドを使用して登録を完了します。
(※ お客様の情報は英語表記にて入力ください。)

$ launchpad register
name: お客様の名前
company: お客様の会社名
email: お客様のメールアドレス

Kubernetesクラスタのノードを準備する

Docker Enterprise の UCPをインストールするには、最低2台のマシンが必要です。パブリッククラウドプロバイダからマシンをプロビジョニングするなど、利用可能なVM等をご準備ください。サポートされているOSがインストールされている任意のマシンを使用できます。

クラスタ構成ファイルを作成する

クラスタは、cluster.yamlファイルを使用して構成されます。この例では、シンプルな 1 + 1 UCP Kubernetesクラスタをセットアップします。1つのノードは UCP の Masterノードとして機能し、1つのノードは純粋な Workerノードとして機能します。
cluster.yaml を編集し以下の例のように入力します。今回利用するインフラストラクチャの詳細と一致するように、記述内容を適宜修正してください。

apiVersion: launchpad.mirantis.com/v1beta2
kind: UCP
metadata:
  name: ucp-kube
spec:
  ucp:
    installFlags:
    - --admin-username=admin
    - --admin-password=passw0rd!
    - --default-node-orchestrator=kubernetes
  hosts:
  - address: ec2-34-222-249-19.us-west-2.compute.amazonaws.com
    user: ubuntu
    role: manager               
    sshKeyPath: /Users/nchase/Downloads/kaas.pem
  - address: ec2-35-160-242-135.us-west-2.compute.amazonaws.com
    user: ubuntu                
    role: worker
    sshKeyPath: /Users/nchase/Downloads/kaas.pem

より複雑なセットアップが必要な場合、適切な構成オプションを設定してください。

クラスタを起動する

クラスタ構成ファイルの準備ができたらクラスタを起動できます。cluster.yaml ファイルを作成したのと同じディレクトリで、次のコマンドを実行します。

$ launchpad apply

この launchpadツールは cluster.yaml に定義されたホストマシンに、SSHまたはWinRM接続で接続し必要なすべてを構成します。実行後、数分でKubernetesが稼働するはずです。

Docker Enterprise の UCP にアクセスする

Mirantis Launchpad CLI ツールで Docker Enterprise をインストールすると、次のようなメッセージが表示されます。

INFO[0257] Cluster is now configured. You can access your cluster admin UI at: https://ec2-xx-xxx-xxx-xx.us-west-2.compute.amazonaws.com 
INFO[0257] You can also download the admin client bundle with the following command: launchpad download-bundle --username USERNAME --password PASSWORD

表示されたURLにブラウザでアクセスすると、ログイン画面が表示されます(もし証明書の警告が出た場合は無視してください)。

cluster.yaml ファイルで指定したユーザ名とパスワードを利用してログインします。

・・・
  ucp:
    installFlags:
    - --admin-username=admin
    - --admin-password=passw0rd!
・・・

ライセンスがある場合は、Upload License をクリックし、*.licファイルを選択します。ライセンスがない場合は Skip For Now をクリックします。

これでDocker Enterprise の Kubernetesクラスタが利用可能になりました。

Kubernetes クラスタにアクセスする

Launchpadの実行により、Kubernetesノード と Dockerノード の両方をホストできるクラスタが作成されます。今回は、UCP を使って Kubernetes のクラスタにアクセスする方法を見てみましょう。

UCPのUIからKubernetesへのアクセス

左メニューの Kubernetes+Create を選択すると、あらゆるタイプのオブジェクトをYAMLで作成できます。

今回は、次のYAMLでいくつかのオブジェクトを作成します。

apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  selector:
    app: nginx
  ports:
  - port: 80
    name: http
    targetPort: 80
  - port: 443
    name: https
    targetPort: 80
---
apiVersion: v1
kind: Pod
metadata:
  name: rss-site
  labels:
    app: web
spec:
  containers:
    - name: front-end
      image: nginx
      ports:
        - containerPort: 80
    - name: rss-reader
      image: nickchase/rss-php-nginx:v1
      ports:
        - containerPort: 88

ボックス内にYAMLを入力するか、*.ymlファイルをアップロードします。
今回は kube-public Namespace を選択して Create をクリックしてください。

KubernetesNamespaces をクリックし、 kube-public をマウスオーバします。そして Set Context をクリックして、参照する Namespace を変更してください。

次に KubernetesPods を選択します。すると、先ほど作成した Pod が見えるはずです。

Actions のプルダウンを使用すると、オブジェクトを削除することが出来ます。

コマンドラインを使用してKubernetesクラスタへアクセス

コマンドラインから Kubernetes クラスタにアクセスするためには次の2つの手順が必要です。

  1. kubectl をインストールする
  2. UCPのクライアントバンドルをダウンロードする

1.については、Kubernetes クラスタにアクセスするために特別なツールを利用するわけではありません。標準の kubectlインストール手順にしたがってください。

2.のクライアントバンドルもインストールは簡単です。Docker Enterprise のセキュリティ機能を最大限活用するためにはクライアントバンドルの利用が必要です。今回はこちらのインストール方法を見ていきます。
次の手順でインストールしてください。

Dashboard をクリックします。下にスクロールすると Docker CLI のインフォメーションボックスがあります。

矢印をクリックして Create and Manage Services Using the CLI のダイアログボックスを開きます。

次に、 Client Bundleを作成します。
まず、 user profile page のリンクをクリックします。これにより新しいタブが開き、新しいバンドルが作成できるようになります。

New Client Bundle をクリックし、 Generate Client Bundle を選択します。
その後ラベルを入力し、 Confirm をクリックします。

Confirm をクリックすると、自動でバンドルがダウンロードされます。ダイアログボックスや、その他の表示は現れません。クライアントバンドルはブラウザで指定された Downloadsディレクトリの中に格納されます。バンドルをダウンロードしたPCのコマンドラインで unzip して環境変数を設定します。

Linux の場合は次のコマンドです。

unzip ucp-bundle-admin.zip
eval "$(<env.sh)"

管理者ユーザでコマンドを実行することを想定しています。実行する際には、実際のファイル名を使用してください。

Windowsの場合は、単にアーカイブを解凍して実行します。

.\env.cmd 

この時点で kubectlクライアントは、 Docker Enterprise の Kubernetesクラスタにアクセスするよう設定されています。
次のコマンドで接続できるか確認します。

$ kubectl get pods -n kube-public
NAME       READY     STATUS    RESTARTS   AGE
rss-site   2/2       Running   0          1d

このコマンドを初めて実行する際には、レスポンスを得るまでに数秒かかるかもしれません。正常にアクセスできれば先ほど作成した Pod が表示されているはずです。
これで CLI を利用して Kubernetesクラスタへアクセスできました。

次はこのクラスタに、ノードを追加してみましょう。

Docker Enterprise クラスタに新しいノードを追加する

クラスタに新しいノードを追加することが、この記事でご紹介したい最後の項目になります。
Mirantis Launchpad CLI ツールを使用すると、新しいサーバを cluster.yaml ファイルに追加し適用するだけなので簡単です。
例えば、すでに2台のサーバがあり、3台目を追加したい場合は次のようになります。

apiVersion: launchpad.mirantis.com/v1beta1
kind: UCP
metadata:
 name: ucp-kube
spec:   
 ucp:
    installFlags:
    - --admin-username=admin
    - --admin-password=passw0rd!
    - --default-node-orchestrator=kubernetes                                    
 hosts:
  - address: ec2-34-222-249-19.us-west-2.compute.amazonaws.com
    user: ubuntu
    role: manager               
    sshKeyPath: /Users/nchase/Downloads/kaas.pem
  - address: ec2-35-160-242-135.us-west-2.compute.amazonaws.com
    user: ubuntu                
    role: worker
    sshKeyPath: /Users/nchase/Downloads/kaas.pem
  - address: ec2-18-237-127-216.us-west-2.compute.amazonaws.com
    user: ubuntu
    role: worker
    sshKeyPath: /Users/nchase/Downloads/kaas.pem

そして再適用すると、次のようになります。

$ launchpad apply
...
INFO[0094] ==> Running phase: Join workers     
INFO[0095] ec2-35-160-242-135.us-west-2.compute.amazonaws.com: already a swarm node 
INFO[0096] ec2-18-237-127-216.us-west-2.compute.amazonaws.com:  This node joined a swarm as a worker. 
INFO[0096] ec2-18-237-127-216.us-west-2.compute.amazonaws.com: joined succesfully 
INFO[0096] ==> Running phase: Close SSH Connection 
INFO[0098] ec2-18-237-127-216.us-west-2.compute.amazonaws.com: SSH connection closed 
INFO[0098] ec2-35-160-242-135.us-west-2.compute.amazonaws.com: SSH connection closed 
INFO[0098] ec2-34-222-249-19.us-west-2.compute.amazonaws.com: SSH connection closed 
INFO[0098] ==> Running phase: UCP cluster info 
INFO[0098] Cluster is now configured. You can access your cluster admin UI at: https://ec2-34-222-249-19.us-west-2.compute.amazonaws.com 
INFO[0098] You can also download the admin client bundle with the following command: launchpad download-bundle --username  --password  

このように、クラスタに新しいノードが追加されました。

UCPのUIにて Shared ResourcesNodes を選択すると新しく追加されたノードが確認できます。

次のステップ

これで、Docker Enterprise 上で稼働する Kubernetesクラスタが作成できました。
このように、Docker Enterprise ならば簡単に Kubernetesクラスタを利用することが可能です。
Kubernetes で、Istio Ingress、GPU、Windows ノード を使用する方法については、今後ご紹介していきます。
また、 Mirantis Launchpad CLI Tool をまだお試しでない方は、ぜひ一度お試しください!

Docker Enterprise 3.1 の新機能について知りたい場合は、Docker Enterprise 3.1 正式リリース! もご覧ください。

Docker Enterprise の Kubernetes で NVIDIA GPUノードを利用する を公開しました。
Istio Ingress入門:Kubernetesアプリのトラフィックを簡単に管理する方法 を公開しました。
Docker Enterprise の Kubernetes にWindows Workerノードを追加する を公開しました。

新規CTA