[英]How to expose elastic kubernetes cluster in Googlecloud to external ip?
[英]How to expose external ip in Kubernetes?
我想用minikube公开我的kubernetes集群。
考虑我的树
.
├── deployment.yaml
├── Dockerfile
├── server.js
└── service.yaml
我在本地构建docker映像,并能够通过运行所有Pod
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
没有外部IP可以连接到群集。 尝试公开一个Pod,但外部IP却没有。 为什么没有外部IP?
$ 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);
可以使用metallb项目https://github.com/google/metallb在minikube中实现负载均衡器类型的服务
这使您不仅可以通过云提供商,还可以在minikube中离线使用外部ip。
祝好运!
如果运行以下命令:
kubectl expose deployment nodeapp --type=NodePort
然后运行:
kubectl get services
它应该向您显示服务及其公开的端口。
您可以使用以下方法获取Minikube IP:
curl $(minikube service nodeapp --url)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.