GCP负载均衡器如何将流量路由到GKE服务?-问答-阿里云开发者社区-阿里云

开发者社区> k8s小能手> 正文

GCP负载均衡器如何将流量路由到GKE服务?

2019-01-11 13:41:55 1793 1

我对GCP相对较新(<1年),我仍然在将各种服务映射到我现有的网络心理模型上。

一旦知道差距,我正在努力填补的是HTTP请求如何与我们的GKE集群中运行的服务进行负载平衡。

在测试群集上,我在提供HTTP的pod前面创建了一个服务:

apiVersion: v1
kind: Service
metadata:
name: contour
spec:
ports:

  • port: 80
    name: http

protocol: TCP
targetPort: 8080

  • port: 443
    name: https

protocol: TCP
targetPort: 8443
selector:
app: contour
type: LoadBalancer
该服务正在侦听节点端口30472和30816:

$ kubectl get svc contour
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
contour LoadBalancer 10.63.241.69 35.x.y.z 80:30472/TCP,443:30816/TCP 41m
将自动为我创建GCP网络负载平衡器。它在35.xyz有自己的公共IP,正在侦听端口80-443:
卷曲负载均衡器IP有效:

$ curl -q -v 35.x.y.z

  • TCP_NODELAY set
  • Connected to 35.x.y.z (35.x.y.z) port 80 (#0)

GET / HTTP/1.1
Host: 35.x.y.z
User-Agent: curl/7.62.0
Accept: /

< HTTP/1.1 404 Not Found

< date: Mon, 07 Jan 2019 05:33:44 GMT
< server: envoy
< content-length: 0
<
如果我进入GKE节点,我可以看到kube-proxy正在侦听服务nodePorts(30472和30816),并且没有任何东西在端口80或443上侦听:

netstat -lntp

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:20256 0.0.0.0:* LISTEN 1022/node-problem-d
tcp 0 0 127.0.0.1:10248 0.0.0.0:* LISTEN 1221/kubelet
tcp 0 0 127.0.0.1:10249 0.0.0.0:* LISTEN 1369/kube-proxy
tcp 0 0 0.0.0.0:5355 0.0.0.0:* LISTEN 297/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 330/sshd
tcp6 0 0 :::30816 :::* LISTEN 1369/kube-proxy
tcp6 0 0 :::4194 :::* LISTEN 1221/kubelet
tcp6 0 0 :::30472 :::* LISTEN 1369/kube-proxy
tcp6 0 0 :::10250 :::* LISTEN 1221/kubelet
tcp6 0 0 :::5355 :::* LISTEN 297/systemd-resolve
tcp6 0 0 :::10255 :::* LISTEN 1221/kubelet
tcp6 0 0 :::10256 :::* LISTEN 1369/kube-proxy
两个问题:

鉴于节点上没有任何东西正在侦听端口80或443,负载均衡器是否将流量引导到端口30472和30816?
如果负载均衡器正在接受80/443上的流量并转发到30472/30816,那么在哪里可以看到该配置?点击负载均衡器屏幕,我看不到端口30472和30816的任何提及。

取消 提交回答
全部回答(1)
  • k8s小能手
    2019-07-17 23:25:17

    要了解LoadBalancer服务,首先必须了解NodePort服务。这些工作的方式是在集群中的每个节点上都有一个代理(通常实际上在iptables或ipvs中实现perf,但这是一个实现细节),并且在创建NodePort服务时,它选择一个未使用的端口并设置每个其中一个代理将数据包转发到您的Kubernetes pod。LoadBalancer服务构建于此之上,因此在GCP / GKE上,它创建了一个GCLB转发规则,将请求的端口映射到所有这些节点级代理的轮换。因此,GCLB侦听端口80,端口80代理随机节点上的某个随机端口,该端口代理到pod上的内部端口。

    这个过程比这更容易定制,但这是基本的默认值。

    0 0
相关问答

8

回答

OceanBase 使用动画(持续更新)

mq4096 2019-02-20 17:16:36 333865浏览量 回答数 8

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 146780浏览量 回答数 22

57

回答

为阿里云ECS(CentOS7)配置IPv6隧道地址

dongshan8 2016-06-17 13:51:32 104428浏览量 回答数 57

18

回答

阿里云开放端口权限

xcxx 2016-07-20 15:03:33 643118浏览量 回答数 18

42

回答

【精品问答集锦】Python热门问题

小六码奴 2019-05-30 15:27:34 135550浏览量 回答数 42

38

回答

安全组详解,新手必看教程

我的中国 2017-11-30 15:23:46 256864浏览量 回答数 38

249

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 302600浏览量 回答数 249

24

回答

【精品问答】python技术1000问(1)

问问小秘 2019-11-15 13:25:00 471397浏览量 回答数 24

2

回答

区域选择帮助

fanyue88888 2012-12-07 15:54:30 204007浏览量 回答数 2

37

回答

【云服务器教程征集令】这个六一阿里云邀您来吐槽!

fanyue88888 2012-06-01 18:55:41 113743浏览量 回答数 37
+关注
k8s小能手
整合最优质的专家资源和技术资料,问答解疑
26
文章
620
问答
推荐问答
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载