我正在运行一个种类的集群,我需要从其中一个pod访问主机。我知道在minikube中,你可以使用10.0.0.2
访问它。有没有什么方法我可以访问它,就像我在Docker Desktop上使用host.docker.internal
一样?
Docker使用默认子域172.17.0.0/16,并为pod分配IP地址172.17.X.X
主机服务器可以使用ip地址172.17.0.1 进行访问
检查是否可以从Kind pod访问主机端口?,很可能是您正在寻找的解决方案。
- 使用qoomon/docker主机的解决方法
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: dockerhost
labels:
k8s-app: dockerhost
spec:
replicas: 1
selector:
matchLabels:
k8s-app: dockerhost
template:
metadata:
labels:
k8s-app: dockerhost
spec:
containers:
- name: dockerhost
image: qoomon/docker-host
securityContext:
capabilities:
add: ["NET_ADMIN", "NET_RAW"]
env:
# Not needed in MacOs:
- name: DOCKER_HOST
value: 172.17.0.1 # <-- docker bridge network default gateway
---
apiVersion: v1
kind: Service
metadata:
name: dockerhost
spec:
clusterIP: None # <-- Headless service
selector:
k8s-app: dockerhost
- 检查iptables方式
具有容器名称的类pod:测试
本地容器:myapp暴露端口8081
允许防火墙中的端口
iptables -I INPUT -p tcp --dport 8081 -j ACCEPT
现在,从实物集群中的容器内部测试,您可以运行:
curl 172.17.0.1:8081
其中172.17.0.1是您的docker网桥默认网关。