pod

将服务暴露给外部服务器以下几种方法可以实现外部访问服务:
1.将服务类型设置为NodePort

每个集群节点都会在节点上打开一个端口,对于NodePort服务,每个集群节点在节点本身上打开一个端口,并将在该端口上接收到的流量重定向到基础服务。该服务在内部集群ip和端口上才能访问,也可以通过节点上专用端口访问。
这种方法类似于常规的服务,但是不仅可以通过服务部分的内部集群IP访问NodePort服务,还可以通过任何节点的IP和预留节点端口访问NodePort服务。如果不指定端口,k8s会选择一个随机端口。

2.将服务类型设置为LoadBalance

NodePort类型中的一种扩展。通过一种专用的负载均衡器来访问,负载均衡器将流量定向到跨所有节点的节点端口,客户端通过负均衡器的IP连接到服务。通常来说,云提供商上运行的k8s集群通常支持从云基础架构自动提供负载平衡器,其拥有独一无二的可公开访问的IP地址,并将所有连接重定向到服务。

3.创建一个Ingress资源。

通过一个IP地址公开多个服务,由于运行在HTTP层,相比四层服务拥有更多的功能。
(OSI模型有7层结构,每层都可以有几个子层。 OSI的7层从上到下分别是 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层 ;其中高层(即7、6、5、4层)定义了应用程序的功能,下面3层(即3、2、1层)主要面向通过网络的端到端的数据流。)
Ingress相对比loadBalance来说,只需要一个公网的IP就能为很多服务提供访问。当客户端发送HTTP请求时,Ingress会根据请求的主机名和路径决定请求转发的服务。另外,只有Ingress控制器在集群中运行,Ingress资源才能正常工作,不同的k8s环境使用不同的控制器来实现,但有些并不提供默认控制器。

就绪探针

pod的标签如果和服务的pod选择器相匹配,那么pod就将作服务的后端。只要创建了具有适当标签的新pod,它就会成为服务的一部分。如果pod没有准备好,通过就绪指针让pod不要立即开始接收请求,不讲请求转发到正在启动的pod中,直到完全就绪。 1.exec探针,容器状态由进程的退出状态代码确定。
2.HTTP GET探针,向容器发送HTTP GET请求,通过响应的HTTP状态代码判断容器是否准备好。
3.TCP socket探针,打开一个TCP连接到容器的指定端口。如果连接已确定,则认为容器已准备就绪。

作用

启动容器时可以为k8s配置一个等待时间,经过等待时间之后执行第一次准备就绪检查,之后周期性调用指针并根据探针的结果采取行动。如果某个pod报告其未准备就绪,则从该服务中删除该pod,准备就绪添加pod。
与存活指针不同的是,存活指针通过杀死异常的容器并用新的正常的容器替代来保持pod正常工作,就绪指针确保只有准备好处理请求的pod才可以接收请求。

你可能感兴趣的:(python,tensorflow)