この記事は、クラウドでのコンテナー化されたワークロードのデプロイと管理に関するウェビナーシリーズを補足するものです。 このシリーズでは、コンテナライフサイクルの管理、マルチコンテナアプリケーションのデプロイ、ワークロードのスケーリング、Kubernetesの操作など、コンテナの基本事項について説明します。 また、ステートフルアプリケーションを実行するためのベストプラクティスについても説明します。

このチュートリアルには、シリーズの3番目のセッションであるKubernetes入門の概念とコマンドが含まれています。

序章

このシリーズの前のチュートリアルでは、DockerComposeを使用したマルチコンテナーアプリケーションの管理について説明しました。 Dockerコマンドラインインターフェース(CLI)とDocker Composeは、単一のマシンで実行されているコンテナーをデプロイおよびスケーリングできますが、 Kubernetes は、複数のマシンまたはホストにデプロイされたマルチコンテナーアプリケーションを処理するように設計されています。

Kubernetesは、コンテナ化されたアプリケーションを管理するためのオープンソースのコンテナオーケストレーションツールです。 Kubernetes cluster には、マスターノードワーカーノードの2つの主要コンポーネントがあります。 マスターノードのセットは、ワーカーノードとデプロイされたアプリケーションを管理するコントロールプレーンとして機能します。 ワーカーノードは、コンテナ化されたアプリケーションの実行を担当するKubernetesクラスターの主力製品です。

マスターノードは、コマンドラインツールとリッチクライアントがアプリケーションの定義を含むjobを送信するためのAPIを公開します。 各アプリケーションは、1つ以上のコンテナー、ストレージ定義、およびそれらが公開される内部ポートと外部ポートで構成されます。 マスターノードで実行されているコントロールプレーンは、ワーカーノードの1つでコンテナをスケジュールします。 アプリケーションがスケーリングされると、コントロールプレーンは、使用可能なワーカーノードのいずれかで追加のコンテナーを起動します。

Kubernetesの詳細な概要については、チュートリアルKubernetesの概要を参照してください。

StackPointCloud は、ウェブベースのインターフェースを使用して3つのステップでKubernetesクラスターをデプロイします。 簡素化されたユーザーエクスペリエンスを通じて、Kubernetesのインストールと設定の複雑さを隠します。 DigitalOceanは、StackPointでサポートされているクラウドプラットフォームの1つです。 システムの管理と構成に精通していない開発者は、StackPointを使用してKubernetesをDigitalOceanにすばやくインストールできます。 サポートされている機能と価格の詳細については、それらのサイトを参照してください。

このチュートリアルでは、StackPointを介してDigitalOceanでKubernetesをセットアップおよび構成し、コンテナー化されたアプリケーションをクラスターにデプロイします。

前提条件

このチュートリアルに従うには、次のものが必要です。

  • を備えたローカルマシン curl コマンドがインストールされています。これを使用して、Kubernetesクラスターを管理するためのコマンドラインツールをダウンロードします。 The curl コマンドはすでにmacOSとUbuntu16.04にインストールされています。
  • DigitalOceanアカウント。 このチュートリアルでは、StackPointを使用してDigitalOceanアカウントに接続し、3つの1GBドロップレットをプロビジョニングします。

ステップ1-Kubernetesをインストールする

DigitalOceanへのKubernetesのインストールを開始するには、 Stackpoint.io にアクセスし、[ログイン]ボタンをクリックします。

これにより、IDプロバイダーを選択し、既存の資格情報を使用してログインできるページに移動します。 リストからDigitalOceanを選択し、DigitalOceanのユーザー名とパスワードを使用してログインします。

次のページで、利用可能なクラウドプラットフォームのリストからDigitalOceanを選択します。

これで、クラスターを構成できます。 [編集]ボタンをクリックして、DigitalOceanプロバイダーの設定を編集します。

これにより、[プロバイダーの構成]画面が表示されます。

Regionドロップダウンリストからお好みのリージョンを選択してください。 他の設定はデフォルト値のままにしておくことができます。 完了したら、送信をクリックします。

次の画面で、選択したクラスター名を入力し、送信をクリックします。

これでクラスターのインストールが開始され、クラスターの進行状況を追跡できるページが表示されます。 インストールには約15分かかります。

クラスタを構成したら、それを操作するためのコマンドラインツールを設定できます。

ステップ2–KubernetesCLIの設定

DigitalOceanで実行されているKubernetesクラスターと通信するには、開発マシンにコマンドラインツールが必要です。 使用します kubectl、KubernetesのCLI。

次のコマンドを実行してインストールします kubectl Googleのサーバーから:

  1. curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/darwin/amd64/kubectl

次の出力が表示されます。

Output
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 63.7M 100 63.7M 0 0 5441k 0 0:00:12 0:00:12 --:--:-- 4644k

The kubectl バイナリが現在のディレクトリにダウンロードされました。ダウンロードしたバイナリの権限を変更して、 /usr/local/bin ディレクトリなので、どこからでも実行できます。

  1. chmod +x ./kubectl
  2. sudo mv ./kubectl /usr/local/bin/kubectl

