Kubernetes サービスのアドレス範囲:これは、Kubernetes によってクラスターの内部サービスに割り当てられる仮想 IP のセットです。 Kubernetes service address range : This is the set of virtual IPs that Kubernetes assigns to internal services in your cluster. Azure Kubernetes Service (AKS) ロード バランサーで静的パブリック IP アドレスと DNS ラベルを使用する Use a static public IP address and DNS label with the Azure Kubernetes Service (AKS) load balancer. Kubernetesではサービスを作成してIPアドレスを割り当てることで、Podに対し固定されたIPアドレスを割り振ることができる。しかし、基本的にはこのIPアドレスに対し外部からの接続は行えない。 03/09/2020; この記事の内容 これにより、Podが別のPodにアクセスする際に、PodのIPアドレスを指定してアクセスするのではなく、アクセス先のPodサービス名でアクセスすることが可能になります。この機能はKubernetes上で「Service」と呼ばれるリソースで実現します。 実際には、KubernetesはPodスコープでIPアドレスを適用します-Pod内のコンテナーはIPアドレスを含めてネットワーク名前空間を共有します。 これは、Pod内のコンテナーがすべて、localhost上の互いのポートに到達できることを意味します。
前回で Kubernetes のクラスターを構築したので、まずは Pod を作成してみます。 なお、前回は Kubernetes の v0.19.3 を使ってましたが、2015/7/21 に v1 が正式リリースされたのを受けて、今回は v1.0.1 を使っています。 Pod とは? Pod内のコンテナはIPアドレスとポートスペースを共有し、常に同じ場所に配置され、同じスケジュールに入れられ、同じノード上の共有コンテキストで実行されます。 Podは、Kubernetesプラットフォームの原子単位です。 Kubernetes は、各ポッドに一意の IP アドレスが指定されるように、各ノードに IP アドレスの範囲(CIDR ブロック)を割り当てます。CIDR ブロックのサイズは、1 ノードあたりの最大ポッド数と対応し … clusterIP にIPアドレスを指定することで指定されたIPアドレスでServiceが作成される。 このページでは、外部IPアドレスを公開するKubernetesのServiceオブジェクトを作成する方法を示します。 始める前に kubectlをインストールしてください。 Kubernetesクラスターを作成する際に、Google Kubernetes EngineやAmazon Web Servicesのようなクラウドプロバイダーを使用します。 自分はここでグローバルの外部IPを設定していて、Podからアクセスできなくて時間を潰してしまったので気をつけてください。Kubernetesに関してはPod, Service, Deploymentなどを順を追って説明し、実際に動かすところまでを解説しているので非常に実践的な内容となっています。これからKuebernetesを使ってサービスを開発してみたい方にとって最初のよい手助けとなると思います。是非読んでみてください。Kubernetesは便利ですがブラックボックスなとこが多いので今後も学んだことを少しずつまとめていきたいと思います。Kubernetesのクラスタ内の通信についてわからなことだらけだったのでまとめて残して置きたいと思います。エンジニアのキャリア、技術トレンド、アウトプット方法について発信中|月間3万PVの技術ブログ運営中|エンジニア兼PMが得意|ブロックチェーンとバックエンドが主|今回はリージョンのIPアドレスをServiceに設定します。設定方法はServiceを作る設定ファイルのLoadBalancerIpに設定するだけです。まず一般的な④についてですが、ここではPodに指定されたLabelを使用してKubernetesが自動でアクセスを割り振っています。ServiceとPodを作成する設定ファイルにIPの指定は必要ありません。Dockerの使い方から説明されているので初心者の方も安心して学べる書籍です。このInternalIPはPodが起動されるたびに異なるものが割り当てられるので注意が必要です。クラスタ内のPod同士は配置されたnodeが違ってもお互いにアクセスすることができます。通信にはPodに割り当てられたInternal IPでアクセスできます。もうひとつの②では、外部IPを使用します。外部IPにはグローバルとリージョンという2つの種類があります。下記はKubernetes Cluster内のServiceとPodの通信経路をまとめたものです。順番に説明していきます。Podはnodeにもアクセスすることができます。nodeもただのインスタンスなのでアクセスできて当然ではありますね。いまのところこのアクセスでの使い道がわからないので詳しい人がいたら教えてほしいです。
下記はKubernetes Cluster内のServiceとPodの通信経路をまとめたものです。順番に説明していきます。 Pod同士のアクセス.
なお、前回は Kubernetes の v0.19.3 を使ってましたが、2015/7/21 に v1 が正式リリースされたのを受けて、今回は v1.0.1 を使っています。Minion 内で、実行されているコンテナを表示。確かに、同一 Minion 内で nginx と mongodb のコンテナが動作している。作成された Pod には IP アドレスが割り振られている(下記コマンドの 10.244.2.5)。だが、この IP には、作業用インスタンスのような外部からは接続できない。接続確認するには、いったん Master か Minon に乗り込むのが簡単だが、今度は Master に接続してみた。作業用インスタンスで Pod の定義ファイルを作成する。まずは、nginx のコンテナ1つだけを含む Pod を定義。 なお、定義は yaml か json で書けるが、ここでは yaml で書いている。構築後、作業用インスタンス上の kubectl コマンドにパスを通しておく。例えばこんな感じ。なお、今回構築した環境は以下のようなもの。VPCが分かれているのは、Kubernetes のセットアップスクリプトが独自のVPCを作成するため。Minion で実行されているコンテナを表示。確かに、nginx のコンテが動作している。それぞれのコンテナ内のネットワーク設定がどうなっているか見てみる。ここでは、docker exec コマンドを使って、各コンテナ内で ip addr コマンドを実行させた。確かに同じ設定になっていることが分かる。Pod が配備された Minion(172.20.0.232)が分かったので、作業用インスタンスから SSH で接続してみる。Pod が作成されたことは分かったが、コンテナがどこのノード(Minion)に作成されたかは Pod の詳細情報を表示すると分かる。次に、これらのコンテナが配備されている Minion に乗り込んでみる。複数のコンテナ(nginx と mongo) を含む Pod を作成してみる。作成するだけでなく、ネットワーク設定が共有されているかも確認する。まずは、Pod の定義を作成。いくつかのコンテナをグループ化したもの。Kubernetes は Pod 単位で作成、開始、停止、削除といった操作を行う(コンテナ単位では操作しない)。 そのため、1つのコンテナを作成したいときも、「コンテナが1つ含まれるPod」を作成することになる。