【发布时间】:2019-09-10 10:27:51
【问题描述】:
我正在寻找如何在 GKE 中使用 cookie 亲和性,为此使用 Ingress。
我找到了以下链接:https://cloud.google.com/kubernetes-engine/docs/how-to/configure-backend-service
我创建了一个包含以下内容的 yaml:
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-bsc-deployment
spec:
selector:
matchLabels:
purpose: bsc-config-demo
replicas: 3
template:
metadata:
labels:
purpose: bsc-config-demo
spec:
containers:
- name: hello-app-container
image: gcr.io/google-samples/hello-app:1.0
---
apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
name: my-bsc-backendconfig
spec:
timeoutSec: 40
connectionDraining:
drainingTimeoutSec: 60
sessionAffinity:
affinityType: "GENERATED_COOKIE"
affinityCookieTtlSec: 50
---
apiVersion: v1
kind: Service
metadata:
name: my-bsc-service
labels:
purpose: bsc-config-demo
annotations:
beta.cloud.google.com/backend-config: '{"ports": {"80":"my-bsc-backendconfig"}}'
spec:
type: NodePort
selector:
purpose: bsc-config-demo
ports:
- port: 80
protocol: TCP
targetPort: 8080
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-bsc-ingress
spec:
rules:
- http:
paths:
- path: /*
backend:
serviceName: my-bsc-service
servicePort: 80
---
一切似乎都很顺利。当我检查创建的 Ingress 时,我看到了 2 个后端服务。其中一个配置了 cookie,但另一个没有。
如果我创建部署,并从 GCP 的控制台创建服务和入口,则只会出现一个后端服务。
有人知道为什么使用 yaml 我得到 2,但从控制台执行却只得到一个?
提前致谢
奥斯卡
【问题讨论】:
-
YAML 定义和控制台最后都应该发出相同的请求。因此,要么在您的 YAML 中包含的 UI 中没有“映射”的内容,要么请求不同。请分享在控制台中复制它的步骤。
-
嗨。我在控制台中所做的是: - 选择部署并单击 Expose。我选择 NodePort 作为服务。 - 创建服务后,我选择它并单击“创建入口” - 在那里我选择之前创建的服务作为后端服务并创建入口 - 创建入口后,我选择后端服务(只有一个,没有2) 并使用 cookie 配置会话亲和性
标签: cookies kubernetes google-kubernetes-engine kubernetes-ingress affinity