(1)Pod中的容器们运行在一个逻辑“主机”上。他们使用同一个网络命名空间(network namespace,换句话讲,就是同样的IP地址和端口空间),以及同样的IPC(inter-process communication,进程间通信)命名空间,他们还使用共享卷(shared volume)。这些特征使得Pod内的容器能互相高效地通信。同时,Pod使得你可以将多个紧耦合的应用容器当做一个实体来管理
-
pod中容器间通信
通过共享卷通信
进程间通信(IPC),可以类似与linux主机上进程之间通信
-
网络通信:Pod中的容器可以通过localhost 来相互通信,因为他们使用同一个网络命名空间,对于容器来说,hostname就是Pod名称。
在实际业务中,业务配置为此(localhost)方式进行配置,访问
-
pod与pod之间通信
- 两个pod在一台主机上面:通过docker默认的docker网桥互连容器 ??未理解
- 两个pod在不同主机上面:需要k8s网络模型flannel组建一个大二层扁平网络,pod的ip分配由flannel统一分配,通信过程也是走flannel的网桥。每个node上面都会创建一个flannel0虚拟网卡,用于跨node之间通讯。跨节点通讯时,发送端数据会从docker0路由到flannel0虚拟网卡,接收端数据会从flannel0路由到docker0
-
pod与集群外服务通信
image.png
(1)创建一个不指定后端pod label的Service
(2)手动创建一个和该Service 同名的Endpoint ,用于指向实际的后端访
问地址
kind : Service
apiVersion: vl
metadata:
name : my-service
spec:
ports:
- protocol : TCP
port : 80
targetPort: 80
kind: Endpoints
apiVersion : vl
metadata:
name: my-service
subsets :
- addresses:
- IP: 1. 2. 3 . 4
ports:
- port: 80
-
外部访问pod通信
-
NodePort:是K8s里一个广泛应用的服务暴露方式。K8s中的service默认情况都是使用Cluster IP这种类型,会产生一个只能在内部访问的Cluster IP,如果想能够直接访问service,需要将service type修改为nodePort。同时给改service指定一个nodeport值(30000-32767)
kind: Service apiVersion: v1 metadata: name: MyWeb spec: type: NodePort ports: - port:8086 nodePort: 30000 selector: name: MyWeb
-
hostNetwork: hostNetwork:true 在pod中使用该配置,在这种Pod中运行的应用程序可以直接看到pod启动的主机的网络接口
hostPort:直接将容器的端口与所调度的节点上的端口路由,这样用户就可以通过主机的IP来访问Pod了
-
LoadBalancer:只能在service上定义,是公有云提供的负载均衡器
kind: Service apiVersion: v1 metadata: name: influxdb spec: type: loadBalabcer ports: - port: 8086 selector: name: influxdb 内部可以使用ClusterIP加端口来访问服务 外部可以使用两种方式: 任意节点的IP加30051端口访问服务 10.97.121.42:30051 使用EXTERNAL-IP来访问,这是云供应商提供的负载均衡IP:8086
-
Ingress:ingress controller是由K8s管理的负载均衡容器,它的镜像包含一个nginx或HAProxy负载均衡器和一个控制器守护进程
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: influxdb spec: rules: - host: influxdb.kube.example.com http: paths: - backend: serviceName: influxdb servicePort: 8086 外部访问URL http://influxdb.kube.example.com/ping 访问该服务,入口是80端口,然后Ingress controller直接将流量转发给后端Pod,不需再经过kube-proxy的转发,比LoadBalance方式更高效