logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

网络结构对比

背景生产环境同时存在k8s集群的微服务与部署在虚拟机上的微服务,为了能够实现服务发现,需要做到集群内部使用和提供微服务的POD能够与K8S集群之外的主机网络互相可达。K8S下服务发现的问题在kubernetes集群里面,一般采用虚拟网络,不能直接与外部的网络进行直接通信。当在Pod里面注册微服务时,如果没有使用Node:Port暴露服务,Pod提供的服务不能被外部的访问。所以需要提供一种有...

采用Istio Gateway作为网络的流量入口

Istio GatewayIstio社区意识到了Ingress和Mesh内部配置割裂的问题,因此从0.8版本开始,社区采用了 Gateway 资源代替K8s Ingress来表示流量入口。Istio Gateway资源本身只能配置L4-L6的功能,例如暴露的端口,TLS设置等;但Gateway可以和绑定一个VirtualService,在VirtualService 中可以配置七层路由规则,这..

采用K8s Ingress作为网格的流量入口

如何为服务网格选择入口网关?在Istio服务网格中,通过为每个Service部署一个sidecar代理,Istio接管了Service之间的请求流量。控制面可以对网格中的所有sidecar代理进行统一配置,实现了对网格内部流量的路由控制,从而可以实现灰度发布,流量镜像,故障注入等服务管控功能。但是,Istio并没有为入口网关提供一个较为完善的解决方案。K8s Ingress在0.8版本以前,...

operator开发流程

Operator 是 CoreOS 推出的旨在简化复杂有状态应用管理,它是一个感知应用状态的控制器,通过扩展 Kubernetes API 来自动创建、管理和配置应用实例。 Operator 基于 CRD 扩展资源对象,并通过控制器来保证应用处于预期状态。通过 Kubernetes API 观察集群的当前状态;分析当前状态与期望状态的差别;调用k8s API消除这些差别。为什么使用cr...

Istio控制面

Istio控制面板包括3个组件:Pilot, Mixer和Istio-Auth。PilotPilot维护了网格中的服务的标准模型,这个标准模型是独立于各种底层平台的。Pilot通过适配器和各底层平台对接,以填充此标准模型。例如Pilot中的Kubernetes适配器通过Kubernetes API服务器得到kubernetes中pod注册信息的更改,入口资源以及存储流量管理规则等信息,然后将...

内部通讯-ClusterIP

内部服务间的通信首先,我们来回顾一下Kubernetes集群内部各个服务之间相互访问的方法。Cluster IPKubernetes以Pod作为应用部署的最小单位。kubernetes会根据Pod的声明对其进行调度,包括创建、销毁、迁移、水平伸缩等,因此Pod 的IP地址不是固定的,不方便直接采用Pod IP对服务进行访问。为解决该问题,Kubernetes提供了Service资源,Ser...

外部通信-NodePort

如何从外部网络访问Kubernetes的Pod IP和Cluster IP都只能在集群内部访问,而我们通常需要从外部网络上访问集群中的某些服务,Kubernetes提供了下述几种方式来为集群提供外部流量入口。NodePortNodePort在集群中的主机节点上为Service提供一个代理端口,以允许从主机网络上对Service进行访问。Kubernetes官网文档只介绍了NodePort的功...

外部通讯-LoadBalancer

LoadBalancerNodePort提供了一种从外部网络访问Kubernetes集群内部Service的方法,但该方法存在下面一些限制,导致这种方式主要适用于程序开发,不适合用于产品部署。Kubernetes cluster host的IP必须是一个well-known IP,即客户端必须知道该IP。但Cluster中的host是被作为资源池看待的,可以增加删除,每个host的IP一般也...

到底了