概要
このドキュメントは、コンテナクラスター内のNode.js版のHello Worldのサービスをすばやく作成する方法を理解する助けとなるものです。Dockerイメージの作成方法に関する詳しいチュートリアルについては、dockerイメージの作成方法をご参照ください。 前提条件
クラスターを作成済みであること。詳細については、クラスターの作成をご参照ください。 ノードにログイン済みであり、そのノードにNode.jsがインストールされていること。
操作手順
コーディングとイメージ作成
アプリケーション作成
1. 以下のコマンドを順に実行し、hellonodeのフォルダを作成して入ります。
2. 以下のコマンドを順に実行し、server.jsファイルを新規作成して開きます。
3. iを押して編集モードに切り替え、以下の内容をserver.jsに入力します。
var http = require('http');
var handleRequest = function(request, response) {
console.log('Received request for URL: ' + request.url);
response.writeHead(200);
response.end('Hello World!');
};
var www = http.createServer(handleRequest);
www.listen(80);
Escを押して、:wqと入力し、ファイルを保存して戻ります。
4. 以下のコマンドを順に実行し、server.jsファイルを実行します。
5. Hello Worldプログラムをテストします。
方法1:ノードに再度ログインし、以下のコマンドを実行します。
次のように表示されれば、Hello Worldプログラムが実行されたことを示します。
方法2:Cloud Virtual Machine(CVM)インスタンスのパブリックIPアドレスでローカルブラウザを開き、設定済みのポート番号の形式でアクセスします。ポート番号は80です。
次のように表示されれば、Hello Worldプログラムが実行されたことを示します。
Dockerイメージ作成
1. 以下のコマンドを順に実行し、hellonodeフォルダにDockerfileファイルを作成します。
2. iを押して編集モードに切り替え、以下の内容をDockerfileファイルに入力します。
FROM node:4.4
EXPOSE 80
COPY server.js .
CMD node server.js
Escを押して、:wqと入力し、ファイルを保存して戻ります。
3. このノードをdockerにインストールし、dockerサービスを起動します。
yum install -y docker
systemctl start docker
4. 次のコマンドを実行して、イメージを作成します。
docker build -t hello-node:v1 .
5. 次のコマンドを実行して
、作成したhello-nodeイメージを確認します。 結果は次のように表示されれば、hello-nodeイメージが成功的に構築されたことを示し、このIMAGE IDを記録します。下図の通りです:
このイメージをqcloudイメージウエアハウスにアップロード
次のコマンドを順番に実行して、イメージをqcloudイメージウエアハウスにアップロードします。
docker tag IMAGEID ccr.ccs.tencentyun.com/ネームスペース/hello-node:v1
docker login ccr.ccs.tencentyun.com
docker push ccr.ccs.tencentyun.com/ネームスペース/hello-node:v1
説明
コマンドのIMAGEIDをイメージの確認に記録されたIMAGEIDに置き換えてください。 コマンド内のネームスペースを作成したネームスペースに置換してください。ネームスペースがない場合は、まずネームスペースを作成してください。詳細については、ネームスペースの作成をご参照ください。 次の結果が表示されれば、イメージが成功的にアップロードされたことを示します。
このイメージでHello Worldサービス作成
注意
Hello Worldサービスを使用して作成する前に、クラスターを持っている必要があります。クラスターがない場合は、まずクラスターを作成してください。詳細については、クラスターの作成をご参照ください。 1. TKEコンソールにログインし、左側ナビゲーションバーからクラスターを選択します。 2. クラスター管理ページで、作成したいサービスのクラスターIDを選択し、クラスター詳細ページに進みます。
3. ワークロード > Deploymentを選択し、Deploymentページで新規作成をクリックします。下の図に示すとおりです。
4. Deploymentの新規作成ページで、以下の情報に基づき、ワークロードの基本情報を設定します。下の図に示すとおりです。
ワークロード名:作成するワークロードの名前を入力します。ここでは、helloworldを例として使用します。
説明:ワークロードの関連情報を入力します。
ネームスペース:実際のニーズに応じて選択してください。
タグ:key = valueキーバリューペア。この例では、タグのデフォルト値は k8s-app = helloworldとします。
OSタイプ:実際のニーズに応じて選択します。ここでは、Linux を例として使用します。
データボリューム:実際のニーズに応じてワークロードのマウントボリュームを設定します。詳細については、Volume管理をご参照ください。 5. 以下の情報を参照して、「インスタンス内コンテナ」を設定してください。
5.1 インスタンス内コンテナ名を入力します。ここでは例としてhelloworld を使用します。
5.2 イメージを選択をクリックし、ポップアップボックスでマイイメージを選択し、検索ボックス機能でhelloworldイメージを探してOKをクリックします。
主なパラメータ情報は下記の通りです:
イメージバージョン(Tag):デフォルト値latestを使用します。
イメージプルポリシー:Always、IfNotPresentおよびNeverという3つのポリシーを提供しますので、必要に応じて選択してください。ここでは、何も設定していないデフォルトのポリシーを例として使用します。
6. 「インスタンス数」では、以下の情報に基づいてサービスのインスタンス数を設定します。下図に示すとおりです。
手動調節:インスタンス数を設定します。ここではインスタンス数を1とします。「+」または「-」をクリックすると、インスタンス数を制御できます。
自動調節:設定した条件のいずれかが満たされると、インスタンス(pod)を自動調整します。詳細については、サービスの自動スケーリングをご参照ください。 7. 以下の手順に従い、ワークロードへのアクセス設定を行います。
Service:「開始」にチェックを入れます。
サービスアクセス方法:「パブリックネットワークLBアクセス」を選択します。
ロードバランサ:実際のニーズに応じて選択します。
ポートマッピング:TCPプロトコルを選択し、コンテナポートとサービスポートをどちらも80に設定します。
注意
サービスが配置されているクラスターのセキュリティグループは、ノードネットワークとコンテナネットワークを開放している必要があり、さらにポート30000~32768も開放する必要があります。開放していないと、TKEを使用できないといった問題が発生する場合があります。詳細については、TKEセキュリティグループの設定をご参照ください。 8. Deploymentの作成をクリックし、Hello Worldサービスの作成を完了します。
Hello Worldサービスにアクセス
次の二つの方式でHello Worldサービスにアクセスできます。
Cloud Load Balancer IPでHello Worldサービスにアクセス
1. TKEコンソールにログインし、左側ナビゲーションバーからクラスターを選択します。 2. クラスター管理ページで、Hello WorldサービスのクラスターIDをクリックし、クラスター詳細ページに進みます。
3. Service ページで、サービスとルーティング > Serviceを選択します。
4. サービス管理ページで、helloworldサービスのCloud Load Balancer IPをコピーします。下図に示すとおりです
5. ブラウザに、helloworldサービスのCLB IPを貼り付けます。
サービスの名前でHello Worldサービスにアクセス
クラスター内のその他サービスやコンテナは、直接サービス名を介してアクセスできます。
Hello Worldサービス検証
サービスにアクセスする時、次のように表示されれば、Hello Worldサービスが作成されたことになります。
コンテナの作成に失敗した場合は、イベントに関するよくあるご質問をご参照ください。