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。
浙公网安备 33010602011771号