Kubernetes服务代理概念:PublicIP

时间:2015-02-26 23:57:48

标签: centos kubernetes

我正在尝试从kubernetes doc启动Guestbook.go示例,如下所示:

https://github.com/GoogleCloudPlatform/kubernetes/tree/master/examples/guestbook-go

我已修改上述链接中的guestbook-service.json以包含PublicIPs

{
  "apiVersion": "v1beta1",
  "kind": "Service",
  "id": "guestbook",
  "port": 3000, 
  "containerPort": "http-server",
  "publicIPs": ["10.39.67.97","10.39.66.113"],
  "selector": { "name": "guestbook" }
}

我有一个主人和两个奴才,如下所示:

centos-minion -> 10.39.67.97
centos-minion2 -> 10.39.66.113

我使用我的publicIPs作为我的minions eth0 IP。但iptables只能在其中一个小兵上创建:

[root@ip-10-39-67-97 ~]# iptables -L -n -t nat
Chain KUBE-PORTALS-HOST (1 references)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            10.254.208.93        /* redis-slave      */ tcp dpt:6379 to:10.39.67.240:56872
DNAT       tcp  --  0.0.0.0/0            10.254.223.192       /* guestbook */ tcp dpt:3000 to:10.39.67.240:58746
DNAT       tcp  --  0.0.0.0/0            10.39.67.97          /* guestbook */ tcp dpt:3000 to:10.39.67.240:58746
DNAT       tcp  --  0.0.0.0/0            10.39.66.113         /* guestbook */ tcp dpt:3000 to:10.39.67.240:58746
DNAT       tcp  --  0.0.0.0/0            10.254.0.2           /* kubernetes */ tcp dpt:443 to:10.39.67.240:33003
DNAT       tcp  --  0.0.0.0/0            10.254.0.1           /* kubernetes-ro */ tcp dpt:80 to:10.39.67.240:58434
DNAT       tcp  --  0.0.0.0/0            10.254.131.70        /* redis-master */ tcp dpt:6379 to:10.39.67.240:50754

所以,即使我使用我的Pods冗余,如果我用IPTABLE将我的外部publicIP入口点摧毁,我确信我有概念上的误解..任何人都可以帮助

2 个答案:

答案 0 :(得分:2)

(抱歉延迟回答你的问题)

PublicIPs是在每个主机节点上定义的,因此如果您确保从外部负载均衡器(例如边缘路由器)将数据包循环到主机节点中,那么即使其中一个主机,您也可以拥有冗余机器失灵。

- 布伦丹

答案 1 :(得分:0)

您应该使用kubectl proxy  --accept-hosts='^*$' --address='0.0.0.0' --port=8001将您的kube-proxy端口公开给公共IP或内部iP