因为minikube使用service暴露端口是使用nodeIP:nodePort 而不是 localhost:nodePort 公开访问。我们只能使用kubectl的端口转发功能或者使用iptables的转发功能来实现外网服务暴露。
我这里使用shiro来举例
apiVersion: apps/v1
kind: Deployment
metadata:
name: shiro550
spec:
selector:
matchLabels:
app: shiro550
replicas: 1
template:
metadata:
labels:
app: shiro550
spec:
containers:
- name: shiro550
imagePullPolicy: IfNotPresent
image: vulhub/shiro:1.2.4
ports:
- containerPort: 8080
name: web
通过yaml文件可以看到监听得端口号为8080,【经过测试,不需要将类型改为NodePort】
使用kubectl的端口转发功能
minikubr kubectl - get pods
minikube kubectl -- port-forward --address 0.0.0.0 shiro550-79d84d958d-vj86w 20080:8080
最终浏览器访问,http://localhost:20080,成功访问到页面。
–driver=none 指定了使用的驱动程序为 none。这意味着 Minikube 将使用你本地机器的 Docker 守护进程来创建和管理 Kubernetes 集群,而不是创建一个独立的虚拟机。