Kubernetes GKE 1负载平衡器,在不同的分配端口上具有多个应用程序
我希望能够部署多个单吊舱应用程序,并在单个IP地址上访问它们,依靠Kubernetes在使用Kubernetes GKE 1负载平衡器,在不同的分配端口上具有多个应用程序,kubernetes,google-kubernetes-engine,Kubernetes,Google Kubernetes Engine,我希望能够部署多个单吊舱应用程序,并在单个IP地址上访问它们,依靠Kubernetes在使用节点端口服务时按原样分配端口 有没有办法将NodePort与负载平衡器一起使用 老实说,NodePort可能会自行工作,但GKE似乎会阻止对节点的直接访问。在非托管虚拟机上似乎没有防火墙控件 如果我们需要答案,这里有一个服务。在本例中,我想在同一IP上部署10个这些服务,它们是不同的应用程序,每个服务都可以在不同的端口上公开访问,每个代理端口都是nginx容器的80 --- apiVersion: v1
节点端口
服务时按原样分配端口
有没有办法将NodePort
与负载平衡器一起使用
老实说,NodePort可能会自行工作,但GKE似乎会阻止对节点的直接访问。在非托管虚拟机上似乎没有防火墙控件
如果我们需要答案,这里有一个服务。在本例中,我想在同一IP上部署10个这些服务,它们是不同的应用程序,每个服务都可以在不同的端口上公开访问,每个代理端口都是nginx容器的80
---
apiVersion: v1
kind: Service
metadata:
name: foo-svc
spec:
selector:
app: nginx
ports:
- name: foo
protocol: TCP
port: 80
type: NodePort
有没有办法将NodePort与负载平衡器一起使用
Kubernetes LoadBalancer类型服务构建在NodePort之上。因此,LoadBalancer内部使用NodePort,这意味着创建LoadBalancer类型的服务时,它会自动映射到NodePort。虽然创建NodePort类型的服务并手动配置Google提供的loadbalancer以指向NodePorts很棘手,但这是可能的
有没有办法将NodePort与负载平衡器一起使用
Kubernetes LoadBalancer类型服务构建在NodePort之上。因此,LoadBalancer内部使用NodePort,这意味着创建LoadBalancer类型的服务时,它会自动映射到NodePort。虽然创建NodePort类型的服务并手动配置Google提供的loadbalancer以指向NodePorts很棘手,但这是可能的
GKE似乎阻止了对节点的直接访问
GCP允许创建FW规则,允许进入VPC网络中的“网络中的所有实例”或“指定的目标标签/服务帐户”的流量
除非在组织的策略下指定了相反的规则,否则规则是持久的
节点的外部IP地址可以在云控制台-->计算引擎-->虚拟机实例或使用kubectl get nodes-o wide
检查
我运行GKE(托管k8s),可以从外部访问我的所有资产。
我已在设置中打开所有需要的端口。下面是最快的例子
您可以在下面找到我的设置:
$ kubectl get nodes -o wide
NAME AGE VERSION INTERNAL-IP EXTERNAL-IP
gke--mnnv 43d v1.14.10-gke.27 10.156.0.11 34.89.x.x
gke--nw9v 43d v1.14.10-gke.27 10.156.0.12 35.246.x.x
kubectl get svc -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) SELECTOR
knp-np NodePort 10.0.11.113 <none> 8180:30008/TCP 8180:30009/TCP app=server-go
$ curl 35.246.x.x:30008/test
Hello from ServerGo. You requested: /test
$kubectl获取节点-o宽
名称年龄版本内部-IP外部-IP
gke——mnnv 43d v1.14.10-gke.27 10.156.0.11 34.89.x.x
gke--nw9v 43d v1.14.10-gke.27 10.156.0.12 35.246.x.x
kubectl获得svc-o宽
名称类型CLUSTER-IP外部IP端口选择器
knp节点端口10.0.11.113 8180:30008/TCP 8180:30009/TCP app=server go
$curl 35.246.x.x:30008/测试
你好,来自ServerGo。您请求了:/test
这就是为什么它看起来像一堆节点端口
类型服务
就足够了(每一个都为特定的选择器
提供请求)
如果出于某种原因,无法设置FW规则以允许直接向您的节点发送流量,则可以配置GCP TCP LoadBalancer
云控制台-->网络服务-->负载平衡-->创建LB-->TCP负载平衡
在那里,您可以选择您的GKE节点(或节点池)作为“后端”,并指定“前端”所需的所有端口。对于前端,您可以在配置期间保留静态IP权限,并将“端口”范围指定为两个由破折号分隔的端口号(假设您有多个端口要转发到节点池)。此外,如果需要,您可以创建多个“前端”
我希望这有帮助
GKE似乎阻止了对节点的直接访问
GCP允许创建FW规则,允许进入VPC网络中的“网络中的所有实例”或“指定的目标标签/服务帐户”的流量
除非在组织的策略下指定了相反的规则,否则规则是持久的
节点的外部IP地址可以在云控制台-->计算引擎-->虚拟机实例或使用kubectl get nodes-o wide
检查
我运行GKE(托管k8s),可以从外部访问我的所有资产。
我已在设置中打开所有需要的端口。下面是最快的例子
您可以在下面找到我的设置:
$ kubectl get nodes -o wide
NAME AGE VERSION INTERNAL-IP EXTERNAL-IP
gke--mnnv 43d v1.14.10-gke.27 10.156.0.11 34.89.x.x
gke--nw9v 43d v1.14.10-gke.27 10.156.0.12 35.246.x.x
kubectl get svc -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) SELECTOR
knp-np NodePort 10.0.11.113 <none> 8180:30008/TCP 8180:30009/TCP app=server-go
$ curl 35.246.x.x:30008/test
Hello from ServerGo. You requested: /test
$kubectl获取节点-o宽
名称年龄版本内部-IP外部-IP
gke——mnnv 43d v1.14.10-gke.27 10.156.0.11 34.89.x.x
gke--nw9v 43d v1.14.10-gke.27 10.156.0.12 35.246.x.x
kubectl获得svc-o宽
名称类型CLUSTER-IP外部IP端口选择器
knp节点端口10.0.11.113 8180:30008/TCP 8180:30009/TCP app=server go
$curl 35.246.x.x:30008/测试
你好,来自ServerGo。您请求了:/test
这就是为什么它看起来像一堆节点端口
类型服务
就足够了(每一个都为特定的选择器
提供请求)
如果出于某种原因,无法设置FW规则以允许直接向您的节点发送流量,则可以配置GCP TCP LoadBalancer
云控制台-->网络服务-->负载平衡-->创建LB-->TCP负载平衡
在那里,您可以选择您的GKE节点(或节点池)作为“后端”,并指定“前端”所需的所有端口。对于前端,您可以在配置期间保留静态IP权限,并将“端口”范围指定为两个由破折号分隔的端口号(假设您有多个端口要转发到节点池)。此外,如果需要,您可以创建多个“前端”
我希望这有帮助 你真的需要所有这些应用程序在不同的端口上可用,而不是在不同的DNs上(这样简单的入口就可以了)?是的,我在这里简化了用例。每个实例都会暴露2到5个端口,并且对于我的用例,入口路径在两种方式上都有限制。您真的需要所有这些应用程序在不同的端口上可用,而不是在不同的DNs上(所以