単一の外部 IP で同じ kubernetes サービスを共有する kubernetes に nginx ロードバランサー展開のポッドをミラー化する可能性を探しています。このステートフルセット構成でシナリオを試しました:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: loadbalancer
labels:
run: loadbalancer
spec:
serviceName: "loadbalancer"
selector:
matchLabels:
run: loadbalancer
replicas: 4
updateStrategy:
type: RollingUpdate
template:
metadata:
labels:
run: loadbalancer
spec:
containers:
- name: loadbalancer
image: /services/infrastructure/loadbalancer:latest
ports:
- containerPort: 80
protocol: TCP
- containerPort: 443
protocol: TCP
volumeMounts:
- name: certs
mountPath: /etc/letsencrypt
volumeClaimTemplates:
- metadata:
name: certs
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 100M
そして、このサービス構成:
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
run: loadbalancer
name: loadbalancer
selfLink: /api/v1/namespaces/test/services/loadbalancer
spec:
clusterIP: 10.31.249.3
externalTrafficPolicy: Cluster
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
run: loadbalancer
sessionAffinity: None
type: LoadBalancer
4 つのポッドすべてが、必要な SSL 証明書を並行して暗号化することを正常に要求できます。
問題は、外部 IPv4 アドレスを介したクラスター外からの単一サービス経由の接続がランダムにリセットされることです。
どうすればこれを防ぐことができますか?