我正在尝试在具有2个节点的Kubernetes集群中部署我的示例微服务Docker镜像。我探讨了有关Pods,Services,Deployment,StatefulSets和Daemon-sets等的所有内容。
我正在尝试为此创建示例部署和服务。在这里,我探讨了部署如何提供可伸缩性和负载平衡功能。并通过提供Services ClusterIp探索服务发现。
我有两个问题:
我的情况是我正在尝试在我的内部部署Ubuntu机器上部署微服务。本机的IP地址为192.168.1.15。当我指的是Kubernetes时,服务也会有一个clusterIP。
/api/v1/loadCustomer
,我怎么称呼这个终点?我是否还需要使用clusterIP?我可以简单地拨打192.168.1.15:8080/api/v1/loadCustomers吗?我指的是以下探索链接:
https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/
tldr:
您无法从群集外部使用clusterIP访问应用程序。您可以使用loadbalancer的IP(type=LoadBalaner
)或Node的IP(type=NodePort
)访问应用程序。
clusterIP的好处:如您所知,pod可以在其生命周期中创建和终止,从而创建和终止IP(端点IP)地址。因此,clusterIP是静态的,不依赖于pod的生命周期。
答案很长
在Kubernetes集群中,应用程序或pod具有以下抽象。
端点IP和端口:它由CNI插件提供,如法兰绒,印花布。
您可以通过以下命令列出并观察端点。
kubectl get endpoints --all-namespaces
clusterIP和port:由kube-proxy组件提供。
您可以使用以下命令列出并查看clusterIP和端口
kubectl get services --all-namespaces
externalIP和port:它可以是3-4层负载均衡器的IP和端口或节点的IP和Nodeport。
如果要使用loadbalancer的IP和端口,可以在服务文件中使用type=LoadBalaner
。
如果要使用节点的IP,则需要在服务文件中使用type=NodePort
。