第23章 Service [v1]


説明
サービスは、プロキシーがリッスンするローカルポート (たとえば 3306) と、プロキシーを介して送信された要求に応答する Pod を決定するセレクターで設定されるソフトウェアサービス (たとえば、mysql) の名前付き抽象化です。
タイプ
object

23.1. 仕様

プロパティータイプ説明

apiVersion

string

APIVersion はオブジェクトのこの表現のバージョンスキーマを定義します。サーバーは認識されたスキーマを最新の内部値に変換し、認識されない値は拒否することがあります。詳細は、https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources を参照してください。

kind

string

kind はこのオブジェクトが表す REST リソースを表す文字列の値です。サーバーはクライアントが要求を送信するエンドポイントからこれを推測できることがあります。これを更新することはできません。CamelCase を使用します。詳細は、https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds を参照してください。

metadata

ObjectMeta

標準オブジェクトのメタデータ。詳細は、https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata を参照してください。

spec

object

ServiceSpec は、ユーザーがサービスで作成する属性を記述します。

status

object

ServiceStatus は、サービスの現在のステータスを表します。

23.1.1. .spec

説明
ServiceSpec は、ユーザーがサービスで作成する属性を記述します。
タイプ
object
プロパティータイプ説明

allocateLoadBalancerNodePorts

ブール値

locateLoadBalancerNodePorts は、NodePorts がタイプ LoadBalancer のサービスに自動的に割り当てられるかどうかを定義します。(デフォルトは True)クラスターロードバランサーが NodePorts に依存していない場合は、false に設定できます。呼び出し元が (値を指定して) 特定の NodePort を要求した場合、このフィールドに関係なく、それらの要求は尊重されます。このフィールドは、タイプ LoadBalancer のサービスに対してのみ設定でき、タイプが他のタイプに変更された場合にクリアされます。

clusterIP

string

clusterIP はサービスの IP アドレスであり、通常はランダムに割り当てられます。アドレスが手動で指定され、範囲内にあり (システム設定に従って)、使用されていない場合、アドレスはサービスに割り当てられます。そうしないと、サービスの作成が失敗します。タイプフィールドも ExternalName に変更されている場合 (このフィールドは空白である必要があります)、またはタイプフィールドが ExternalName から変更されている場合 (この場合、このフィールドはオプションで指定できます) を除き、更新によってこのフィールドを変更することはできません。)。有効な値は、なし、空の文字列 ("")、または有効な IP アドレスです。これをなしに設定すると、ヘッドレスサービス (仮想 IP なし) になります。これは、直接エンドポイント接続が優先され、プロキシーが不要な場合に役立ちます。タイプ ClusterIP、NodePort、および LoadBalancer にのみ適用されます。タイプ ExternalName のサービスを作成するときにこのフィールドを指定すると、作成は失敗します。このフィールドは、サービスを ExternalName タイプに更新するときに消去されます。詳細: https://github.com/thanos-io/thanos/blob/master/docs/components/rule.md#partial-response

clusterIPs

array (string)

ClusterIPs は、このサービスに割り当てられた IP アドレスのリストであり、通常はランダムに割り当てられます。アドレスが手動で指定され、範囲内にあり (システム設定に従って)、使用されていない場合、アドレスはサービスに割り当てられます。そうしないと、サービスの作成が失敗します。タイプフィールドも ExternalName に変更されている場合 (このフィールドは空である必要があります)、またはタイプフィールドが ExternalName から変更されている場合 (この場合、上記のように、このフィールドはオプションで指定できます) でない限り、このフィールドは更新によって変更できません。)。有効な値は、なし、空の文字列 ("")、または有効な IP アドレスです。これをなしに設定すると、ヘッドレスサービス (仮想 IP なし) になります。これは、直接エンドポイント接続が優先され、プロキシーが不要な場合に役立ちます。タイプ ClusterIP、NodePort、および LoadBalancer にのみ適用されます。タイプ ExternalName のサービスを作成するときにこのフィールドを指定すると、作成は失敗します。このフィールドは、サービスを ExternalName タイプに更新するときに消去されます。このフィールドが指定されていない場合、clusterIP フィールドから初期化されます。このフィールドを指定する場合、クライアントは clusterIPs0 と clusterIP の値が同じであることを確認する必要があります。

