我之前也尝试过类似的跨区域集群,docker swarm over tailscale,不同区域之间的节点通讯延时比较高导致资源调度经常失败,然后就放弃了。k8s搭建跨区域集群不会有资源调度超时的问题吗?
@Awhile3254 #12 我的做法是尽量通过配置 nodeSelector 以及 affinity 让区域相近的Pod在一起减少跨区通信。 我不确定你那里延迟高在哪个地方。但是我猜可能出在 家里到tailscale 中继这一段。因为 tailscale 在国内没有中继,所以从家里连到国外的 tailscale 中继可能比较慢,我的做法是将这一段的流量交给自己的翻墙节点去代理(路由器的 openclash),或者你可以自己部署 DERP server 最大的问题目前感觉是 dns查询比较慢,目前发现 k3s 自带的 coredns pod 必须部属 server节点,放在worker节点启动不了。这导致一个问题,集群内所有的dns查询都要不远万里先经过家里的 coredns,所以延迟不是特别稳定。。。
@Refinery7516 #8 发布于2023/9/24 11:34:32 @ikeep #7 ,这里做了优化,默认traefik运行在master,所以流量路径就是 worker(甲骨文) -> master(家) -> worker (甲骨文),延迟不是特别稳定。 200ms-10s都有。通过修改配置让 traefik 运行直接在甲骨文上面,现在延迟在1秒以内(从家里访问) 下图是将traefik从家里放在甲骨文上面后的效果。 我在安装的时候就禁掉了traefik和servicelb 后面手动部署traefik
@Refinery7516 #17 我好奇的是,你翻墙节点是不是部署在k3s agent上 我之前的做法是部署vless+reality的stateful 然后traefik tcp反代到各个节点,配合脚本(脚本做cf dns解析、建route、删除route),每个域名对应到每个node->pod 这样比如a域名就不会串到node b去,确保a域名解析到node a,pod a在node a上
@guigeng #18 可以,我用ds host方式的,很完美。 apiVersion: apps/v1 kind: DaemonSet metadata: name: xray labels: app: xray spec: selector: matchLabels: app: xray template: metadata: labels: app: xray spec: hostNetwork: true nodeSelector: node-role.kubernetes.io/nogfw: "true" tolerations: - operator: Exists effect: NoSchedule containers: - name: xray image: ttl.sh/nogfw/xray:5m imagePullPolicy: Always ports: - containerPort: 6666 protocol: TCP - containerPort: 6666 protocol: UDP
@songshi #19 发布于2023/10/11 12:02:13 @guigeng #18 可以,我用ds host方式的,很完美。 apiVersion: apps/v1 kind: DaemonSet metadata: name: xray labels: app: xray spec: selector: matchLabels: app: xray template: metadata: labels: app: xray spec: hostNetwork: true nodeSelector: node-role.kubernetes.io/nogfw: "true" tolerations: - operator: Exists effect: NoSchedule containers: - name: xray image: ttl.sh/nogfw/xray:5m imagePullPolicy: Always ports: - containerPort: 6666 protocol: TCP - containerPort: 6666 protocol: UDP 如果要用443端口就麻烦啊 还有个问题,证书怎么解决的?cert-manager更新完证书后pod没更新
搭K8s实现隧道服务 厉害
我之前也尝试过类似的跨区域集群,docker swarm over tailscale,不同区域之间的节点通讯延时比较高导致资源调度经常失败,然后就放弃了。k8s搭建跨区域集群不会有资源调度超时的问题吗?
@Awhile3254 #12 我的做法是尽量通过配置 nodeSelector 以及 affinity 让区域相近的Pod在一起减少跨区通信。
我不确定你那里延迟高在哪个地方。但是我猜可能出在 家里到tailscale 中继这一段。因为 tailscale 在国内没有中继,所以从家里连到国外的 tailscale 中继可能比较慢,我的做法是将这一段的流量交给自己的翻墙节点去代理(路由器的 openclash),或者你可以自己部署 DERP server
最大的问题目前感觉是 dns查询比较慢,目前发现 k3s 自带的 coredns pod 必须部属 server节点,放在worker节点启动不了。这导致一个问题,集群内所有的dns查询都要不远万里先经过家里的 coredns,所以延迟不是特别稳定。。。
@Refinery7516 #13 集群机器在甲骨文大阪和racknerd 美西,两边连起来延迟有一百毫秒,用不了。
我是在安装服务器的时候指定
--flannel-iface tailscale0来组件的。我在安装的时候就禁掉了traefik和servicelb
后面手动部署traefik
@guigeng #16 是的,我后面也打算这么弄。k3s 默认的设置不适合跨区集群。还是让每个node单独一个反代比较快
@Refinery7516 #17
我好奇的是,你翻墙节点是不是部署在k3s agent上
我之前的做法是部署vless+reality的stateful
然后traefik tcp反代到各个节点,配合脚本(脚本做cf dns解析、建route、删除route),每个域名对应到每个node->pod
这样比如a域名就不会串到node b去,确保a域名解析到node a,pod a在node a上
@guigeng #18
可以,我用ds host方式的,很完美。
如果要用443端口就麻烦啊
还有个问题,证书怎么解决的?cert-manager更新完证书后pod没更新