如何在Kubernetes中公开外部ip?
我想用minikube公开我的kubernetes集群 想想我的树如何在Kubernetes中公开外部ip?,kubernetes,kubernetes-service,Kubernetes,Kubernetes Service,我想用minikube公开我的kubernetes集群 想想我的树 . ├── deployment.yaml
.
├── deployment.yaml
├── Dockerfile
├── server.js
└── service.yaml
我在本地建立我的docker映像,并且能够通过
kubectl create -f deployment.yaml
kubectl create -f service.yaml
。但是当我跑的时候
$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2h
nodeapp LoadBalancer 10.110.106.83 <pending> 80:32711/TCP 9m
及
如果运行以下命令:
kubectl公开部署nodeapp--type=NodePort
然后运行:
kubectl获取服务
它应该向您显示服务以及它暴露在哪个端口上
您可以通过以下方式获得Minikube IP:
根据K8S文档,curl$(minikube服务nodeapp--url)。因此,
type=LoadBalancer
可以用于AWS、GCP和其他受支持的云,而不是Minikube
在支持外部负载平衡器的云提供商上,将type字段设置为LoadBalancer将为您的服务提供负载平衡器
如前所述,将类型指定为NodePort,服务将在Minikube上的端口上公开。然后可以使用来自主机操作系统的url访问该服务
minikube服务nodeapp--url
可以使用metallb项目在minikube中实现负载平衡器类型的服务 这允许您脱机和在minikube中使用外部ip,而不仅仅是与云提供商一起使用
祝你好运 谢谢你的提示。curl命令可以工作,但是我仍然看不到公开的IP
type=LoadBalancer
是用于云的。@PraveenSripati实际上,即使在云提供程序之外,您也可以自由使用type:LoadBalancer
。它将与常规的NodePort
一样工作,具有完全相同的端点列表,但其EXTERNAL-IP
将处于状态forever@KonstantinVustin-同意,负载平衡器端口使用使用服务端口的nodeport。但是,最好是明确的。我的2c。如何使用此命令公开命名空间中的部署kubectl公开部署nodeapp--type=NodePort--namespace=test
?很高兴知道这一点。应包含在官方K8S服务文件中。我的赞成票:)令人沮丧的是,“minikube”不像kubernetes那样支持开箱即用的桌面Docker。后者更易于配置和使用,尽管在k8s更新中速度不如前者快。
$ cat deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nodeapp
labels:
app: nodeapp
spec:
replicas: 2
selector:
matchLabels:
app: nodeapp
template:
metadata:
labels:
app: nodeapp
spec:
containers:
- name: hello-node
image: hello-node:v2
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3000
cat service.yaml
kind: Service
apiVersion: v1
metadata:
name: nodeapp
spec:
selector:
app: nodeapp
ports:
- name: http
port: 80
targetPort: 3000
protocol: TCP
type: LoadBalancer
$ cat server.js
var http = require('http');
var handleRequest = function(request, response) {
console.log('Received request for URL: ' + request.url);
response.writeHead(200);
response.end('Hello User');
};
var www = http.createServer(handleRequest);