ウェビナーシリーズ:Kubernetes入門
この記事は、クラウドでのコンテナー化されたワークロードのデプロイと管理に関するウェビナーシリーズを補足するものです。 このシリーズでは、コンテナライフサイクルの管理、マルチコンテナアプリケーションのデプロイ、ワークロードのスケーリング、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クラスターを管理するためのコマンドラインツールをダウンロードします。 Thecurl
コマンドはすでに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のサーバーから:
- 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
ディレクトリなので、どこからでも実行できます。
- chmod +x ./kubectl
- sudo mv ./kubectl /usr/local/bin/kubectl
それでは、 kubectl
Kubernetesクラスターのアプリ。 そのためには、Stackpointから構成ファイルをダウンロードする必要があります。 ブラウザのクラスタステータスページに戻ります。 クラスタの準備ができて安定していることを確認したら、次の図に示すようにクラスタ名をクリックします。
左側のメニューのkubeconfigリンクをクリックして、構成ファイルをローカルマシンにダウンロードします。
ターミナルに戻り、環境変数を設定します KUBECONFIG
ダウンロードしたファイルのパスへ。 ファイルがにダウンロードされたと仮定します Downloads
ホームディレクトリのフォルダに、次のコマンドを発行します。
- export KUBECONFIG=~/Downloads/kubeconfig
と kubectl
構成済みです。クラスターと通信できることを確認しましょう。
ステップ3–Kubernetesのインストールを確認する
クライアントとともに完全に構成されたクラスターができたので、いくつかのコマンドを実行して環境を確認しましょう。
次のコマンドを実行して、クラスターに関する情報を取得します。
- kubectl cluster-info
次の出力が表示されます。
OutputKubernetes 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マスターノードの一部です。
次のコマンドを実行します。
- kubectl get cs
次の出力が表示されます。
OutputNAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-0 Healthy {"health": "true"}
最後に、実行中のKubernetesクラスターのすべてのノードを一覧表示しましょう。
- kubectl get nodes
次のような出力が表示されます。
OutputNAME 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
:
- kubectl run --image=nginx:latest myweb
このコマンドは、 docker run
コマンド。ただし、Podと呼ばれるKubernetes固有のアーティファクトにコンテナをパッケージ化してデプロイします。 このシリーズの次のパートでは、ポッドについて詳しく学習します。
コマンドを実行すると、次の出力が表示されます。
Outputdeployment "myweb" created
次に、ポッドがで作成されていることを確認します。 nginx
容器:
- kubectl get pods
次の出力が表示されます。
OutputNAME READY STATUS RESTARTS AGE
myweb-59d7488cb9-jvnwn 1/1 Running 0 3m
ポッド内で実行されているWebサーバーにアクセスするには、ポッドをパブリックインターネットに公開する必要があります。 次のコマンドでこれを実現します。
- kubectl expose pod myweb-59d7488cb9-jvnwn --port=80 --target-port=80 --type=NodePort
Outputservice "myweb-59d7488cb9-jvnwn" exposed
これで、ポッドは任意のポートのクラスターのすべてのノードで公開されます。 The --port
と --target-port
スイッチは、Webサーバーが使用可能になるポートを示します。 スイッチ --NodePort
クラスタ上の任意のノードを使用してアプリケーションにアクセスできるようにします。
のNodePortを取得するには myweb
展開するには、次のコマンドを実行します。
- kubectl get svc myweb-59d7488cb9-jvnwn
OutputNAME 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
.
- 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の構成要素について詳しく説明します。