このフィールドには、最大 2 つのエントリー (デュアルスタック IP、順序を問わず) を保持できます。これらの IP は、ipFamilies フィールドの値に対応している必要があります。clusterIP と ipFamilies はどちらも、ipFamilyPolicy フィールドによって管理されます。詳細: https://github.com/thanos-io/thanos/blob/master/docs/components/rule.md#partial-response

externalIPs

array (string)

externalIPs は、クラスター内のノードがこのサービスのトラフィックも受け入れる IP アドレスのリストです。これらの IP は Kubernetes によって管理されていません。ユーザーは、トラフィックがこの IP を持つノードに確実に到着するようにする責任があります。一般的な例は、Kubernetes システムの一部ではない外部ロードバランサーです。

externalName

string

externalName は、検出メカニズムがこのサービスのエイリアスとして返す外部参照です (DNS CNAME レコードなど)。プロキシーは含まれません。小文字の RFC-1123 ホスト名 (https://tools.ietf.org/html/rfc1123) である必要があり、タイプ は ExternalName である必要があります。

externalTrafficPolicy

string

externalTrafficPolicy は、ノードがサービスの外部に面したアドレス (NodePort、ExternalIP、および LoadBalancer IP) の 1 つで受信するサービストラフィックを分散する方法を記述します。"Local" に設定すると、プロキシーは、外部ロードバランサーがノード間のサービストラフィックのバランスを取ることを想定した方法でサービスを設定します。そのため、各ノードは、クライアントのソース IP をマスカレードすることなく、サービスの node-local エンドポイントにのみトラフィックを配信します。(エンドポイントのないノードに誤って送信されたトラフィックはドロップされます。)デフォルト値の "Cluster" では、すべてのエンドポイントに均等にルーティングするという標準動作が使用されます (トポロジーやその他の機能によって変更される可能性があります)。クラスター内から外部 IP またはロードバランサー IP に送信されるトラフィックは常にクラスターセマンティクスを取得しますが、クラスター内から NodePort に送信するクライアントは、ノードの選択時にトラフィックポリシーを考慮する必要がある場合があることに注意してください。

使用可能な列挙値: - "Cluster" - "Cluster" はトラフィックをすべてのエンドポイントにルーティングします。- "Local" - "Local" は、トラフィックを受信したノードと同じノード上のエンドポイントにのみルーティングし、トラフィックの送信元 IP を保持します (ローカルエンドポイントがない場合はトラフィックをドロップします)。

healthCheckNodePort

integer

healthCheckNodePort は、サービスのヘルスチェック nodePort を指定します。これは、type が LoadBalancer に設定され、externalTrafficPolicy が Local に設定されている場合にのみ適用されます。値が指定され、範囲内にあり、使用されていない場合、その値が使用されます。指定しない場合、値が自動的に割り当てられます。外部システム (ロードバランサーなど) は、このポートを使用して、特定のノードがこのサービスのエンドポイントを保持しているかどうかを判断できます。このフィールドを必要としないサービスを作成するときにこのフィールドを指定すると、作成は失敗します。このフィールドは、サービスを更新して不要になると消去されます (タイプの変更など)。このフィールドは、一度設定すると更新できません。

internalTrafficPolicy

string

InternalTrafficPolicy は、ノードが ClusterIP 上で受信するサービストラフィックを分散する方法を記述します。Local に設定すると、プロキシーは、Pod と同じノード上のサービスのエンドポイントのみと対話すると想定し、ローカルエンドポイントがない場合はトラフィックをドロップします。デフォルト値の "Cluster" では、すべてのエンドポイントに均等にルーティングするという標準動作が使用されます (トポロジーやその他の機能によって変更される可能性があります)。

使用可能な列挙値: - "Cluster" は、トラフィックをすべてのエンドポイントにルーティングします。- "Local" は、クライアント Pod と同じノード上のエンドポイントにのみトラフィックをルーティングします (ローカルエンドポイントがない場合はトラフィックをドロップします)。

ipFamilies

array (string)

IPFamilies は、このサービスに割り当てられた IP ファミリー (IPv4、IPv6 など) のリストです。このフィールドは通常、クラスター設定と ipFamilyPolicy フィールドに基づいて自動的に割り当てられます。このフィールドを手動で指定した場合、要求されたファミリーはクラスターで使用可能であり、ipFamilyPolicy で許可されている場合は、それが使用されます。そうしないと、サービスの作成が失敗します。このフィールドは条件付きで変更可能です。セカンダリー IP ファミリーを追加または削除することはできますが、サービスのプライマリー IP ファミリーを変更することはできません。有効な値は IPv4 および IPv6 です。このフィールドは、タイプ ClusterIP、NodePort、および LoadBalancer のサービスにのみ適用され、ヘッドレスサービスに適用されます。このフィールドは、サービスを ExternalName タイプに更新するときに消去されます。

このフィールドには、最大 2 つのエントリー (デュアルスタックファミリー、いずれかの順序) を含めることができます。これらのファミリーは、指定されている場合、clusterIPs フィールドの値に対応している必要があります。clusterIP と ipFamilies はどちらも、ipFamilyPolicy フィールドによって管理されます。

ipFamilyPolicy

string

IPFamilyPolicy は、このサービスが必要とする、または要求するデュアルスタック性を表します。値が指定されていない場合、このフィールドは SingleStack に設定されます。サービスには、SingleStack (単一の IP ファミリー)、PreferDualStack (デュアルスタック設定クラスター上の 2 つの IP ファミリー、またはシングルスタッククラスター上の単一の IP ファミリー)、または RequireDualStack (デュアルスタック上の 2 つの IP ファミリー) があります。設定されたクラスター、それ以外の場合は失敗します)。ipFamilies フィールドと clusterIPs フィールドは、このフィールドの値によって異なります。このフィールドは、サービスを ExternalName タイプに更新するときに消去されます。

