0

私のヘッドレス サービスでは、こちらで説明されているように、特定のクライアントからの接続が毎回同じ Pod に渡されるように、sessionAffinity を構成します。

マニフェストは次のとおりです。

apiVersion: v1
kind: Service
metadata:
  name: service1
spec:
  clusterIP: None
  selector:
    app: nginx
  sessionAffinity: ClientIP
  sessionAffinityConfig:
    clientIP:
      timeoutSeconds: 30

テストするためにいくつかのnginxポッドを実行します:

$ kubectl create deployment nginx --image=stenote/nginx-hostname

問題は、サービスをカールすると、別のポッドにリダイレクトされ、sessionAffinity が無視されるように見えることです。

$ kubectl run --generator=run-pod/v1 --rm utils -it --image arunvelsriram/utils bash
root@utils:/# for i in $(seq 1 10) ; do curl service1; done
nginx-78d58889-b7fm2
nginx-78d58889-b7fm2
nginx-78d58889-b7fm2
nginx-78d58889-b7fm2
nginx-78d58889-b7fm2
nginx-78d58889-8rpxd
nginx-78d58889-b7fm2
nginx-78d58889-62jlw
nginx-78d58889-8rpxd
nginx-78d58889-62jlw

注意。で確認すると

$ kubectl describe  svc service1
Name:              service1
Namespace:         abdelghani
Labels:            <none>
Annotations:       <none>
Selector:          app=nginx
Type:              ClusterIP
IP Families:       <none>
IP:                None
IPs:               <none>
Session Affinity:  ClientIP
Events:            <none>

SessionAffinity構成が存在します。

私のサービスはヘッドレスであることに注意してくださいclusterIP: None。SessionAffinity は、非ヘッドレス サービスで正常に動作するようです。しかし、ドキュメントに明確な説明が見つかりません。これは、プラットフォームがプロキシを行っていないことに関連していますか?

アブデルガニ

4

1 に答える 1

2

ヘッドレス サービス (clusterIP: None) を使用する場合は、プロキシを使用しません。

k8s ドキュメントから:

ヘッドレス サービスの場合、クラスター IP は割り当てられず、kube-proxy はこれらのサービスを処理せず、プラットフォームによる負荷分散やプロキシ処理は行われません。DNS の自動構成方法は、サービスにセレクターが定義されているかどうかによって異なります

したがって、ヘッドレス サービスを使用する場合、dns は、特定のサービスに関連付けられているすべてのポッドの IP のランダム化されたリストで応答します。

/app # dig service1 +search +short
172.17.0.8
172.17.0.10
172.17.0.9
/app # dig service1 +search +short
172.17.0.9
172.17.0.10
172.17.0.8
/app # dig service1 +search +short
172.17.0.8
172.17.0.10
172.17.0.9
/app # dig service1 +search +short
172.17.0.10
172.17.0.9
172.17.0.8
/app # dig service1 +search +short
172.17.0.9
172.17.0.8
172.17.0.10

curl は 1 つだけ取得し、それを使用します。

これはすべてのリクエストで発生するため、DNS から異なる IP を取得するたびに、異なるポッドに接続します。

于 2021-01-22T12:44:17.227 に答える