我已经执行了minikube service mynginx1
,结果是:
|-----------|----------|-------------|-----------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|----------|-------------|-----------------------------|
| default | mynginx1 | 8080-80 | http://192.168.85.153:31706 |
|-----------|----------|-------------|-----------------------------|
如果我不使用minikube,有哪些等效的kubectl命令可以让我检索URL?
要公开k8s应用程序,可以使用kubectl公开创建NodePort:类型的服务
kubectl expose pod <pod_name> --type NodePort --port 8080
或
kubectl expose deployment <deployment_name> --type NodePort --port 8080
然后当你列出你的服务时,你会看到:
$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
<service_name> NodePort 10.99.147.24 <none> 8080:31208/TCP 3s
注意PORT列下的两个端口:8080:31208/TCP
。第一个是集群端口,第二个是节点端口。因此,现在您可以在集群外使用:<node-IP>:31208
访问nodePort的服务。
还有另一个选项仅适用于您在云环境中运行并且支持LoadBalancer的情况(因此,如果您使用k8s作为服务解决方案,或者在配置了云提供商的云中运行自托管k8s(。您可以创建LoadBalancer类型的服务,如下所示:
kubectl expose pod <pod_name> --type LoadBalacer --port 8080
$ 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
现在使用EXTERNAL-IP地址连接到您的服务:x.x.x.x:8080
港口前锋为我工作
kubectl port-forward deployment/es-manual 9200:9200
我在尝试使用Docker Desktop而不是Minikube时遇到了与OP相同的问题-Docker Desktop现在带有Kubernetes单节点集群,所以我认为没有必要安装Minikube才能在我的开发机器上玩Kubernete。
假设您使用kubectl get services
列出服务,那么您就可以使用kubectl cluster-info
获取主节点ip。OOTB,Docker Desktop将127.0.0.1
设置为主节点ip(也可以使用kubernetes.docker.internal
(
>> kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
helloworld NodePort 10.107.197.207 <none> 80:32714/TCP 71m
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3h4m
>> kubectl cluster-info
Kubernetes control plane is running at https://kubernetes.docker.internal:6443
CoreDNS is running at https://kubernetes.docker.internal:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
有了以上信息,我可以在http://kubernetes.docker.internal:32714/
或http://127.0.0.1:32714/
上启动helloworld
相当于minikube服务mynginx1会kubectl获取服务mynginx1