一行命令搭建内部的管道(2)
在博客《边缘计算k8s集群之SuperEdge》中,笔者基于ECK搭建了边缘集群并添加了节点。通过边缘集群,我们可以很方便的管理各个地域的节点,本地、各云厂商的机房、客户所在地、海外的都可以。
在博客《一行命令搭建内部的管道》中,笔者讲述了如何基于ipsec-vpn-server搭建内部管道。
在本篇内容,我们将讲述如何使用shadowsocks,通过一行命令即可搭建内部的管道,用于锻炼技术,技术学习。
shadowsocks
shadowsocks是一个轻量级代理,易于部署、开源、超级快、跨平台、灵活加密。
优势
相比ipsec-vpn-server,shadowsocks胜在轻量灵活,性能更好,更隐蔽更安全,一般作为代理的首推方式。但是如果需要全局代理,那不如ipsec-vpn-server。
官方镜像地址:https://hub.docker.com/r/shadowsocks/shadowsocks-libev
Github地址:https://github.com/shadowsocks
接下来,我们来演示下如何一行命令即可搭建自己的代理。
Docker部署
参考脚本如下所示:
docker run -e PASSWORD=<password> -p <server-port>:8388 -p <server-port>:8388/udp -d shadowsocks/shadowsocks-libev
其中,Password即远程连接密码。其他参数,可以查看Docker镜像的官网。
K8s部署
参考Yaml如下所示:
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "2"
generation: 2
labels:
k8s-app: shadowsocks-libev
name: shadowsocks-libev
namespace: default
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
k8s-app: shadowsocks-libev
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
type: RollingUpdate
template:
metadata:
labels:
k8s-app: shadowsocks-libev
spec:
containers:
- env:
- name: PASSWORD
value: "your password"
image: shadowsocks/shadowsocks-libev
imagePullPolicy: IfNotPresent
name: shadowsocks-libev
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 250m
memory: 256Mi
securityContext:
privileged: false
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
hostNetwork: true
imagePullSecrets:
- name: qcloudregistrykey
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
kubectl create -f shadowsocks.yaml
执行成功后,就可以下载客户端进行连接了。
这里有不清楚的,可以参考笔者之前的教程:《使用Kubectl部署应用》。
客户端下载
如下图所示,shadowsocks支持多种客户端:
windows客户端还是WPF开发的,下载地址为:https://github.com/shadowsocks/shadowsocks-windows/releases
Android客户端:https://github.com/shadowsocks/shadowsocks-android/releases
IOS客户端:https://github.com/shadowsocks/ShadowsocksX-NG/releases/tag/v1.9.4
客户端连接配置
客户端的配置较为简单,以windows为例参考如下:
加密方式在启动时的日志中会输出。
设置user-rule
在Windows客户端中,支持设置user-rule来自定义网址代理规则。注意不要修改pac.txt。规则定义如下:
- 通配符支持,如 .example.com/ 实际书写时可省略 * 如.example.com/ 意即 .example.com/
- 正则表达式支持,以 \ 开始和结束, 如 [\w]+://example.com\
- 例外规则 @@,如 @@.example.com/ 满足 @@后规则的地址不使用代理
- 匹配地址开始和结尾 |,如 |http://example.com、example.com | 分别表示以 http://example.com 开始和以 example.com 结束的地址
- || 标记,如 ||example.com 则 http://example.com、https://example.com、ftp://example.com 等地址均满足条件
- 注释!如!Comment
每行一个规则,填写 / 修改后会自动更新一次 PAC (可以打开pac.txt查看),此时 user-rule.txt 中的规则会自动添加到 pac.txt 中,然后再重启一下程序即可生效。
最后
是不是超级简单呢?赶紧实践实践吧?
如果对Docker和k8s还存在疑问,可以参考笔者之前的教程、博客和书籍《Docker+Kubernetes应用开发与快速上云》来解决问题以及查看日志。
其他资料: