嗨,我正在尝试使用kubernetes在mongo数据库和nodejs应用程序之间进行通信。一切顺利。但我无法从外部环境访问我的api。我也无法远程登录端口。
apiVersion: v1
kind: Service
metadata:
name: node
labels:
app: node
tier: backend
spec:
type: NodePort
ports:
- port: 3000
nodePort: 30005
externalIPs:
- 34.73.154.127
# # Replace with the IP of your minikube node / master node
# selector:
# app: node
# tier: backend
这是我的服务Yaml文件
当我使用命令检查端口状态时
sudo lsof -i:30005
我可以看到如下结果
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
kube-prox 2925 root 8u IPv6 32281 0t0 TCP *:30005 (LISTEN)
现在我应该可以使用ip像这样通过telnet端口了
telnet 34.73.154.127 30005
,但我得到的结果如下。
Trying 34.73.154.127...
telnet: Unable to connect to remote host: Connection refused
如果我的朋友中有人建议端口未打开,那么请注意,我已经从任何地方打开了所有端口范围。
我想让您知道的另一件事是,我在端口30006上本地使用npm部署了示例节点应用程序,并且能够在该端口上进行telnet。因此得出的结论是,所有端口范围都是开放的并且可以正常工作。
这是service的describe命令结果
kubectl describe service/node
结果:
Name: node
Namespace: default
Labels: app=node
tier=backend
Annotations: kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app":"node","tier":"backend"},"name":"node","namespace":"defau...
Selector: <none>
Type: NodePort
IP: 10.102.42.145
External IPs: 34.73.154.127
Port: <unset> 3000/TCP
TargetPort: 3000/TCP
NodePort: <unset> 30005/TCP
Endpoints: <none>
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
请让我知道我怎么了..
ENVIRONMENT:
cloud :google cloud platform
container :using docker and kubernetes
ubuntu 16.04 LTS
kubernetes 1.13.0
答案 0 :(得分:2)
嗨,我犯了一个愚蠢的错误。
只是在我的服务yaml文件中未对此进行评论,它开始起作用
# # Replace with the IP of your minikube node / master node
# selector:
# app: node
# tier: backend
答案 1 :(得分:0)
为了从外部访问您的服务,您需要将此服务公开为LoadBalancer类型,例如:
model.add(Embedding(input_dim=vocab_size,
output_dim=emdedding_size,
embeddings_initializer=initializers.Constant(pretrained_weights),
trainable=False))
Google Cloud Platform将为您提供一个可公开路由的IP地址,并将为您打开防火墙 。