LoginSignup
1
0

More than 1 year has passed since last update.

【Kubernetes】podに外部からアクセスするにはService を使う no.3

Posted at

名称未設定のデザイン (12).png

こんにちは。まゆみです。

Kubernetesについての記事をシリーズで書いています

前回の記事で、Kubernetesを使ってdeploymentオブジェクトを作る方法を書きました。

それによって、podが作られpodのなかにあるContainerも実行されるのですが、 今の段階では外部からPodにアクセスする事ができません。

なぜならば、podにディフォルトで付与されるIPアドレスはinternal IP アドレスになるからです。

2021-07-18_10-24-02.png

では、Clusterの外部から、どのようにしてPodのなかのアプリケーションにアクセスしたら良いのでしょうか?

今回の記事ではその解決方法を書いていこうと思います

(ClusterにPodを作っているという前提でこの記事を書いています。前回の記事でPodを作ってダッシュボードでClusterの状態を確かめるところまでしたので、今回はその続きになります)

ではさっそくはじめていきますね。

kubectl exposeを使う

2021-07-20_8-31-02.png
引用元:Kubernetesドキュメント

ディフォルトのままでは、deploymentオブジェクトは外部からアクセスできないので

kubectl expose deployment <deployment名> --port=<ポート番号> --type=<タイプ>

とコマンドを打ち Serviceオブジェクトを作ります。

『expose(公開する/露出する)』という言葉の意味通り、exposeを使えば、オブジェクトを外部からアクセスできるようにします

--portオプションには、コンテナ化したアプリに開けられたポート番号を書きます。

--type=に書く<タイプ>には、次のものがあります

--type=ClusterIP (ディフォルトのタイプであり、クラスターの内部からしかアクセスできない)
--type=NodePort
--type=LoadBalancer

今回は、上記の3つのタイプのうちClusterIPでは外部からアクセスできません。

トラフィックが増えPodが増えた時のことを考えて今回はLoadBalancerをタイプとして書こうと思います。

これでService オブジェクトができました。

Service オブジェクトを見てみましょう

kubectl get services

2021-07-18_13-55-58.png

kubectl get services のコマンドで2つのオブジェクトが表示されていますが、下のkubernetesと書かれているものが、ディフォルトで自動的に作られるものになります。そしてTYPEも『ClusterIP』になっています

あなたが先ほどのプロセスで作ったserviceオブジェクト(ここでは、『first-app』という名前で表示されている)に、EXTERNAL-IPの欄がありますが、常にという状態になっていて、external-IP アドレスが使えません。

ですが、次のコマンドで、今作ったservice オブジェクトの詳細を見ることができ、その中に 外部からアクセスできるIPアドレスの情報が載っています

minikube service <serviceオブジェクト名>

2021-07-20_8-36-05.png

無事にアクセスできました

2021-07-20_8-39-26.png

まとめ

今回の記事はここで締めくくらせていただきますね。

次回の記事では、Clusterがクラッシュした時にKubernetesがどのように対応してくれるのか書いていこうと思います

よろしくお願いします \(^o^)/

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0