在使用云计算的时代,每一份性能提升,都是实实在在的成本消减;每一点工作效率的提升,都能为你争取到更多休闲时光;每一份错误的减少,都可以尽快熄灭深夜的灯光。何乐而不为呢?
说的真好,是该用 JDK 17 了。
 
        KubeSphere 网关的大致逻辑,可以参考官方博客,简单梳理如下:
1、helm operator 集成在 ks-controller-manager 服务中;
2、crds 中集成了 Nginx,Gateway 等自定义资源;
3、启动网关时,会新增 Gateway,Nginx 等 crd 资源,可以通过 kubectl get gateways -n xxx 或 kubectl get nginxes -n xxx 进行查看;
4、除了新增 crd 资源,还会启动 ingress-crontoller 等,具体可以通过 kubectl get gateways/xxx -n kubesphere-controls-system -o yaml 和 kubectl get nginxes xxx -n kubesphere-controls-system -o yaml 进行查看;
5、如果使用 NodePort 方式暴露服务,则端口是随机的,但可以通过修改 nginxes crd 资源来指定端口;
6、当然,云上的环境一般都是通过 LoadBalancer 来暴露服务,这需要依赖云厂商提供的负载均衡器。
参考:https://github.com/kubesphere/kubesphere/blob/release-3.3/config/watches.yaml
 
        kubernetes 自定义域名解析的两种方案:
1、官方推荐 HostAliases,哪个 pod 需要就配哪个,比较灵活,但无法做到全局。
2、使用 CoreDNS 的 hosts plugins,可以实现全局配置,如果不生效,可以参考这篇文章。附图是配置 coredns 和 nodelocaldns 两个 ConfigMap 的示例,自定义域名为 gateway.centercar.izkml.com。
 
 
        replace string in file/fies via sed command:
single file: sed -i 's/old-str/new-str/g' xxx.yml
multi-files: sed -i 's/old-str/new-str/g' *.yml
但在 macOS 13.3 M1 Chip 上,上面的脚本运行报错:
sed: 1: “xxx …”: command c expects \ followed by text
需要将其改造为:sed -i '' -e 's/old-str/new-str/g' xxx.yml
一个人单枪匹马把一个团队搞出来的 EJB 给干掉,还是一个音乐学博士 🙃
 
        1. Rename your local branch:
If you are on the branch you want to rename: git branch -m new-name
If you are on a different branch: git branch -m old-name new-name
2. Delete the old-name remote branch and push the new-name local branch:
git push origin :old-name new-name
3. Reset the upstream branch for the new-name local branch:
Switch to the branch and then: git push origin -u new-name
example: arch-kubernetes --> arch-k8s-dev
➜  ne-xxx git:(arch-kubernetes) > git branch -m arch-k8s-dev
➜  ne-xxx git:(arch-k8s-dev) >
➜  ne-xxx git:(arch-k8s-dev) > git push origin :arch-kubernetes arch-k8s-dev 
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: 
remote: To create a merge request for arch-k8s-dev, visit:
remote:   https://gitlab.xxx.com/ne-xxxx/-/merge_requests/new?merge_request%5Bsource_branch%5D=arch-k8s-dev
remote: 
To gitlab.xxx.com:ne-xxx.git
 - [deleted]           arch-kubernetes
 * [new branch]        arch-k8s-dev -> arch-k8s-dev
➜  ne-xxx git:(arch-k8s-dev) >
➜  ne-xxx git:(arch-k8s-dev) > git push origin -u arch-k8s-dev               
branch 'arch-k8s-dev' set up to track 'origin/arch-k8s-dev'.
Everything up-to-date
➜  ne-xxx git:(arch-k8s-dev) > 
芯片设计与制造的过程非常复杂,但我们可以简单地将其理解为三个部分:前端设计 (Design)、后端制造 (Manufacturing) 、封裝 (Package) 测试。
 
 
        kubernetes 声明式设计背后的思想是什么?
声明式的描述,其实就是自描述,你不需要做转换就能理解。比如,很多枚举值用 0, 1, 2 来表示,这就没有自描述的能力,但你用 red,green,blue 来描述,那就不一样了,你看一眼就明白啥意思。
声明式带来自动化,背后靠的是控制器模式的强大能力,就像你把空调温度调到 28 ℃ 一样,然后就没你什么事了,不论当前温度是多少,空调控制器都会帮你达到你想要的状态。
把复杂留给自己,把简单留给客户,这就是 Infrastructure as Code。
 
        Flomo 的禅定模式,喜欢。
 
        1、要有生活,爱生活,爱生活的细节,而不只有空洞的目标;
2、可以管理好自己的情绪,具备自愈的能力,而不是迁怒于身边人;
3、眼里有自己,也有别人,有别人的感受和体会,可以推己及人。
“段誉在松鹤楼和乔峰斗酒,拼了几十碗,怕乔峰喝太多烈酒伤身,就哈哈一笑把钱包扔在桌上,说大哥你再喝我可没钱了。”
摘自「六神磊磊读金庸 」《段誉比慕容复到底好在哪里》
Who am I ? 
Where did I come from ?  
Where do I go to find out ?