我是Kubernetes集群的新手,正在尝试设置我的第一个kubernetes集群和第一个负载均衡服务。 我有一个混合环境,其中包含两个Windows和两个CentOS节点+ 1个CentOs主节点
就Kubernetes而言,一切工作正常。我将nginx-ingress控制器部署为仅在Linux服务器上运行的守护程序集。我遵循以下教程: https://github.com/nginxinc/kubernetes-ingress/blob/master/docs/installation.md仅有一个区别,即在Deployments / deployment / nginx-ingress.yml中,我限制使用nodeselector在Linux机器上运行
我创建了具有2个副本和该部署服务的部署。我还创建了入口资源,但是当我创建服务时,它总是转到一个节点上的Pod。这是我的代码:
服务和部署:
apiVersion: v1
kind: Service
metadata:
name: myservice-1
labels:
app: myservice-1
spec:
ports:
# the port that this service should serve on
- port: 9034
targetPort: 80
selector:
app: myservice-1
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: myservice-1
name: myservice-1
spec:
selector:
matchLabels:
app: myservice-1
replicas: 2
template:
metadata:
labels:
app: myservice-1
run: with-creds
name: myservice-1
spec:
containers:
- name: myservice-1
securityContext:
windowsOptions:
gmsaCredentialSpecName: gmsa-dev-credspec
image: secure-myprivaterepo:443/docker/library/myservice-1
nodeSelector:
beta.kubernetes.io/os: windows
这是我的入口资源
入口资源:
kind: Ingress
apiVersion: networking.k8s.io/v1beta1
metadata:
name: myservice-1-ingress
spec:
rules:
- host: myservice1
http:
paths:
- backend:
serviceName: myservice-1
servicePort: 9034
我看到两个副本都无法在两个不同的Windows节点上工作。 我使用HAProxy将请求轮循到我的两个Linux节点,以便它可以命中在那些节点上运行的Nginx-ingress控制器。从日志中,我可以看到请求正在以某种方式路由到这两种服务器。这是我的HAProxy配置。
HAProxy前端和后端配置
HA代理默认设置:
更多详细信息(PjoterS要求):
问题:
我当前在本地计算机上创建了一个主机条目,指向我的HAProxy iP,并访问站点http://myservice1,并且Windows服务正常运行,但是当我执行每个pod并查看应用程序日志时,我看到日志仅在一个Pod上生成,而另一个节点上的Pod甚至没有被调用一次。我尝试了100多个请求,并且每次节点1都会响应,而节点2根本不会被调用。
我是否需要做任何特定的事情,以便入口控制器真正以循环方式转发流量?我尝试在博客上搜索,但根本找不到任何答案