我正在使用创建的kubernetes 1.9.2,但使用kubeadm。 这个kubernetes集群运行在4个ec2节点中。
我有一个部署,要求在每个Pod中使用缓存。 为了确保我们使用了ClusterIP中的会话亲和力。
由于我在Kubernetes集群之前是ELB,所以我想知道会话亲和力如何表现。
自然的行为是,对于每个客户端IP,不同的客户端将获得请求,但考虑到流量是通过ELB传输的,会话亲缘关系可以识别出哪个IP,即ELB IP还是实际的客户端IP?
当我检查到豆荚的流量时,我看到102个豆荚收到了所有请求,而另外2个豆荚正在等待。
非常感谢您的帮助。
答案 0 :(得分:0)
#include <stdio.h>
#include <stdlib.h>
//The program is trying to attempt to give 'test[0] a value of 255'
int main(int argc, char ** argv)
{
//example variables
int height = 4;
int width = 4;
unsigned char image[width][height];
char *test;
//gave the 0th element a basic value
image[0][0] = 255;
//prints out 'Image = 255' as expected
printf("Image = %d\n", image[0][0]);
//allocate test some memory
test = malloc(height * width * sizeof(char));
//Now the problems..
//attempt to give test[0] the value of image[0][0]
test[0] = image[0][0];
//prints out '-1'
printf("Test = %d\n", test[0]);
}
识别客户端IP,ELB应该通过客户端IP。
我认为您应该使用HTTP Headers and Classic Load Balancers并设置SessionAffinity
此外,这似乎是一个已知问题enabling Session affinity goes to a single pod only #3056。
据报道,该版本是NGINX Ingress控制器的X-Forwarded-For: client-ip-address
和0.18.0
版本。
问题已关闭并评论了0.19.0
版中已修复的问题,但最初的作者在12月表示对他仍然无效。