Kubernetesクラスタ内外からS3 API互換でアクセスする場合に利用できます。HTTPSプロトコルなので、Kubernetes外部への連携も可能です。 Kubernetesで永続ストレージを利用する場合の注意点. Kubernetesクラスタ内外からS3 API互換でアクセスする場合に利用できます。HTTPSプロトコルなので、Kubernetes外部への連携も可能です。DRBDもKubernetesのストレージとして利用可能です。DRBD SDSを使うと、高可用ストレージを作ることができます。Cephとは異なり、ブロックストレージ専用ですが、書き込みと読み込みの性能がCephと比較して高速です。そのためデージーネットでは、ブロックストレージとしては、DRBD SDSを推薦しています。また、Cephが最低3台からの構成なのに対して、DRBD SDSは2台から構成可能なため、スモールスタートにも適しています。Kubernetesでは、マスターノードがPodの状態を管理しています。Kubernetesのマスターノードは、指定した数だけPodのレプリカを動作させます。レプリカが停止した場合には、Kubernetesのマスターノードが自動的に新しいレプリカを起動し、常に指定してした数のPodのレプリカを維持します。Kubernetesの永続ストレージとしてNFSサーバを利用する場合には、Podにマウントして利用します。複数のPodからアクセスすることができ、大規模で負荷分散が必要な場合に利用することができます。そのため、WWWサーバのサービスを提供するストレージの場合には、NFSサーバがよく利用されます。Kubernetesでは、様々な形式のストレージを利用することが可能です。KubernetesのPodには、StatelessとStatefulという2つ種類があります。Statelessは、ストレージを持たないPodで、Dockerコンテナが破棄されるとデータは消失します。そのため、Dockerコンテナで扱うデータを保管したい場合には、StatefulなPodを使い、永続ストレージを設定して保管する必要があります。ここでは、後者の永続ストレージについて紹介します。Kubernetesの永続ストレージとしてNFSサーバを利用することで、データの冗長性を維持することができます。NFSサーバ専用機器は、一般的に大きなディスク容量を持つ製品が多く、非常に高価です。特に、冗長性を維持できる製品は高価になります。このように、Kubernetesでは、同じDockerコンテナを別々のノードで動作させることができます。これにより冗長性が担保され、ホストが停止した場合の影響を最小限にすることができます。Kubernetesで永続ストレージを利用する場合には、必ずデータの冗長化を考慮する必要があります。Kubernetesの永続ストレージとしては、以下の3種類あります。アクセス方式の違いから次のように用途が異なってきます。Kubernetesの永続ストレージの冗長化を実現するためには、次のような仕組みが必要になります。KubernetesのストレージにCephを利用すると、動的に拡張していくことができる高可用ストレージを実現することができます。Cephは、データを任意のサイズに分割して分散配置でき、冗長性も確保することができます。また、ファイルストレージにもブロックストレージにも対応できるという特徴があります。オブジェクトストレージは、ファイルストレージよりも、データの分散管理や複製が行いやすく、大容量のデータを保存するのに適しています。Cephで分散ストレージを構成する場合には、最低3台の構成となります。Minioはシンプルなオブジェクトストレージです。一台から起動可能で容易に利用できます。S3互換のインタフェースからファイルのアップロードが可能です。ただし、ノード追加やストレージ容量の増加ができないため、あらかじめ決まったサイズの中で運用していくことになります。Minioでノードをまたいでデータを冗長化するためには、最低3台の構成となります。Kubernetesが扱うデータの整合性を考慮することができます。書き込み要求の排他性により1台のPodのみからアクセスする場合に利用できます。RDBなどの用途に向いています。 KubernetesにコンテナイメージをデプロイするとPodが配置されますが、このままではPodに対して内部外部を問わずアクセスできません。 Kubernetesクラスター外部へのサービスの公開. 今回はKubernetesのPodでWebサービスを起動した時に、外部HAProxyを使ってVIPでアクセスする方法をまとめたいと思います。 前提条件は次の通りです。 JujuとMAASで構築したKubernetesを想定 nodePortを固定してPodを作成している 外部HAProxyサーバーは固定のIPアドレスを…
このページでは、外部IPアドレスを公開するKubernetesのServiceオブジェクトを作成する方法を示します。 始める前に kubectlをインストールしてください。 Kubernetesクラスターを作成する際に、Google Kubernetes EngineやAmazon Web Servicesのようなクラウドプロバイダーを使用します。
エンジニアのキャリア、技術トレンド、アウトプット方法について発信中|月間3万PVの技術ブログ運営中|エンジニア兼PMが得意|ブロックチェーンとバックエンドが主|このInternalIPはPodが起動されるたびに異なるものが割り当てられるので注意が必要です。Kubernetesのクラスタ内の通信についてわからなことだらけだったのでまとめて残して置きたいと思います。Kubernetesは便利ですがブラックボックスなとこが多いので今後も学んだことを少しずつまとめていきたいと思います。Dockerの使い方から説明されているので初心者の方も安心して学べる書籍です。もうひとつの②では、外部IPを使用します。外部IPにはグローバルとリージョンという2つの種類があります。まず一般的な④についてですが、ここではPodに指定されたLabelを使用してKubernetesが自動でアクセスを割り振っています。ServiceとPodを作成する設定ファイルにIPの指定は必要ありません。今回はリージョンのIPアドレスをServiceに設定します。設定方法はServiceを作る設定ファイルのLoadBalancerIpに設定するだけです。Podはnodeにもアクセスすることができます。nodeもただのインスタンスなのでアクセスできて当然ではありますね。いまのところこのアクセスでの使い道がわからないので詳しい人がいたら教えてほしいです。クラスタ内のPod同士は配置されたnodeが違ってもお互いにアクセスすることができます。通信にはPodに割り当てられたInternal IPでアクセスできます。下記はKubernetes Cluster内のServiceとPodの通信経路をまとめたものです。順番に説明していきます。Kubernetesに関してはPod, Service, Deploymentなどを順を追って説明し、実際に動かすところまでを解説しているので非常に実践的な内容となっています。これからKuebernetesを使ってサービスを開発してみたい方にとって最初のよい手助けとなると思います。是非読んでみてください。自分はここでグローバルの外部IPを設定していて、Podからアクセスできなくて時間を潰してしまったので気をつけてください。 Kubernetesでは、マスターノードがPodの状態を管理しています。 Kubernetesに関してはPod, Service, Deploymentなどを順を追って説明し、実際に動かすところまでを解説しているので非常に実践的な内容となっています。 これからKuebernetesを使ってサービスを開発してみたい方にとって最初のよい手助けとなると思います。是非読んでみてください。 入門 Kubernetes. ここでは、クラスター内で稼働しているアプリケーションに外部からアクセスするために、KubernetesのServiceオブジェクトを作成する方法を紹介します。 例として、2つのインスタンスから成るアプリケーションへのロードバランシングを扱います。 始める前に Kubernetesクラスターが必要、か …
クラスタでHello Worldアプリケーションを稼働させます:上記のファイルを使用し、アプリケーションのDeploymentを作成します:Hello Worldアプリケーションが稼働しているDeployment、ReplicaSet、Podを削除するには、以下のコマンドを実行します:選択したノード上で、NodePortの値でのTCP通信を許可するファイヤーウォールを作成します。NodePortの値が31568の場合、31568番のポートを利用したTCP通信を許可するファイヤーウォールを作成します。クラウドプロバイダーによって設定方法が異なります。Hello World applicationにアクセスするために、Nodeのアドレスとポート番号を使用します:アプリケーションDeploymentの設定ファイルは以下の通りです:NodePortの値を記録しておきます。上記の例では、31496です。Hello Worldアプリーションが稼働しているPodを表示します:Deploymentを公開するServiceオブジェクトを作成します:ここでは、クラスター内で稼働しているアプリケーションに外部からアクセスするために、KubernetesのServiceオブジェクトを作成する方法を紹介します。例として、2つのインスタンスから成るアプリケーションへのロードバランシングを扱います。