使用可能な列挙値: - "PreferDualStack" は、クラスターがデュアルスタック用に設定されている場合に、このサービスがデュアルスタックが優先されることを示します。クラスターがデュアルスタック用に設定されていない場合、サービスには単一の IPFamily が割り当てられます。IPFamily が service.spec.ipFamilies で設定されていない場合、サービスにはデフォルトの IPFamily がクラスターに割り当てられます。 - "RequireDualStack" は、このサービスにデュアルスタックが必要であることを示します。単一スタッククラスターで IPFamilyPolicyRequireDualStack を使用すると、検証エラーが発生します。このサービスに割り当てられた IPFamilies (およびその順序) は、service.spec.ipFamilies に基づいています。service.spec.ipFamilies が指定されていない場合は、クラスター上での設定方法に従って割り当てられます。service.spec.ipFamilies のエントリーが 1 つだけの場合、代替 IPFamily が apiserver によって追加されます。- "SingleStack" は、このサービスには IPFamily が 1 つ必要であることを示します。割り当てられる IPFamily は、クラスターで使用されるデフォルトの IPFamily、または service.spec.ipFamilies フィールドで識別される IPFamily に基づきます。

loadBalancerClass

string

loadBalancerClass は、このサービスが属するロードバランサー実装のクラスです。指定する場合、このフィールドの値は、internal-vip や example.com/internal-vip などのオプションの接頭辞を付けたラベルスタイルの識別子である必要があります。接頭辞のない名前はエンドユーザー用に予約されています。このフィールドは、サービスタイプが LoadBalancer の場合にのみ設定できます。設定されていない場合、デフォルトのロードバランサーの実装が使用されます。現在、これは通常、クラウドプロバイダーの統合を通じて行われますが、デフォルトの実装に適用する必要があります。設定されている場合、ロードバランサーの実装は一致するクラスのサービスを監視していると見なされます。デフォルトのロードバランサーの実装 (クラウドプロバイダーなど) は、このフィールドを設定するサービスを無視する必要があります。このフィールドは、サービスを作成または更新して LoadBalancer と入力する場合にのみ設定できます。一度設定すると変更できません。このフィールドは、サービスが LoadBalancer 以外のタイプに更新されると消去されます。

loadBalancerIP

string

サービスタイプ: LoadBalancer にのみ適用されます。この機能は、ロードバランサーの作成時に、基礎となるクラウドプロバイダーが loadBalancerIP の指定をサポートするかどうかによって異なります。クラウドプロバイダーがこの機能をサポートしていない場合、このフィールドは無視されます。非推奨:このフィールドは指定されておらず、その意味は実装ごとに異なります。使用は移植できず、デュアルスタックをサポートしない可能性があります。ユーザーは、利用可能な場合は実装固有のアノテーションを使用することが推奨されます。

loadBalancerSourceRanges

array (string)

プラットフォームで指定およびサポートされている場合、これによりクラウドプロバイダーのロードバランサーを通過するトラフィックが制限され、指定されたクライアント IP に制限されます。クラウドプロバイダーがこの機能をサポートしていない場合、このフィールドは無視されます。詳細: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/

ポート

array

このサービスによって公開されるポートのリスト。詳細: https://github.com/thanos-io/thanos/blob/master/docs/components/rule.md#partial-response

ports[]

object

ServicePort には、サービスのポートに関する情報が含まれています。

publishNotReadyAddresses

ブール値

publishNotReadyAddresses は、このサービスのエンドポイントを処理するエージェントは、準備完了/準備完了の兆候を無視する必要があることを示します。このフィールドを設定する主な使用例は、StatefulSet のヘッドレスサービスがピア検出の目的で Pod の SRVDNS レコードを伝播することです。サービスのエンドポイントと EndpointSlice リソースを生成する Kubernetes コントローラーは、Pod 自体が準備完了でなくても、すべてのエンドポイントが準備完了と見なされることを意味すると解釈します。Endpoints または EndpointSlice リソースを介して Kubernetes で生成されたエンドポイントのみを消費するエージェントは、この動作を安全に想定できます。

selector

object (string)

このセレクターと一致するラベルキーと値を使用して、サービストラフィックを Pod にルーティングします。空または存在しない場合、サービスにはエンドポイントを管理する外部プロセスがあると見なされ、Kubernetes はこれを変更しません。タイプ ClusterIP、NodePort、および LoadBalancer にのみ適用されます。タイプが ExternalName の場合は無視されます。詳細: https://kubernetes.io/docs/concepts/services-networking/service/

sessionAffinity

string

ClientIP と None をサポートします。セッションアフィニティーを維持するために使用されます。クライアント IP ベースのセッションアフィニティーを有効にします。ClientIP または None である必要があります。デフォルトは None です。詳細: https://github.com/thanos-io/thanos/blob/master/docs/components/rule.md#partial-response

使用可能な列挙値: - "ClientIP" は、クライアント IP ベースです。- "None" - セッションアフィニティーなしです。

sessionAffinityConfig

object

SessionAffinityConfig は、セッションアフィニティーの設定を表します。

type

string

タイプは、サービスの公開方法を決定します。デフォルトは ClusterIP です。有効なオプションは、ExternalName、ClusterIP、NodePort、および LoadBalancer です。ClusterIP は、負荷分散のためにクラスター内部の IP アドレスをエンドポイントに割り当てます。エンドポイントは、セレクターによって決定されます。指定されていない場合は、Endpoints オブジェクトまたは EndpointSlice オブジェクトを手動で作成します。clusterIP が None の場合、仮想 IP は割り当てられず、エンドポイントは仮想 IP ではなくエンドポイントのセットとして公開されます。NodePort は ClusterIP に基づいて構築され、clusterIP と同じエンドポイントにルーティングするすべてのノードにポートを割り当てます。LoadBalancer は NodePort 上に構築され、clusterIP と同じエンドポイントにルーティングする外部ロードバランサー (現在のクラウドでサポートされている場合) を作成します。ExternalName は、このサービスを指定された externalName にエイリアスします。他のいくつかのフィールドは、ExternalName サービスには適用されません。詳細: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types

