【Kubernetes】podに外部からアクセスするにはService を使う no.3
こんにちは。まゆみです。
Kubernetesについての記事をシリーズで書いています
前回の記事で、Kubernetesを使ってdeploymentオブジェクトを作る方法を書きました。
それによって、podが作られpodのなかにあるContainerも実行されるのですが、 今の段階では外部からPodにアクセスする事ができません。
なぜならば、podにディフォルトで付与されるIPアドレスはinternal IP アドレスになるからです。
では、Clusterの外部から、どのようにしてPodのなかのアプリケーションにアクセスしたら良いのでしょうか?
今回の記事ではその解決方法を書いていこうと思います
(ClusterにPodを作っているという前提でこの記事を書いています。前回の記事でPodを作ってダッシュボードでClusterの状態を確かめるところまでしたので、今回はその続きになります)
ではさっそくはじめていきますね。
kubectl exposeを使う
引用元: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
kubectl get services のコマンドで2つのオブジェクトが表示されていますが、下のkubernetesと書かれているものが、ディフォルトで自動的に作られるものになります。そしてTYPEも『ClusterIP』になっています
あなたが先ほどのプロセスで作ったserviceオブジェクト(ここでは、『first-app』という名前で表示されている)に、EXTERNAL-IPの欄がありますが、常にという状態になっていて、external-IP アドレスが使えません。
ですが、次のコマンドで、今作ったservice オブジェクトの詳細を見ることができ、その中に 外部からアクセスできるIPアドレスの情報が載っています
minikube service <serviceオブジェクト名>
無事にアクセスできました
まとめ
今回の記事はここで締めくくらせていただきますね。
次回の記事では、Clusterがクラッシュした時にKubernetesがどのように対応してくれるのか書いていこうと思います
よろしくお願いします \(^o^)/
Author And Source
この問題について(【Kubernetes】podに外部からアクセスするにはService を使う no.3), 我々は、より多くの情報をここで見つけました https://qiita.com/Mayumi_Pythonista/items/7203effbb8b7d3748696著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .