挖财 Kubernetes 容器化之路 发布于 六月 03, 2020 其实年初的时候就有想过写这篇文章了,不过一拖就拖到了现在,再拖下去就有点说不过去了。 挖财内部对容器化项目的代号为 K2 (乔戈里峰),乔戈里峰是世界第二高峰,但攀登极富挑战,寓意就是面对挑战,勇攀高峰 ;)。项目从 2016 年 11 月到现在已经有三年的时间了,如今挖财内部测试环境早已全部 Docker 容器化,而线上环境也运行着重要的业务。经历从零到一的整个落地过程,回顾下来,这座高峰算是拿下了。再看 K8s 技术本身现在也是遍地开花,早已赢得容器编排的战争,剩下来就是各个企业的落地实践。倒是 Docker 公司最近的境遇,这个创建 Docker 的企业沦落如此,多少有点令人唏嘘,唯有 Respect。 1 时间线 看了一下项目提交的 Git 记录,第一次提交时间是 <2016-11-01 Tue> 。 2016 年 11 月初开启 2017 年 1 月底 V1.0 上线 2017 年 6 月底测试环境全面推开 2017 年 7 月线上机器学习环境线上试点 2017 年 10 月线上业务试点 2018 年 7 月 V2.0 版本 2018 年 9 月挖财云版本(整合运维监控、告警、日志和容器系统) 2018 年 12 月支持多集群管理 2019 年 6 月私有化分支版本上线 2 现状 2.1 测试环境 当前测试环境有一个 K8s 集群(K8s 1.11.x),空间( namespace )总数有 500+,应用数( Deployment + StatefulSet ) 4400+,实例数( Pod ) 4000+(因为测试环境大部分应用都只有 1 个,有些是处于暂停状态,即 0 个副本,因此实例数少于应用数)。 题外话,话说 K8s 升级的历程也相当血泪,早期的配置变更,向下的兼容性等等,关于升级相关可以参见之前的文章 Kubernetes 版本升级标注 2.2 线上环境 线上环境有三个集群,一个机器学习集群(K8s 1.7.x),一个私有云集群(K8s 1.13.x),有个主体业务集群(K8s 1.13.x),粗率统计了一下,空间数 50+,应用数 500+,实例数 1000+。 测试环境 + 线上环境总体运行有 5000+ ... 阅读全文
AMH 5 指定PHP环境运行swoole命令 发布于 七月 10, 2019 原版: php think swoole AMH版本: /usr/local/php-7.1/bin/php -c /home/wwwroot/lnmp05/etc/amh-php.ini /home/wwwroot/lnmp05/domain/activity_platform/web/think swoole 阅读全文
Tailscale 开源版中文部署指南(支持无限设备数、自定义多网段 、自建中继等高级特性) 发布于 六月 15, 2022 目前国家工信部在大力推动三大运营商发展 IPv6,对家用宽带而言,可以使用的 IPv4 公网 IP 会越来越少。有部分地区即使拿到了公网 IPv4 地址,也是个大内网地址,根本不是真正的公网 IP,访问家庭内网的资源将会变得越来越困难。 部分小伙伴可能会选择使用 frp 等针对特定协议和端口的内网穿透方案,但这种方案还是不够酸爽,无法访问家庭内网任意设备的任意端口。更佳的选择还是通过 VPN 来组建大内网。至于该选择哪种 VPN,毫无疑问肯定是 WireGuard,WireGuard 就是 VPN 的未来。 我已经不止一次向大家推荐使用 WireGuard 了,我累了,不想再讲了,你爱 JB 用辣鸡 OpenVPN 之类的就用吧,你开心就好。 WireGuard 相比于传统 VPN 的核心优势是没有 VPN 网关,所有节点之间都可以点对点(P2P)连接,也就是我之前提到的 全互联模式(full mesh) ,效率更高,速度更快,成本更低。 WireGuard 目前最大的痛点就是上层应用的功能不够健全,因为 WireGuard 推崇的是 Unix 的哲学,WireGuard 本身只是一个内核级别的模块,只是一个数据平面,至于上层的更高级的功能(比如秘钥交换机制,UDP 打洞,ACL 等),需要通过用户空间的应用来实现。 所以为了基于 WireGuard 实现更完美的 VPN 工具,现在已经涌现出了很多项目在互相厮杀。笔者前段时间一直在推崇 Netmaker ,它通过可视化界面来配置 WireGuard 的全互联模式,它支持 UDP 打洞、多租户等各种高端功能,几乎适配所有平台,非常强大。然而现实世界是复杂的,无法保证所有的 NAT 都能打洞成功,且 Netmaker 目前还没有 fallback 机制,如果打洞失败,无法 fallback 改成走中继节点。Tailscale 在这一点上比 Netmaker 高明许多,它支持 fallback 机制,可以尽最大努力实现全互联模式,部分节点即使打洞不成功,也能通过中继节点在这个虚拟网络中畅通无阻。 没错,我移情别恋了,从 Netmaker 阵营转向了 Tailscale,是渣男没错了。 Tailscale 是什么 Tailscale 是一种基于 WireGuard 的虚拟组网工具,和 Netmaker... 阅读全文
PHP资源整理 发布于 四月 26, 2019 PHP 优秀资源汇集: https://shockerli.net/post/php-awesome https://github.com/shockerli/php-awesome https://github.com/ziadoz/awesome-php PHP设计模式 https://learnku.com/docs/php-design-patterns/2018 https://designpatternsphp.readthedocs.io/zh_CN/latest/README.html oAuth 2.0 server库 https://bshaffer.github.io/oauth2-server-php-docs/ PHP技能树 https://raw.githubusercontent.com/justjavac/awesome-awesomeness-zh_CN/master/assets/php-mind-map.jpg 阅读全文
使用jekeyll建立github pages站点 发布于 六月 17, 2022 GitHub 提供的 GitHub Pages 服务非常方便,可以让程序员迅速的建立起自己的博客。GitHub Pages 提供了简洁高效的新手引导,可以非常快速的建立起一个基础的博客项目,而该项目即是博客。但是这仅限于 Hello World 的水平。在 GitHub Help 页面能找到 Setting up your GitHub Pages site locally with Jekyll 教程。故决定按照教程走,充实自己的博客。 Step 1: Ruby&Bundler Installation $ sudo apt-get install ruby $ ruby -v ruby 2.3.3p222 ( 2016-11-21 ) [ x86_64-linux-gnu] $ gem install bundler $ bundler -v Bundler version 1.16.6 gem 是指用 ruby 语言写的类库,类似 c 的 lib 或是 java 的 jar 文件;而 bundler 便是用来管理这些 gem 的 gem,类似 python 的 pip 之类的工具。 Step 2: Jekyll Installation Jekyll 是 ruby 的一个 gem,由于已经安装了 bundler,自然可以用它来安装 Jekyll。 Step 2.1 首先进入项目文件夹,此处为~/Project/yunyexiao.github.io/。一般该文件夹下没有 Gemfile 文件,故需生成。 $ bundle init 该命令在项目根目录下生成了一个简单的 Gemfile 文件。内容大概为: # frozen_string_literal: true source "https://rubygems.org" git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } # gem "rails" 虽然看不太懂,不过没关系。当然也可以手动新建这个文件。 Step 2.2 接着修改这个 Gemfile 文件。根据 GitHub Help 的引导,需要添加一行: gem 'github-pa... 阅读全文
评论