安装 minikube 后,我一直在 AWS 实例(ubuntu 20.04)上按照 Kubernetes 官方网站上的教程进行测试:
https://kubernetes.io/docs/tasks/access-application-cluster/service-access-application-cluster/
我已经从安全组公开了节点端口 - 31055,如下所述 - 但我仍然无法远程访问该应用程序。当我尝试将curl与应用程序的url一起使用,从ssh访问远程服务器时,我可以获得我正在寻找的结果,但我无法从浏览器访问它。
我尝试使用 docker 驱动程序启动 minikube,也尝试不使用驱动程序,但我仍然面临同样的问题。
知道如何解决这个问题吗?
谢谢
在服务的完整 yaml 下方:
apiVersion: v1
kind: Service
metadata:
creationTimestamp: "2021-04-10T15:47:01Z"
managedFields:
- apiVersion: v1
fieldsType: FieldsV1
fieldsV1:
f:spec:
f:externalTrafficPolicy: {}
f:ports:
.: {}
k:{"port":8080,"protocol":"TCP"}:
.: {}
f:port: {}
f:protocol: {}
f:targetPort: {}
f:selector:
.: {}
f:run: {}
f:sessionAffinity: {}
f:type: {}
manager: kubectl-expose
operation: Update
time: "2021-04-10T15:47:01Z"
name: example-service
namespace: default
resourceVersion: "521"
uid: e19ea9a3-9700-4e37-b810-defb7e4fee67
spec:
clusterIP: 10.99.135.151
clusterIPs:
- 10.99.135.151
externalTrafficPolicy: Cluster
ports:
- nodePort: 31055
port: 8080
protocol: TCP
targetPort: 8080
selector:
run: load-balancer-example
sessionAffinity: None
type: NodePort
status:
loadBalancer: {}
所以一种解决方案是安装
conntrack
:
apt install conntrack
minikube start --driver=none
更好的解决方案是以正常方式启动 minikube,然后执行此操作(我在这里使用了全零,但您可以根据您的环境来细化安全性):
kubectl port-forward --address 0.0.0.0 svc/<service-name> <external-port>:<service-port>
外部端口是暴露在互联网上的端口,服务端口是容器正在侦听的端口。例如,如果我的服务名为
badstore
并且正在侦听端口 80
kubectl port-forward --address 0.0.0.0 svc/badstore 8888:80