我正在尝试设置一个运行pptp-client的pod。
我想访问VPN后面的一台机器,这在本地工作正常,我的docker容器将记录添加到我的localhost的路由表中,一切都很好。
ip route add x.x.x.x dev ppp0
只要将privileged设置为true并且network_mode设置为“host”,我就只能建立与VPN服务器的连接
生产环境略有不同,“localhost”将是我们Google Container集群中的三个操作节点之一。
我不知道在建立的连接之后添加的路由是否只能由在该节点内运行的容器访问..但这是后来的问题。
搬运工-compose.yml
version: '2'
services:
pptp-tunnel:
build: ./
image: eu.gcr.io/project/image
environment:
- VPN_SERVER=X.X.X.X
- VPN_USER=XXXX
- VPN_PASSWORD=XXXX
privileged: true
network_mode: "host"
使用kubernetes似乎更难以实现,尽管这两个选项都存在并且在我的清单中可以看到。 (hostNetwork,特权)
Kubernetes版本
版本1.6.6
PPTP的tunnel.yml
apiVersion: v1
kind: Service
metadata:
name: pptp-tunnel
namespace: default
labels:
spec:
type: ClusterIP
selector:
app: pptp-tunnel
ports:
- name: pptp
port: 1723
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: pptp-tunnel
namespace: default
spec:
replicas: 1
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
type: RollingUpdate
selector:
matchLabels:
app: pptp-tunnel
template:
metadata:
labels:
app: pptp-tunnel
spec:
hostNetwork: true
containers:
- name: pptp-tunnel
env:
- name: VPN_SERVER
value: X.X.X.X
- name: VPN_USER
value: XXXX
- name: VPN_PASSWORD
value: 'XXXXX'
securityContext:
privileged: true
capabilities:
add: ["NET_ADMIN"]
image: eu.gcr.io/project/image
imagePullPolicy: Always
ports:
- containerPort: 1723
我也尝试过添加功能:你可以看到NET_ADMIN,没有效果。将容器设置为特权模式应禁用安全性,我不应该同时使用这两者。
很高兴不必将容器设置为特权模式,只需依靠功能来启动ppp0接口并添加路由。
POD启动时会发生的事情是pptp-client只是继续发送请求和超时。 (这在我的docker容器本地发生,直到我打开network_mode“host”。)
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xa43cd4b4> <pcomp> <accomp>]
LCP: timeout sending Config-Requests
但这没有启用hostNetwork,如果我启用它,我只需发送一个请求,然后调制解调器挂起。
using channel 42
Using interface ppp0
Connect: ppp0 <--> /dev/pts/0
sent [LCP ConfReq id=0x7 <asyncmap 0x0> <magic 0xcdae15b8> <pcomp> <accomp>]
Script ?? finished (pid 59), status = 0x0
Script pptp XX.XX.XX.XX --nolaunchpppd finished (pid 60), status = 0x0
Script ?? finished (pid 67), status = 0x0
Modem hangup
Connection terminated.
声明HostNetwork布尔让我看到从主机共享的多个接口,所以这是有效的,但不知何故我无法建立连接,我无法弄清楚原因。
也许有更好的解决方案?我仍然需要建立与VPN服务器的连接,但是向主机添加路由记录可能不是最好的解决方案。
非常感谢任何帮助!