使用可能な列挙値: - "ClusterIP" は、クラスター IP を介してクラスター内でのみサービスにアクセスできることを意味します。- "ExternalName" とは、サービスが、kubedns または同等の機能が CNAME レコードとして返す外部名への参照のみで設定されており、関連する Pod の公開やプロキシーは行われないことを意味します。- "LoadBalancer" は、NodePort タイプに加えて、外部ロードバランサー (クラウドプロバイダーがサポートしている場合) を介してサービスが公開されることを意味します。- "NodePort" は、ClusterIP タイプに加えて、サービスが各ノードの 1 つのポートで公開されることを意味します。

23.1.2. .spec.ports

説明
このサービスによって公開されるポートのリスト。詳細: https://github.com/thanos-io/thanos/blob/master/docs/components/rule.md#partial-response
タイプ
array

23.1.3. .spec.ports[]

説明
ServicePort には、サービスのポートに関する情報が含まれています。
タイプ
object
必須
  • port
プロパティータイプ説明

appProtocol

string

このポートのアプリケーションプロトコル。これは、実装が理解できるプロトコルの動作をさらに多く提供できるようにヒントとして使用されます。このフィールドは、標準の Kubernetes ラベル構文に従います。有効な値は以下のいずれかになります。

* 接頭辞のないプロトコル名 - IANA 標準サービス名用に予約されています (RFC-6335 および https://www.iana.org/assignments/service-names に準拠)。

* Kubernetes で定義された接頭辞名:* 'kubernetes.io/h2c' - https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior- * 'kubernetes.io/ws' - WebSocket over cleartext で説明されているように、 https://www.rfc-editor.org/rfc/rfc6455 * 'kubernetes.io/wss' - WebSocket over TLS で説明されているように、クリアテキストの HTTP/2 の事前知識

* 他のプロトコルは、mycompany.com/my-custom-protocol など、実装定義の接頭辞名を使用する必要があります。

name

string

サービス内のこのポートの名前。これは DNS_LABEL である必要があります。ServiceSpec 内のすべてのポートには、一意の名前を付ける必要があります。サービスのエンドポイントを検討する場合、これは EndpointPort の name フィールドと一致する必要があります。このサービスで ServicePort が 1 つだけ定義されている場合はオプション。

nodePort

integer

タイプが NodePort または LoadBalancer の場合に、このサービスが公開される各ノードのポート。通常、システムによって割り当てられます。値が指定され、範囲内にあり、使用されていない場合、その値が使用されます。指定されていない場合、操作は失敗します。指定されていない場合、このサービスでポートが必要な場合はポートが割り当てられます。このフィールドを必要としないサービスを作成するときにこのフィールドを指定すると、作成は失敗します。このフィールドは、サービスを更新して不要になると消去されます (たとえば、タイプを NodePort から ClusterIP に変更する場合)。詳細: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport

port

integer

このサービスによって公開されるポート。

protocol

string

このポートの IP プロトコル。TCP、UDP、および SCTP をサポートします。デフォルトは TCP です。

使用可能な列挙値: - "SCTP" は SCTP プロトコル、"TCP" は TCP プロトコル、"UDP" は UDP プロトコルです。

targetPort

IntOrString

サービスの対象となる Pod でアクセスするポートの番号または名前。番号は 1〜65535 の範囲である必要があります。名前は IANA_SVC_NAME である必要があります。これが文字列の場合、ターゲット Pod のコンテナーポートで名前付きポートとして検索されます。これが指定されていない場合、ポートフィールドの値が使用されます (ID マップ)。このフィールドは、clusterIP = None のサービスでは無視されるため、省略するか、port フィールドと同じに設定する必要があります。詳細: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service

23.1.4. .spec.sessionAffinityConfig

説明
SessionAffinityConfig は、セッションアフィニティーの設定を表します。
タイプ
object
プロパティータイプ説明

clientIP

object

ClientIPConfig は、クライアント IP ベースのセッションアフィニティーの設定を表します。

23.1.5. .spec.sessionAffinityConfig.clientIP

説明
ClientIPConfig は、クライアント IP ベースのセッションアフィニティーの設定を表します。
タイプ
object
プロパティータイプ説明

timeoutSeconds

integer

timeoutSeconds は、ClientIP タイプのセッションスティッキー時間の秒数を指定します。ServiceAffinity == "ClientIP" の場合、値は > 0 &&⇐86400(1 日間) である必要があります。デフォルト値は 10800(3 時間) です。

23.1.6. .status

説明
ServiceStatus は、サービスの現在のステータスを表します。
タイプ
object
プロパティータイプ説明

conditions

配列(条件)

現在のサービス状態

loadBalancer

object

LoadBalancerStatus はロードバランサーのステータスを表します。

23.1.7. .status.loadBalancer

説明
LoadBalancerStatus はロードバランサーのステータスを表します。
タイプ
object
プロパティータイプ説明

ingress

array

Ingress はロードバランサーの Ingress ポイントを含むリストです。サービス向けのトラフィックは、これらの Ingress ポイントに送信する必要があります。

ingress[]

object

LoadBalancerIngress は、ロードバランサーの入力ポイントのステータスを表します。サービスを対象としたトラフィックは、入力ポイントに送信する必要があります。

23.1.8. .status.loadBalancer.ingress

説明
Ingress はロードバランサーの Ingress ポイントを含むリストです。サービス向けのトラフィックは、これらの Ingress ポイントに送信する必要があります。
タイプ
array

23.1.9. .status.loadBalancer.ingress[]

説明
LoadBalancerIngress は、ロードバランサーの入力ポイントのステータスを表します。サービスを対象としたトラフィックは、入力ポイントに送信する必要があります。
タイプ
object
プロパティータイプ説明

hostname

string

ホスト名は、DNS ベースのロードバランサー入力ポイント (通常は AWS ロードバランサー) に設定されます

ip

string

IP は、IP ベースのロードバランサー入力ポイント (通常は GCE または OpenStack ロードバランサー) に設定されます

ipMode

string

IPMode は、ロードバランサーの IP の動作を指定し、ip フィールドが指定されている場合にのみ指定できます。これを VIP に設定すると、宛先がロードバランサーの IP およびポートに設定された状態でトラフィックがノードに配信されることを示します。これを Proxy に設定すると、トラフィックがノードの IP およびノードポートまたは Pod の IP およびポートに設定された宛先および Pod に配信されるノードまたは Pod に配信されることを示します。サービス実装は、この情報を使用してトラフィックルーティングを調整する場合があります。

ports

array

ポートは、サービスポートのレコードのリストです。使用する場合、サービスで定義されているすべてのポートにエントリーが必要です。

ports[]

object

 

23.1.10. .status.loadBalancer.ingress[].ports

説明
ポートは、サービスポートのレコードのリストです。使用する場合、サービスで定義されているすべてのポートにエントリーが必要です。
タイプ
array

23.1.11. .status.loadBalancer.ingress[].ports[]

説明
タイプ
object
必須
  • port
  • protocol
プロパティータイプ説明

error

string

エラーは、サービスポートの問題を記録することです。エラーの形式は、次のルールに準拠する必要があります。- 組み込みのエラー値をこのファイルに指定し、キャメルケース名を使用する必要があります - クラウドプロバイダー固有のエラー値には、次の名前を付ける必要があります foo.example.com/CamelCase の形式に準拠します。

port

integer

ポートは、ステータスがここに記録されるサービスポートのポート番号です。

protocol

string

プロトコルは、ステータスがここに記録されるサービスポートのプロトコルです。サポートされる値は、TCP、UDP、SCTP です。

使用可能な列挙値: - "SCTP" は SCTP プロトコル、"TCP" は TCP プロトコル、"UDP" は UDP プロトコルです。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.