在Kubernetes POD中build立PPTP连接

我正在尝试build立一个运行pptp-client的pod。

我想访问VPN后面的一台机器,这在本地工作正常,我的docker容器添加logging到我的本地主机的路由表,一切都很好。

ip route add xxxx dev ppp0 

我只能build立到VPN服务器的连接,只要特权设置为true,network_mode设置为“主机”

生产环境稍有不同,“本地主机”将成为我们的Google Container集群中的三个运营节点之一。

我不知道在已build立的连接之后添加的路由是否只能通过在该节点内运行的容器来访问,但这是以后的问题。

泊坞窗,compose.yml

 version: '2' services: pptp-tunnel: build: ./ image: eu.gcr.io/project/image environment: - VPN_SERVER=XXXX - VPN_USER=XXXX - VPN_PASSWORD=XXXX privileged: true network_mode: "host" 

这似乎是更难以实现与kubernetes,虽然这两个选项存在和声明,你可以看到我的清单。 (主机networking,特权)

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: XXXX - 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 

我也尝试添加function:NET_ADMIN,你可以看到,没有效果。 以priviliged模式设置容器应该禁用安全性,我不应该需要这两个。

如果不需要将容器设置为priviliged模式,只需要依靠function来启动ppp0接口并添加路由就好了。

当POD启动时,会发生什么情况是pptp-client只是不断发送请求并超时。 (这发生在我的docker集装箱本地以及直到我把network_mode“主机”上。)

 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布尔让我们看到从主机共享多个接口,所以这是工作,但某种程度上我不能build立连接,我不知道为什么。

也许有更好的解决办法? 我仍然需要build立到VPN服务器的连接,但是向主机添加路由logging可能不是最好的解决scheme。

任何帮助是极大的赞赏!