摘要:在本文中,我们将介绍最简单的示例。 请注意,下图中各列下方显示的端口类型是由命令自动生成的,范围为 from 到。 该端口号包含在配置文件中,如果需要更改,可以编辑该文件。 您可以自由使用任何您想要的地址,并且可以将它们组合起来以获得供外部使用的完整地址。
很多 Kubernetes 新手对 Kubernetes 的三种不同 IP 地址以及它们的工作原理并没有清晰的了解。
本文我们将通过最简单的例子来学习。
使用以下命令行创建基于 nginx 的部署。
kubectl run nginx --image=nginx:maxline
使用kubectl查看成功生成的名为getdeploy nginx的部署:
目前,该部署中的nginx pod无法对外提供服务。
我们创建一个服务,以便外界可以使用它。 要创建此类服务,请使用命令行。
kubectl Exposeployment nginx --type=LoadBalancer --port=80 --target-port = 80
选择 LoadBalancer并为 --端口指定端口 80。 这意味着这个服务对外暴露的服务端口是80,--target。 -port=80,该端口是pod中nginx docker容器提供的工作端口,默认为80。 这样实际上就建立了外部开发的80端口和nginx内部端口的映射关系。 容器。
执行完成后,调用以下命令行查看创建的服务的集群IP和外部信息。艾尔·IP。
外部IP很容易理解。 该服务通过外部IP并映射到我们之前介绍过的80端口来为外界提供服务。
参考如果您在服务器中输入外部IP http://35.241.173.27:80,您可以: 我可以成功访问nginx服务器上的index.html:
但是我无法通过服务的集群IP访问它。 该服务提供的功能。
我们知道,Kubernetes 中的所有 Pod 之间都可以相互通信,而无需经过网络地址转换 - NAT,并且所有节点也可以与所有 Pod 通信。 集群的服务IP是专门用于与集群中的节点或Pod通信的内部IP地址。 与外界的通信继续通过外部 IP 进行。
NodePort
重试 NodePort。
kubectl公开部署nginx --type=NodePort --port=80 --target-port=80
注意请注意下图中 PORT 列下列出的端口类型 NodePort:31375
此端口号由 Kubernetespublish 命令自动生成,范围从 30000 到 32767。 如果需要更改,可以编辑API服务器配置文件: /etc/kubernetes/apiserver:
将此端口号更改为允许你可以使用任何IP。 拼接后的节点地址:31375是外部可用的完整地址。
使用命令行 kubectl 获取节点 -o 宽度,选择结果中任意节点的外部- IP,后跟:31375:
测试:
http://146.148 .23.183 :31375/
测试通过。
Pod 的端口转发功能
出于测试目的,如果您想要一种简单的方法来检查 Pod 是否可以成功提供服务,那么值得一提。确实有。 每次都通过 kubectl 创建服务很乏味。
一个简单的方法是使用 Pod 的端口转发功能。
例如,假设您要测试下图中 get pods 返回的第一个 pod 的功能。 名称为 nginx-6f754dd4b9-74jdn:
运行命令行 kubectl port-forward pod/nginx-6f754dd4b9-74jdn 8080: 80 我会的。
您将看到提示消息“Forwarding from 127.0.0.1:8080”。 ->80。 这意味着当前主机的8080端口映射到nginx pod的80工作端口。
最后,您可以直接访问所提供的服务。 通过 nginx pod via localhost:8080:
更多 Jerry 原创文章,关注公众号“王子熙”:
评论前必须登录!
注册