Bazel 基本使用

本文是 Bazel 学习笔记,记录了 Bazel 的一些核心概念和基本使用方法,构建目标为 Go 语言项目。

Tmux 基本用法

当用户与远程计算机进行会话时,创建的窗口是其中的进程是绑定的,当用户长时间不操作或者因为网络异常导致远程连接中断,窗口及其里面的进行也随之中断,里面如果有些还未完成的任务也会被关闭。tmux 解决的问题是将会话与窗口解绑。窗口关闭会话并不会关闭,重新连接上终端可以恢复会话。

wireguard 原理与基本使用

WireGuard 的核心是一个名为 Cryptokey Routing 的概念,它的工作原理是将公钥与隧道中允许的隧道 IP 地址列表相关联。每个网络接口(interface)都有一个私钥和一个 peer list。每个 peer 都有一个公钥。公钥既短又简单,被 peer 用来互相验证。它们可以通过任何带外方法在配置文件中传递,类似于将其 SSH 公钥发送给朋友以访问 shell 服务器。

由于每个节点都有自己的公钥和私钥,实际上就建立了公钥和节点之间的一一映射。当 wg0 需要向外发送的包的时候,会查这个表来找到正确的公钥。当接收到一个外部的包的时候,会根据公钥来检查是否是合法的目标 IP。

当一个 Peer 发过来一个包,并且通过了验证之后,路由表就会记录下对方的外部地址,这样当需要给对方发包的时候,就可以直接通过这个地址发送了。同时,如果对方切换了网络,那么路由表就会跟着新的包更新,也就是 WireGuard 支持“漫游”。

在 VsCode 中调试 Golang 代码

本文简单记录一下怎么在 vscode 中配置调试 goalng 项目,分为普通项目和基于 Bilibili 开源的 Kratos 框架的项目。

k8s 入门 7:Volume

容器中的文件在磁盘上是临时存放的,这给在容器中运行较重要的应用带来一些问题。 当容器崩溃或停止时会出现一个问题。此时容器状态未保存, 因此在容器生命周期内创建或修改的所有文件都将丢失。 在崩溃期间,kubelet 会以干净的状态重新启动容器。 当多个容器在一个 Pod 中运行并且需要共享文件时,会出现另一个问题。 跨所有容器设置和访问共享文件系统具有一定的挑战性。

卷要解决的问题:

1、 文件的持久化存储

2、多个容器在一个 Pod 中运行需要共享文件

k8s 入门 5:工作负载

工作负载是在 Kubernetes 上运行的应用程序。应用运行在 Pod 中,而使用 workload resources 替用户管理一组应用程序。这些负载资源通过配置控制器来确保正确类型、处于运行状态的 Pod 个数是正确的,与用户指定的状态一致。

k8s 入门 3:Pod

Pod 是可以在 Kubernetes 中创建和管理的、最小的可计算单元。Pod 英文意思是豌豆荚,意如其名,Pod 就像是一个豌豆荚,容器就行里面的豆子。 这些容器共享存储、网络、以及怎样运行这些容器的声明。