Serviceによるアプリの公開
Podに安定したネットワークエンドポイントを提供するServiceの役割を理解します。
「Serviceによるアプリの公開」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
Pod: 今日存在しても明日は消える
Kubernetesにおいて、Podはデプロイ可能な最小単位です。Podは一時的な存在として設計されており、Kubernetesによっていつでも作成、破棄、移動される可能性があります。
この柔軟性は高い回復力につながりますが、課題も生じます。絶えず変化するPodを、他のアプリケーションがどのようにして確実に見つけ、通信すればよいのでしょうか。
変動する宛先の問題
すべてのPodには固有のIPアドレスが割り当てられます。Podが再起動またはスケールすると、通常は新しいIPアドレスが割り当てられます。PodのIPに直接接続するのは、動く標的を狙うようなものです。
複数のPodで構成されたWebアプリケーションを想像してください。1つのPodが再起動するとIPが変わり、他のサービスやユーザーからの接続が切れてしまいます。
Serviceが問題を解決
そこで登場するのがKubernetes Serviceです。Serviceは、Podの集合に対して安定した固定のネットワークエンドポイントを提供します。
背後にあるPodの個々のアドレスが絶えず変化していても、アプリケーションに恒久的な住所を提供するものだと考えてください。
Podの安定したゲートウェイ
Serviceは、Podのグループに対する抽象化レイヤーとして機能します。Podのグループに、単一で一貫したIPアドレスとDNS名を提供します。
- 他のアプリケーションは、この安定したServiceのIPまたは名前を使用します。
- Serviceは、管理対象の正常なPodへトラフィックをルーティングします。
- これにより、クライアントと個々のPodのIPが切り離されます。
ServiceとPodの接続
Serviceは、どのPodへトラフィックをルーティングするかをどのように判断するのでしょうか。ラベルとセレクターを使用します。
Serviceを定義するときに、selectorを指定します。これらのラベルに一致するPodは、自動的にそのServiceのグループに加わります。
この動的な関連付けにより、新しいPodは自動的に追加され、正常でないPodは削除されます。
ネットワークトラフィックの振り分け
Serviceは、ネットワークトラフィックの流れを管理します。ポートを定義し、受信したリクエストをPod上の正しいポートへ割り当てます。
主なポートの概念:
port: Service自体がリッスンするポートです。targetPort: Serviceがトラフィックを転送するPod上のポートです。
Serviceマニフェストの作成
ほとんどのKubernetesリソースと同様に、ServiceはYAMLファイルを使って定義します。基本的な構造を見てみましょう。
apiVersion:v1kind:Servicemetadata: 名前、ラベルspec:selectorやportsを含む、主要な定義を記述します。
最初のService: ClusterIP
内部通信で最も一般的なServiceタイプはClusterIPです。クラスター内部のIPアドレスでServiceを公開します。
シンプルなWebアプリケーションの例を見てみましょう。
apiVersion: v1
kind: Service
metadata:
name: my-web-service
spec:
selector:
app: my-webapp
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: ClusterIPServiceのデプロイ
ServiceのYAMLを用意したら、PodやDeploymentの場合と同じように、kubectlを使ってクラスターにデプロイできます。
このコマンドは、定義に基づいてServiceを作成するようKubernetesに指示します。
kubectl apply -f service.yaml新しいServiceの利用
デプロイ後、Serviceにはクラスター内で安定したIPとDNS名が割り当てられます。これで他のPodから、この名前を使ってアプリケーションにアクセスできます。
たとえば、別のPodはmy-web-service:80に接続でき、Serviceが正しいmy-webapp Podへルーティングします。
Serviceの確認
Kubernetes Serviceが、変化するPodへの安定したネットワークアクセスを提供することを学びました。
Kubernetes Serviceの主な役割を最もよく表しているものは、次のうちどれですか。
まとめ: 安定した接続
よくできました。このレッスンでは、Kubernetes Serviceについて学びました。
- Podは一時的な存在で、IPが動的に変化します。
- ServiceはPodに対して安定したネットワークエンドポイントを提供します。
- セレクターを使って対象のPodを見つけます。
- Serviceは外部の
portを内部のtargetPortに割り当てます。 - ClusterIPは内部通信でよく使われるタイプです。
次は、さまざまなServiceタイプとその用途について詳しく学びます。
よくある質問
「Serviceによるアプリの公開」レッスンは無料ですか?
はい。「Serviceによるアプリの公開」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「Serviceによるアプリの公開」で何を学びますか?
Podに安定したネットワークエンドポイントを提供するServiceの役割を理解します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「Serviceによるアプリの公開」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。