k8s两个节点去pod如何通信(k8s 多个pod)
原标题:k8s两个节点去pod如何通信(k8s 多个pod)
导读:
如何在集群外部通过ip直连Pod?1、如果要在集群外部访问pod,通常可以使用三种方式:NodePort,HostPort和LoadBalancer。其中NodePort最为...
如何在集群外部通过ip直连Pod?
1、如果要在集群外部访问pod,通常可以使用三种方式:NodePort,HostPort和LoadBalancer。其中NodePort最为常用,在每个kube-proxy节点上开启代理端口以供外部访问。除此之外有没有别的办法可以在集群直接访问到POD呢?答案是有的。
2、首先,确保办公网段与Kubernetes集群网段不同,实现网络连接的关键在于路由方案。建议选择三层路由方案或Host-GW,避免因数据包封包解包过程中路由方向丢失。我所用的集群是Calico,且关闭了IPIP模式。具体IP配置需依据Calico文档。选择Calico的Route Reflectors(RR)或Full-MESh模式时,需权衡资源消耗。
3、首先,准备一个在五个pod中运行的应用程序。创建一个服务对象,使用服务负载平衡器配置文件示例。配置文件描述了一个名为hello-world的部署,包含5个副本的pod,使用指定的容器镜像和端口。创建Deployment对象和关联的ReplicaSet对象,ReplicaSet拥有五个pod,每个pod运行Hello World应用程序。
4、OpenShift中存在三层IP地址概念,要从集群外部访问Pod中的应用,通常有两种方式。使用Ansible默认配置部署OpenShift集群时,在集群Infra节点上运行的HAProxy Pod会监听170.0.1上的10443和10444端口。Router服务的部署需要在集群Infra节点上实现,端口只能被占用一次。
5、外部流量访问应用时,通过F5 BIG-IP硬件设备直接代理到集群中的Pod。 这样做的好处,很明显。Openshift通过BIG-IP Controller来控制BIG-IP设备。由于Openshift是基于Kubernetes的,所以它们使用同一个Controller(k8s-bigip-ctlr)。BIG-IP Controller为集群中的应用配置BIG-IP对象,提供南北流量的服务。
K8s服务调用的方法和原理,一篇文章给你说明白
在K8s中,服务(Service)提供了一种网络抽象,允许内部Pod间通过Service名进行通信。例如,一个名为frontend的Service可以通过frontend或frontend..svc.cluster.local的DNS名称访问同一命名空间内的服务。
理论 PV概念:PV是对K8S存储资源的抽象,一般由运维人员创建和配置,供容器申请使用。PV相当于对磁盘的分区,为容器提供存储空间。PVC概念:PVC是Pod对存储资源的一个申请,主要包括存储空间申请、访问模式等。创建PV后,Pod就可以通过PVC向PV申请磁盘空间。
服务账号(Service Account)是一种自动被启用的用户认证机制,使用经过签名的 持有者令牌来验证请求。 当服务账号创建后,k8s会自动生成对应的secret,存有可以用来认证的Token。 上面的token就可以用来认证。 所有使用token进行认证的请求 ,都要加上 Authorization 的 HTTP请求头,其值格式为 Bearer TOKEN 。
Network:了解K8S的网络通信模型
1、首先,Kubernetes的网络模型以Pod为基础,每个Pod都有独立的IP地址,类似于一台虚拟机,这使得Pod之间的通信变得直接且易于实现服务发现和负载均衡。
2、flAnnel,k8s的网络模型,为k8s集群内的容器提供网络服务的组件。主要作用:为集群内所有容器提供一个扁平化的网络环境,即:所有容器在flannel提供的网络平面上可以看作是在同一网段,自由通信。其模型为全部的容器使用一个network,然后在每个host上从network中划分一个子网subnet。
3、Pod是Kubernetes的基本操作单元,它包含一个或多个紧密相关联的容器。Pod内的容器共享同一网络栈、IP地址和存储资源,这使得容器之间通信和数据交换更为高效。Pod的生命周期通过Replication Controller管理,确保容器在Node上运行并能够自动恢复。