与“minikube service <服务名称>”等效的 kubectl 命令是什么?

God*_*Tan 5 command equivalent kubectl minikube

我已经执行了minikube service mynginx1,结果是:

 |-----------|----------|-------------|-----------------------------|
 | NAMESPACE |   NAME   | TARGET PORT |             URL             |
 |-----------|----------|-------------|-----------------------------| 
 | default   | mynginx1 | 8080-80     | http://192.168.85.153:31706 |
 |-----------|----------|-------------|-----------------------------|
Run Code Online (Sandbox Code Playgroud)

如果我不使用 minikube,那么 kubectl 等效命令是什么,以便我可以检索 URL?

Mat*_*att 3

要公开 k8s 应用程序,您可以使用kubectl Exposure 创建NodePort 类型的服务

kubectl expose pod <pod_name> --type NodePort --port 8080
Run Code Online (Sandbox Code Playgroud)

或者

kubectl expose deployment <deployment_name> --type NodePort --port 8080
Run Code Online (Sandbox Code Playgroud)

然后当您列出您的服务时,您将看到:

$ kubectl get services
NAME           TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
<service_name> NodePort    10.99.147.24   <none>        8080:31208/TCP   3s
Run Code Online (Sandbox Code Playgroud)

请注意 PORT 列下的两个端口:8080:31208/TCP。第一个是集群内端口,第二个是节点端口。因此,现在您可以使用以下方式通过 nodePort 访问您的服务:<node-IP>:31208从集群外部。

还有另一个选项仅适用于在云环境中运行并且支持 LoadBalancer 的情况(因此,如果您使用 k8s 作为服务解决方案或在配置了云提供商的云中运行自托管 k8s)。您可以创建LoadBalancer 类型的服务,如下所示:

kubectl expose pod <pod_name> --type LoadBalacer --port 8080
Run Code Online (Sandbox Code Playgroud)
$ kubectl get services
NAME             TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
<service_name>   LoadBalancer   10.107.151.19   x.x.x.x       8080:31111/TCP   2s
Run Code Online (Sandbox Code Playgroud)

现在使用 EXTERNAL-IP 地址连接到您的服务:x.x.x.x:8080