服务是外部的-ip是并且无法绑定到外部端口.我已经运行命令试图找到端口。
微型巴士服务mongodb-特快服务
终端上没有显示错误。但是浏览器说它无法连接到那个url。
环境
mongo-express.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: mongo-express
labels:
app: mongo-express
spec:
replicas: 1
selector:
matchLabels:
app: mongo-express
template:
metadata:
labels:
app: mongo-express
spec:
containers:
- name: mongo-express
image: mongo-express
ports:
- containerPort: 8081
env:
- name: ME_CONFIG_MONGODB_ADMINUSERNAME
valueFrom:
secretKeyRef:
name: mongodb-secret
key: username
- name: ME_CONFIG_MONGODB_ADMINPASSWORD
valueFrom:
secretKeyRef:
name: mongodb-secret
key: password
- name: ME_CONFIG_MONGODB_SERVER
valueFrom:
configMapKeyRef:
name: mongodb-config-map
key: database_url
---
apiVersion: v1
kind: Service
metadata:
name: mongodb-express-service
spec:
selector:
app: mongodb-express-service
type: LoadBalancer
ports:
- protocol: TCP
port: 8081
targetPort: 8081
nodePort: 30001
更新 Kubectl获取服务输出
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 14d
mongodb-express-service LoadBalancer 10.106.190.5 <pending> 8081:30001/TCP 2d3h
mongodb-service ClusterIP 10.110.241.194 <none> 27017/TCP 3d23h
Kubectl获得豆荚输出
mongo-express-85bdd6688f-mhv2x 1/1 Running 2 2d3h
mongodb-deployment-7f79c5f88f-h9dvf 1/1 Running 2 2d3h
发布于 2021-04-19 08:16:30
张贴此答案,以提供更多关于两个主题的参考:
Kubernetes服务无法获得外部IP
Service
,LoadBalancer
型
使用云提供商的负载均衡器公开服务外部的。自动创建外部负载均衡器路由的
NodePort
和ClusterIP
服务。
在像minikube
这样的Kubernetes解决方案中,您将不会跳出与Service
类型LoadBalancer
相关联的External IP
。您不需要External IP
来连接到您的Services
。您可以通过Services
()连接到您的
NodePort
($ minikube service xyz
正在使用它)$ minikube tunnel
(这将“分配”External IP
的)Virtualbox
特异性:metallb
(裸金属Kubernetes簇的负载均衡器实现)从纯主机网络适配器使用的子网中为LoadBalancers
分配范围。本问题中存在的问题
问题中存在的问题与Service
.spec.selector
和Deployment
.spec.selector.matchLabels
之间的不匹配有关。
检查selector
配置是否正确(除了查看YAML
清单之外)最简单的方法是:
$ kubectl get endpoints
NAME ENDPOINTS AGE
kubernetes A.B.C.D:443 28m
nginx --> 10.32.0.13:80 <-- 5s
免责声明
endpoint
将在Pod
处于Running
状态和Ready
时出现。
如果nginx
(Service
name) endpoints
是空的,它可能意味着一个不匹配的选择器或Pod
(CrashLoopBackOff
、Pending
等)的问题。
您还可以通过以下方法来检查这一点:
$ kubectl describe svc SERVICE_NAME
<-- Endpoints
字段$ kubectl describe endpoints SERVICE_NAME
<-- Subsets.addresses
字段追加资源:
发布于 2021-10-10 12:30:54
您没有将LoadBalancer连接到mongo部署。将选择器->应用程序更改为
###... previous config here
---
apiVersion: v1
kind: Service
metadata:
name: mongodb-express-service
spec:
selector:
app: mongo-express
type: LoadBalancer
ports:
- protocol: TCP
port: 8081
targetPort: 8081
nodePort: 30001
发布于 2021-04-10 15:28:42
您的应用程序中缺少几个资源。如果您已经创建了它,那么请与我的验证。否则就创造它。
1:创建Configmap资源
apiVersion: v1
kind: ConfigMap
metadata:
name: mongodb-config-map
data:
database_url: mongodb-service
2:创建秘密资源
apiVersion: v1
kind: Secret
metadata:
name: mongodb-secret
type: Opaque
data:
username: dXNlcm5hbWU=
password: cGFzc3dvcmQ=
3:在终点站
minikube service mongodb-express-service
下面是我的终端的输出,你可以改变。
|-----------|-------------------------|-------------|---------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|-------------------------|-------------|---------------------------|
| default | mongodb-express-service | 8081 | http://192.168.49.2:30001 |
|-----------|-------------------------|-------------|---------------------------|
Starting tunnel for service mongodb-express-service.
|-----------|-------------------------|-------------|------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|-------------------------|-------------|------------------------|
| default | mongodb-express-service | | http://127.0.0.1:53898 |
|-----------|-------------------------|-------------|------------------------|
Opening service default/mongodb-express-service in default browser...
编辑更新:
我已经核实了您的清单,并注意到
Service selector
与Deployment selector
不匹配。将Service: spec.selector
改为app: mongo-express
,而不是:app: mongodb-express-service
。
https://stackoverflow.com/questions/67034433
复制相似问题