Help us understand the problem. What is going on with this article?

Amazon EKS のチュートリアルで Kubernetes を理解する #02 アプリのデプロイ

はじめに

本記事は、以下の内容の続きになります。

前回、k8sクラスタを作成したので、そこにアプリケーションをデプロイしてみます。

前提条件

  • k8sのクラスタが作成されており、ワーカーノードが稼働していること。

チュートリアル:Guestbook

Kubernetesのサンプルアプリケーションである Guestbook を利用します。
フロントエンドの画面と、Redis(マスター/スレーブ構成)からなるアプリケーションです。

Guestbook の詳細については、以下のページを参照してください。

Pod/Serviceの登録

PodやServiceの定義ファイルは、すでに上記GitHubに登録されているので、それを利用してデプロイしていきます。

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/redis-master-controller.json
replicationcontroller/redis-master created

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/redis-master-service.json
service/redis-master created

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/redis-slave-controller.json
replicationcontroller/redis-slave created

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/redis-slave-service.json
service/redis-slave created

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/guestbook-controller.json
replicationcontroller/guestbook created

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/guestbook-service.json
service/guestbook created

登録されたサービスの状態を確認すると、以下のようになっています。

$ kubectl get services -o wide
NAME           TYPE           CLUSTER-IP       EXTERNAL-IP                                                               PORT(S)          AGE   SELECTOR
guestbook      LoadBalancer   10.100.197.132   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxx.us-west-2.elb.amazonaws.com   3000:31789/TCP   10s   app=guestbook
kubernetes     ClusterIP      10.100.0.1       <none>                                                                    443/TCP          63m   <none>
redis-master   ClusterIP      10.100.21.24     <none>                                                                    6379/TCP         43s   app=redis,role=master
redis-slave    ClusterIP      10.100.203.61    <none>                                                                    6379/TCP         26s   app=redis,role=slave

登録したサービスが一通り確認できますが、 guestbook のサービスのみ外部に公開される設定になっています。

また、kubectl get コマンドにより、PodやNodeの情報を確認することができます。
Guestbook のアプリケーションをクラスタにデプロイした結果、Guestbookのコンテナは3つ動作しており(レプリカ:3)、Redisは、マスタのコンテナが1つ(レプリカ:1)、スレーブのコンテナが2つ(レプリカ:2)、動作していることが分かります。

$ kubectl get pod,node
NAME                     READY   STATUS    RESTARTS   AGE
pod/guestbook-4gp4c      1/1     Running   0          13m
pod/guestbook-8d7k2      1/1     Running   0          13m
pod/guestbook-xfvck      1/1     Running   0          13m
pod/redis-master-q8568   1/1     Running   0          25m
pod/redis-slave-4g8c8    1/1     Running   0          14m
pod/redis-slave-xwjtn    1/1     Running   0          14m

NAME                                                STATUS   ROLES    AGE   VERSION
node/ip-192-168-0-148.us-west-2.compute.internal    Ready    <none>   73m   v1.14.7-eks-1861c5
node/ip-192-168-61-197.us-west-2.compute.internal   Ready    <none>   73m   v1.14.7-eks-1861c5
node/ip-192-168-88-66.us-west-2.compute.internal    Ready    <none>   73m   v1.14.7-eks-1861c5

さらに kubectl describe を使うことで、Podの構成や稼働状態などの詳細情報を確認できます。

$ kubectl describe pod guestbook

Web画面の表示

先の kubectl get services -o wide コマンドで確認した内容で、guestbookEXTERNAL-IP の部分をコピーしておきます。
また、PORT(S) の部分を見ると、このアプリケーションが、3000番ポートで公開されていることが分かります。

そのため、ブラウザを開き、以下のURLでアクセスすると、Guestbookの画面が表示されます。
これで、k8s上にデプロイしたアプリケーションが動作していることを確認できました。

http://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxx.us-west-2.elb.amazonaws.com:3000
amazon-eks-guestbook01.jpg

まとめ

今回は、k8sクラスタにアプリケーションをデプロイしてみました。
k8sが生成するLoadBalancerを介して、冗長化構成で動作しているアプリケーションにアクセスすることができました。

PodやServiceの定義ファイルの内容は、ここでは説明しませんが、実際にデプロイした内容と定義の内容を、合わせて確認すると、定義されている内容も理解しやすいかと思います。

次は、k8sクラスタのモニタリングを行ってみます。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした