从外部群集但在群集内访问kubernetics服务
问题描述:
在我的kubernetes群集中的同一端口上运行多个服务;所以它就像ser1,ser2,ser3都使用相同的端口8080.我可以从一个pod内部访问这些服务,如<serv-name>:8080
,但是我也可以以同样的方式从一个主机节点访问它们,即在一个容器之外,但从一个集群节点?从外部群集但在群集内访问kubernetics服务
我试着环顾四周,但没有在这方面找到任何相关的讨论。如果有人可能会建议请。
我的示例配置
apiVersion: v1
kind: Service
metadata:
name: svc1
namespace: sample
labels:
app: svc1
spec:
selector:
app: app1
ports:
- name: psvc1
port: 8080
targetPort: 9090
protocol: TCP
答
为德赖斯说,使用群集IP,我们可以从节点访问该服务。
kubectl run nginx --image=nginx --port=80 --expose=true
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 9d
nginx ClusterIP 10.103.206.246 <none> 80/TCP 52m
# curl 10.103.206.246:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
您是否试过用类型clusterIP暴露服务?这应该为您提供一个虚拟群集范围的IP,您可以使用指定的端口进行调用。 –
谢谢@DriesDeRydt。是的,我可以通过群集IP访问。但是,当服务启动或重新启动时,相同的clusterIP可能并不总是可用的。有没有办法告诉Kubernetes保留这样的虚拟IP或更适当的一系列虚拟IP。我需要在我的负载均衡器中配置这些群集IP。 –
是的,你可以指定IP:https://kubernetes.io/docs/concepts/services-networking/service/#choosing-your-own-ip-address –