【发布时间】:2015-08-07 14:43:27
【问题描述】:
我正在使用 Google 的 Container Engine 服务,并且有一个运行在 3000 端口上的服务器的 pod。我将服务设置为将端口 80 连接到该 pod 的 3000 端口。我可以使用其本地和 curl 服务来自节点内部的公共 IP,但不是来自外部。我设置了防火墙规则以允许端口 80 并将其发送到节点,但我不断收到来自网络外部的“连接被拒绝”。我正在尝试在没有转发规则的情况下执行此操作,因为只有一个 pod,并且看起来转发规则需要花钱并进行负载平衡。我认为防火墙规则有效,因为当我将createExternalLoadBalancer: true 添加到服务规范时,转发规则创建的外部 IP 会按预期工作。我需要做其他事情吗?设置路线之类的?
controller.yaml
kind: ReplicationController
apiVersion: v1beta3
metadata:
name: app-frontend
labels:
name: app-frontend
app: app
role: frontend
spec:
replicas: 1
selector:
name: app-frontend
template:
metadata:
labels:
name: app-frontend
app: app
role: frontend
spec:
containers:
- name: node-frontend
image: gcr.io/project_id/app-frontend
ports:
- name: app-frontend-port
containerPort: 3000
targetPort: 3000
protocol: TCP
service.yaml
kind: Service
apiVersion: v1beta3
metadata:
name: app-frontend-service
labels:
name: app-frontend-service
app: app
role: frontend
spec:
ports:
- port: 80
targetPort: app-frontend-port
protocol: TCP
publicIPs:
- 123.45.67.89
selector:
name: app-frontend
编辑(附加细节):
创建此服务会添加这些附加规则,这些规则是在我运行 iptables -L -t nat 时发现的
Chain KUBE-PORTALS-CONTAINER (1 references)
target prot opt source destination
REDIRECT tcp -- anywhere 10.247.247.206 /* default/app-frontend-service: */ tcp dpt:http redir ports 56859
REDIRECT tcp -- anywhere 89.67.45.123.bc.googleusercontent.com /* default/app-frontend-service: */ tcp dpt:http redir ports 56859
Chain KUBE-PORTALS-HOST (1 references)
target prot opt source destination
DNAT tcp -- anywhere 10.247.247.206 /* default/app-frontend-service: */ tcp dpt:http to:10.241.69.28:56859
DNAT tcp -- anywhere 89.67.45.123.bc.googleusercontent.com /* default/app-frontend-service: */ tcp dpt:http to:10.241.69.28:56859
我不完全了解 iptables,所以我不确定目标端口如何匹配我的服务。我发现89.67.45.123.bc.googleusercontent.com 的 DNS 解析为 123.45.67.89。
kubectl get services 显示我指定的 IP 地址和端口:
NAME IP(S) PORT(S)
app-frontend-service 10.247.243.151 80/TCP
123.45.67.89
/var/log/kube-proxy.log 中没有显示来自外部 IP 的最新内容
【问题讨论】:
标签: firewall kubernetes google-kubernetes-engine