gpt4 book ai didi

kubernetes - 如何在 Kubernetes 中公开外部 ip?

转载 作者:行者123 更新时间:2023-12-02 11:31:07 28 4
gpt4 key购买 nike

我想用 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 可以连接到集群。试图暴露一个 pods ,但外部 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);

最佳答案

根据 K8S 文档 here .因此,type=LoadBalancer 可以在 AWS、GCP 和其他受支持的云上使用,而不是在 Minikube 上。

On cloud providers which support external load balancers, setting the type field to LoadBalancer will provision a load balancer for your Service.

如前所述,将类型指定为 NodePort here并且该服务将暴露在 Minikube 上的一个端口上。然后可以使用主机操作系统的 url 访问该服务。

minikube service nodeapp --url

关于kubernetes - 如何在 Kubernetes 中公开外部 ip?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52611170/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com