NAME CLUSTER-IP … PORT(S) … SELECTOR
alpaca-prod 10.115.245.13 … 8080/TCP …
app=alpaca,env=prod,ver=1
bandicoot-prod 10.115.242.3 … 8080/TCP …
app=bandicoot,env=prod,ver=2
kubernetes 10.115.240.1 … 443/TCP … <none>
- 这是通过运行
kubectl get services
命令返回的服务列表,包括服务的名称、IP地址、端口以及选择器等信息。 - 这个命令可以帮助管理员查看当前集群中运行的服务以及它们的详细信息,比如服务的IP地址、端口、选择器等。
kubectl get services
命令是 Kubernetes 中一个非常常用的命令之一,它可以帮助管理员快速查看当前集群中运行的服务以及它们的详细信息,是排查问题和调试的重要工具之一。- 举个例子,如果你需要查看当前 Kubernetes 集群中所有服务的详细信息,可以运行
kubectl get services -o wide
命令。这将返回服务列表以及每个服务的详细信息,包括IP地址、端口、选择器等。 - 通俗来说,这个命令就是帮助管理员在 Kubernetes 集群中查看所有服务的详细信息。它可以让管理员快速了解当前集群中所有服务的IP地址、端口和选择器等,从而更好地了解整个集群的运行情况。
运行这些命令后,我们有三个服务。我们刚刚创建是 alpaca‑prod 和 bandicoot‑prod。 kubernetes 服 务会自动为您创建,以便您可以从应用程序中查找并与 K ubernetes API 对 话。如果我们查看 S ELECTOR 列,我们会看到 alpaca‑prod 服务只是为选择器提供了一个名称,并指定了该服务要与哪些端口通信。 kubectl e xpose 命令将方便地从部署定义中提取标签选择器和相关端口(在本例中为 8080)此外,该服务被分配了一种称为集群 IP 的 新型虚拟 IP。这是一个特殊的IP地 ,系统将在选择器识别的所有Pod之间进行负载平衡。
此外,该服务被分配了一种称为集群IP的新型虚拟IP。这是一个特殊的IP地址,系统将在选择器识别的所有 Pod 之间进行负载平衡。为了与服务交互,我们将转发到其中一个alpaca Pods.
$ ALPACA_POD=$(kubectl get pods -l app=alpaca \
-o jsonpath='{.items[0].metadata.name}’)
- 这是一个命令,用于获取具有标签”app=alpaca”的Pod的名称。
- 它的作用是将获取的Pod名称赋值给环境变量ALPACA_POD,以便后续的命令可以引用该变量来操作特定的Pod,而不必手动键入Pod名称。
- 拓展一下,该命令使用了Kubernetes中的jsonpath模板语言来从Kubernetes API的输出中提取所需的信息,这是一种强大的过滤和选择工具。使用jsonpath语法可以从Kubernetes API的响应中选择和操作JSON数据,而不必解析整个响应。
- 举个例子,假设有多个Pod运行在集群中,其中标有标签”app=alpaca”的Pod有多个副本,我们需要通过命令获取其中的一个Pod的名称。我们可以使用该命令来获取其中一个Pod的名称,并将其赋值给环境变量,以便后续命令可以使用该变量来引用特定的Pod。
- 通俗描述就是这个命令用来获取一个特定标签的Pod的名称,并将其赋值给一个环境变量,以便后续的命令可以使用该变量来引用该Pod,而不必手动键入Pod名称。
$ kubectl port-forward $ALPACA_POD 48858:8080
kubectl port-forward
是 Kubernetes 命令行工具kubectl
中的一个命令,用于将本地计算机的端口与 Kubernetes Pod 中的端口进行映射。- 该命令的作用是,将指定的 Kubernetes Pod 的端口转发到本地计算机上的指定端口,以便通过本地计算机访问该 Pod 的网络服务。
- 拓展一下,
kubectl port-forward
命令可以帮助开发人员和系统管理员在 Kubernetes 集群中测试和调试网络应用程序,特别是那些需要远程访问的应用程序。使用该命令可以简化网络连接的配置,避免了使用负载均衡器等组件来访问 Kubernetes 中的服务。 - 举个例子,假设在 Kubernetes 中有一个名为
webapp
的 Pod,该 Pod 有一个网络服务监听在 8080 端口上。要将该服务映射到本地计算机的 8888 端口上,可以使用以下命令:
kubectl port-forward webapp 8888:8080 这将在后台启动一个端口转发进程,并将本地计算机上的 8888 端口转发到 Kubernetes Pod 中的 8080 端口上。
- 通俗描述一下,
kubectl port-forward
命令就像是在 Kubernetes Pod 和本地计算机之间建立了一条网络隧道,通过这条隧道可以访问 Pod 中的网络服务。这使得开发人员和系统管理员可以方便地在本地计算机上测试和调试 Kubernetes 应用程序。