我正在运行kubernetes LB,但外部ip说' pending ';看起来它正在尝试获得ip,但是,我需要它作为' localhost ';在我的浏览器中访问它:
我错过了什么?
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/dev-pypi LoadBalancer 10.106.128.15 <pending> 80:30914/TCP 2m7s
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 47h
service/qa-pypi LoadBalancer 10.97.62.94 <pending> 8200:30114/TCP 94m
提前感谢。这是我的html文件:
kind: Service
apiVersion: v1
metadata:
name: qa-pypi
spec:
type: LoadBalancer
selector:
app: pypi-qa
ports:
- protocol: TCP
port: 8200
targetPort: 8080
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: qa-pypi
labels:
app: pypi-qa
spec:
replicas: 2
selector:
matchLabels:
app: pypi-qa
template:
metadata:
labels:
app: pypi-qa
spec:
containers:
- name: pypi-qa
imagePullPolicy: IfNotPresent
image: myimg2
ports:
- containerPort: 8080
volumeMounts:
- name: storageqa
mountPath: /app/local
volumes:
- name: storageqa
persistentVolumeClaim:
claimName: persistvolumeqa
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: persistvolumeqa
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
谢谢!!!!!!!!!!!!!!!!!!!!
你已经在这里有很多建议如何使用localhost
,你可以用NodePort
做什么。让我来填补空白,并解释为什么你看到Pending
状态。
看,minikube本身不分配和提供LoadBalancer
ip地址。LoadBalancer
服务类型广泛应用于云实现中,如EKS、AKS、GKE等。因为一旦你选择这种类型,云服务提供商就会在后台创建你的负载均衡器。
如果你想在minikube中使用LoadBalancer
,你应该首先配置minikube。你可以使用内置的metallb minikube插件。
MetalLB已经解决了这个差距,并提供了网络LoadBalancer作为一个插件实现。
在metallb安装和配置期间,您可以设置将分配给LoadBalancer
服务而不是Pending
状态的本地ip地址范围
如果你想了解更多关于这一点,并查看配置的真实示例-例如,查看Minikube中的MetalLB配置-启用类型为"LoadBalancer"的Kubernetes服务文章
您可以使用入口从浏览器访问您的应用程序进入
settingup_ingress
教程
如果你没有找到你的主机设置后,它可能需要注册在根./etc/hosts
127.0.0.1 localhost
127.0.0.1 https-my-nginx.com
要在localhost中暴露你的应用,你可以尝试NodePort类型。如果您尝试使用kubeadm,您可以使用NodePort类型或ClusterIp类型,这样您就可以在本地公开它。通常,负载平衡器被广泛应用于云机器上的部署。
如果您正在尝试使用minikube,那么运行minikube tunnel
,以便为Loadbalancer添加外部ip。
您必须首先在您的机器(平台)上配置外部IP,然后只有外部IP将分配给您的服务。它可以是VIP,你可以广告或地址池需要制作,否则设置入口也将无法达到目的,因为入口本身需要外部IP来分配通信。
这是一个网络的东西,你需要在你的私人机器上设置。
如果你不想使用这个选项,那么你可以选择可以通过nodeip:nodeport外部访问的节点端口。