それでは、 kubectl Kubernetesクラスターのアプリ。 そのためには、Stackpointから構成ファイルをダウンロードする必要があります。 ブラウザのクラスタステータスページに戻ります。 クラスタの準備ができて安定していることを確認したら、次の図に示すようにクラスタ名をクリックします。

左側のメニューのkubeconfigリンクをクリックして、構成ファイルをローカルマシンにダウンロードします。

ターミナルに戻り、環境変数を設定します KUBECONFIG ダウンロードしたファイルのパスへ。 ファイルがにダウンロードされたと仮定します Downloads ホームディレクトリのフォルダに、次のコマンドを発行します。

  1. export KUBECONFIG=~/Downloads/kubeconfig

kubectl 構成済みです。クラスターと通信できることを確認しましょう。

ステップ3–Kubernetesのインストールを確認する

クライアントとともに完全に構成されたクラスターができたので、いくつかのコマンドを実行して環境を確認しましょう。

次のコマンドを実行して、クラスターに関する情報を取得します。

  1. kubectl cluster-info

次の出力が表示されます。

Output
Kubernetes master is running at https://139.59.17.180:6443 Heapster is running at https://139.59.17.180:6443/api/v1/namespaces/kube-system/services/heapster/proxy KubeDNS is running at https://139.59.17.180:6443/api/v1/namespaces/kube-system/services/kube-dns/proxy To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

出力は、クラスターが機能していること、およびKubernetesマスターノードが稼働中であることを確認します。

次に、マスターノードで実行されているすべてのコンポーネントの正常性を確認しましょう。 クラスターが構成されたばかりの場合、すべてのコンポーネントが正常な状態を示すまでに時間がかかる場合があります。 これらのコンポーネントは、コントロールプレーンとして機能するKubernetesマスターノードの一部です。

次のコマンドを実行します。

  1. kubectl get cs

次の出力が表示されます。

Output
NAME STATUS MESSAGE ERROR scheduler Healthy ok controller-manager Healthy ok etcd-0 Healthy {"health": "true"}

最後に、実行中のKubernetesクラスターのすべてのノードを一覧表示しましょう。

  1. kubectl get nodes

次のような出力が表示されます。

Output
NAME STATUS ROLES AGE VERSION spc52y2mk3-master-1 Ready master 29m v1.8.5 spc52y2mk3-worker-1 Ready <none> 22m v1.8.5 spc52y2mk3-worker-2 Ready <none> 22m v1.8.5

これにより、1つのマスターノードと2つのワーカーノードを持つクラスターで、アプリケーションをデプロイする準備ができていることが確認されます。 それでは、アプリケーションをクラスターにデプロイしましょう。

ステップ4–アプリケーションのデプロイとアクセス

単純なNginxWebサーバーを起動し、ローカルマシンからデフォルトのWebページにアクセスしてみましょう。 このコマンドを実行して、 Docker HubからNginxイメージをプルし、 myweb:

  1. kubectl run --image=nginx:latest myweb

このコマンドは、 docker run コマンド。ただし、Podと呼ばれるKubernetes固有のアーティファクトにコンテナをパッケージ化してデプロイします。 このシリーズの次のパートでは、ポッドについて詳しく学習します。

コマンドを実行すると、次の出力が表示されます。

Output
deployment "myweb" created

次に、ポッドがで作成されていることを確認します。 nginx 容器:

  1. kubectl get pods

次の出力が表示されます。

Output
NAME READY STATUS RESTARTS AGE myweb-59d7488cb9-jvnwn 1/1 Running 0 3m

ポッド内で実行されているWebサーバーにアクセスするには、ポッドをパブリックインターネットに公開する必要があります。 次のコマンドでこれを実現します。

  1. kubectl expose pod myweb-59d7488cb9-jvnwn --port=80 --target-port=80 --type=NodePort
Output
service "myweb-59d7488cb9-jvnwn" exposed

これで、ポッドは任意のポートのクラスターのすべてのノードで公開されます。 The --port--target-port スイッチは、Webサーバーが使用可能になるポートを示します。 スイッチ --NodePort クラスタ上の任意のノードを使用してアプリケーションにアクセスできるようにします。

のNodePortを取得するには myweb 展開するには、次のコマンドを実行します。

  1. kubectl get svc myweb-59d7488cb9-jvnwn
Output
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE myweb-59d7488cb9-jvnwn NodePort 10.3.0.119 <none> 80:31930/TCP 6m

この場合、NodePortはポートです 31930. すべてのワーカーノードは、このポートを使用してHTTPリクエストに応答します。 それをテストしてみましょう。

DigitalOceanコンソールを使用して、いずれかのワーカーノードのIPアドレスを取得します。

使用 curl ポート上のノードの1つにHTTPリクエストを送信するコマンド 31930.

  1. curl http://your_worker_1_ip_address:31930/

Nginxのデフォルトのホームページを含む応答が表示されます。

Output
<!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> ... Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>

コンテナ化されたアプリケーションがKubernetesクラスタに正常にデプロイされました。

結論

Kubernetesは人気のあるコンテナ管理プラットフォームです。 StackPointを使用すると、DigitalOceanにKubernetesを簡単にインストールできます。

このシリーズの次のパートでは、Kubernetesの構成要素について詳しく説明します。