Kubernetes 基础知识

kube-proxy 就是 service 的具体实现。

kube-dns 是可选的,如果需要通过名字去访问pod(任何一个pod都可以通过名字去访问另外一个pod),则需要这个组件。

 

Kubernetes 设计理念

1、API设计原则:  声明式(比如我要有3个pod),描述一个状态(这个由kubernetes 所处的业务场景所决定的)。

2、控制机设计原则(程序实现内部的一个设计原则):

  a、假定任何错误都可能发生,每个地方都需要做容错处理

  b、每个模块发生错误后都能自动修复

  c、每个模块都可以在必要的时候优雅降级。(要求在设计过程中清晰划分基本功能、高级功能,保证高级功能不会依赖基本功能,从而保证了不会因为高级功能故障而导致整个系统不可用)

 

 

同一Node上的同一pod的不同容器间通讯。 容器之间可以使用 localhost:port 进行相互通讯。

 

同一个Node上的不同pod之间的通讯。

同一个Node上的Pod 的路由都是Docker0,由于他们都关联在同一个网桥Docker0上,网段是相同的,所以他们是可以直接通过Docker0网桥进行相互访问的。

所以他们可以通过pod的IP直接进行相互访问。

 

 

不同Node上的不同pod之间的通讯。

前提条件是: pod的IP不能相同。

pod的IP与所在Node的IP关联起来,通过这个关联,让pod之间能够相互访问。

 

 

Kube-proxy(ClusterIP):

proxy给每个service做一个虚拟IP,并将这个IP重定向到后端服务的一个集合。

这个虚拟IP只能在集群内部访问,并且是固定的。只要Service不删除,这个IP是不变的。

 

Kube-proxy(NodePort):

 proxy在所在的Node上启一个监听端口,将服务暴露在节点上。这样就可以让集群外部的服务通过NodeIP和端口 去访问集群内的服务。

 

Kube-DNS:

让任何一个pod都可以通过名字去访问另外一个pod。

 

posted on 2018-05-05 17:31  HB1  阅读(132)  评论(0)    收藏  举报

导航