我想知道当没有为该特定Pod定义服务时如何访问Pod。如果通过环境变量,集群如何检索这些变量?
另外,在定义服务时,它在主节点上的什么位置存储?
亲切的问候,查尔斯
小智 5
您无法在没有服务的情况下“访问”pods 容器端口。服务是定义最终 iptable 规则集的期望状态的对象。
此外,服务与所有其他对象一样,存储在 etcd 中并通过您的主人进行维护。
但是,您可以手动创建一个 iptable 规则,将流量转发到 docker 公开的本地容器端口。
希望这可以帮助!如果您还有任何问题,请将它们放在这里。
如果为应用程序定义服务,则可以使用该服务在集群外访问它
服务有多种类型,包括 nodePort ,您可以在任何集群节点上访问该端口,并且无论 pod 的实际位置如何,您都可以访问该服务。
您也可以访问集群内部的端点或实际 pod 端口,但不能访问集群外部
以上都使用了kubernetes服务发现
小智 5
仅出于调试目的,您可以将计算机上的端口转发到 pod 中的端口:
kubectl port-forward POD_NAME HOST_PORT:POD_PORT
Run Code Online (Sandbox Code Playgroud)
如果您必须从任何地方访问它,您应该使用服务,但您必须创建一个部署
创建部署
kubectl create -f https://raw.githubusercontent.com/kubernetes/website/master/content/en/examples/service/networking/run-my-nginx.yaml
Run Code Online (Sandbox Code Playgroud)
使用 NodePort 服务公开部署
kubectl expose deployment deployment/my-nginx --type=NodePort --name=nginx-service
Run Code Online (Sandbox Code Playgroud)
然后列出服务并获取服务的端口
kubectl get services | grep nginx-service
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1879 次 |
| 最近记录: |