Kubernetes(k8s)を学ぼう! Microservices編~Networking~

こんにちは。KOUKIです。k8s学習中のWebエンジニアです。

KubernetesでMicroservicesのデプロイ方法を学びましょう。

本記事では、Networkingについて解説します。

尚、今回もMinikubeを使いますので、以下の記事でインストール&起動してください。
※ MacおよびChromeで検証します。

参考

Udemyの「Kubernetes Hands-On – Deploy Microservices to the AWS Cloud」コースを参考にしています。

解釈は私が勝手に付けているので、本物をみたい場合は受講してみてください。

API OVERVIEWも参考になります。

前回

現在の状況は、以下のようになってます。

Networking

コンテナ間で通信することを考えてみましょう。

例えば、一つのPodにWebAppコンテナとMySQLコンテナが稼働しているとしましょう。

このような場合は、localhostで接続できるので通信制御は楽です。

しかし、Pod内に複数のコンテナを稼働させるやり方は、Pod管理を複雑にします。

そのため、Serviceで分ける方法が推奨されます。

これならPod管理が楽になります。

kube-dns

しかし、Service間でどうやってお互いの存在を認識するのでしょうか?

実は、KubernetesにはDNSの仕組み(kube-dns)が提供されています。

kube-dnsは、Kubernetesが自動で作成してくれます。

Namespace

Kubernetesには、Namespace(名前空間)があります。

この機能のおかげで、一つのCluster内で機能ごとにアプリケーションを区切ることなどができます。

Namespaceを指定しない場合、「default」という名前のNamespaceが指定されます。

Namespaceは、下記のコマンドで確認できます。

結構たくさんのNamespaceがありますね。

Namespaceを指定して、Podの情報を取得しましょう。

kube-system Namespaceの全ての情報を表示しました。kube-dns Serviceもここに存在してますね。

もう一度お伝えしますが、Namespaceを指定しない場合、「default」の情報が取得されます

これまで作成したPodはNamespaceを指定していないので、defaultのNamespaceで稼働しています。

Networking Test

NetWorkingのTest用にMySQLのServiceとPodを設置しましょう。

ServiceのTypeは「ClusterIP」を指定しています。

ClusterIP タイプの Service を作成すると、Kubernetes が、クラスタ内のノードからアクセス可能な固定の IP アドレスを作成します。これにより、Pod間通信が可能なはずです。

applyしましょう。

webapp Podにアクセスして、Pod内部からMySQL Podに通信できるか確かめてみましょう。

OKですね。

次回

次回は、アプリケーションのデプロイについて学びましょう。

記事まとめ

参考

コメントを残す