来自kubernetes 文档:
pod中的应用程序都使用相同的网络命名空间(相同的IP和端口空间),因此可以相互" 查找 "并使用localhost进行通信.
是否可以使用某些特定于容器的名称而不是locahost?
例如,使用docker-compose up,您使用服务的名称进行通信.[文档]
所以,如果我的docker-compose.yml文件是
version: '2'
services:
web:
build: .
ports:
- "8000:8000"
srv:
build: .
ports:
- "3000:3000"
Run Code Online (Sandbox Code Playgroud)
然后我通过电话srv从内部访问,而不是webhttp://srv:3000/ http://localhost:3000
如何在kubernetes中实现相同的行为?有什么方法可以指定在pods的yaml配置中使用什么名称?
我是kubernetes的新手,刚刚在AWS上使用kube-up获得了kubernetes v.1.3.5集群.到目前为止,我一直在玩kubernetes来理解它的机制(节点,pods,svc和东西).基于我最初(或可能粗略)的理解,我几乎没有问题:
1)如何路由到集群IP在这里工作(即在kube-aws中)?我看到服务的IP在10.0.0.0/16范围内.我使用rc = 3的股票nginx进行了部署,然后通过暴露节点端口将服务附加到它.一切都很棒!我可以从我的开发机器连接到该服务.此nginx服务的群集IP为10.0.33.71:1321.现在,如果我ssh到其中一个minions(或节点或VMS)并执行"telnet 10.0.33.71 1321",它会按预期连接.但我无能为力如何工作,我在kubernetes的VPC设置中找不到与10.0.0.0/16相关的任何路由.在这里引起了什么确实会导致像telnet这样的app成功连接?但是,如果我进入主节点并执行"telnet 10.0.33.71 1321",它就不会连接.为什么它无法从主站连接?
2)每个节点内都有一个cbr0接口.每个minion节点的cbr0配置为10.244.x.0/24,master的cbr0配置为10.246.0.0/24.我可以从任何节点(包括主节点)ping到任何10.244.xx pod.但是我无法从任何一个minion节点ping 10.246.0.1(主节点内的cbr0).这可能发生什么?
这是由kubernetes在aws中建立的路线.VPC.
Destination Target
172.20.0.0/16 local
0.0.0.0/0 igw-<hex value>
10.244.0.0/24 eni-<hex value> / i-<hex value>
10.244.1.0/24 eni-<hex value> / i-<hex value>
10.244.2.0/24 eni-<hex value> / i-<hex value>
10.244.3.0/24 eni-<hex value> / i-<hex value>
10.244.4.0/24 eni-<hex value> / i-<hex value>
10.246.0.0/24 eni-<hex value> / i-<hex value>
Run Code Online (Sandbox Code Playgroud) 我试图了解 Kubernetes 设计的工作节点如何/是否相互通信。我在node-master 通信上找到了文档,但在 node-node 上没有找到。我已经明白,即使 pod 位于不同的节点上,它们也可以进行通信,除非 aNetworkPolicy阻止了这种情况。我想知道主从架构中的信息流是严格在工作节点和主节点之间还是工作节点之间。
问题 1:worker 节点是相互通信还是只发生在 pod 之间?或者更确切地说,即使它们的 pod 不通信,节点也能通信吗?
问题 2:假设我们有 2 个工作节点,并且我们将 ssh:ed 连接到其中一个节点,关于另一个节点或主节点的哪些信息可用?
谢谢!