折腾历程
目的本来是实操 k8s 的,部署时搞了一堆花里胡哨的,虽然因为复杂度与资源消耗原因放弃了这套方案~~(=白折腾)~~,但对理解 k8s 的组成部分帮助很大。
曾经的解决方案:
- 部署工具:kubeadm
 - 容器运行时 CRI: cri-o
 - 容器底层交互接口 OCI :crun
 - 容器网络 CNI: cilium
 
不过部署完这套,小鸡性能吃紧,遂换到了 k3s。
但将 k3s 作为 HomeServer 使用一段时间后,手写各种 depolyment yaml 很是折磨,远不比 docker-compose 方便,维护工作反而变麻烦了,一度想放弃折腾。
不过心底还是想坚持用 k8s (大概是跟风吧),痛点不过是手写 yaml,命令行看日志等等琐碎操作,这些问题 rancher 都可以解决。不过写一些 k8s 的 yaml 后再用 webui 会很容易上手。
也有其它的 management,不过 rancher 比较流行,虽然很重。轻量一点的也有一个 GitHub - skooner-k8s.,没啥资源的家庭服务器感觉可以考虑。
LXC 前置条件
1. LXC 的权限
设置容器 /proc /sys 读写权限、cgroup 权限等
 |  | 
 |  | 
2. 为容器创建 /dev/kmsg
容器一般不存在 /dev/kmsg 内核日志,k3s 大概会向此“文件”输出消息,所以需要保证容器启动后存在这个文件,容器里存在一个 /dev/console,可以用这个“文件”作替身用。
- 自动创建 /dev/kmsg
 
 |  | 
 |  | 
- 创建 systemd 开机执行脚本
 
 |  | 
 |  | 
- 启用生效
 
 |  | 
安装 k3s
- 从官方中国源安装,默认装最新版
 - 注意版本号,要与 rancher 兼容
 
 |  | 
需要安装 rancher 支持的 k3s/k8s 版本。k3s 版本列表:K3s; rancher 兼容表: Rancher Manager v2.8.3 | SUSE
安装 Rancher
1. 安装 Helm
 |  | 
为了使用 Helm,需要 Kubeconfig 环境变量
 |  | 
2. Helm 添加仓库
 |  | 
国内可以用镜像:
https://rancher-mirror.rancher.cn/server-charts/stable,版本可能落后。
3. 为 Rancher 创建命名空间
你需要定义一个 Kubernetes 命名空间,用于安装由 Chart 创建的资源。这个命名空间的名称为  cattle-system:
 |  | 
4. rancher 默认需要 SSL 相关配置
需要安装 cert-manager
 |  | 
5. 部署 rancher
部署后需要通过 hostname 访问 rancher,如果没有 DNS 服务器,应该可以通过修改 hosts 文件映射 ip 访问。
 |  | 
最后部署一个 NEO4J 熟悉一下 rancher(可选)
- 新建个持久化卷资源
PersistentVolumesHostPath类型
 - 再新建个持久化卷请求声明
PersistentVolumeClaims- 选择刚才建立的 
PV 
- 选择刚才建立的 
 
 

- 新增 
Deployments- 为 
Pod指定PVC - 容器镜像:
neo4j:5.19.0 - 配置下 
Service- 简单点就先 
NodePort了,后面在配Ingress 
 - 简单点就先 
 - 加个环境变量
NEO4J_AUTH=user/pwd
 
 - 为 
 

- 可以查看日志、服务状态,启动成功后。
- 访问 Neo4j http://ip:30075 (nodeport 监听的端口)
 
 
