移动云架构¶
硬件和OS¶
我在 移动云计算 中采用笔记本电脑来构建云:
采用 Apple ARM架构芯片M1 Pro MacBook Pro 16” ,运行 Asahi Linux 系统:
通过 KVM Atlas 来运行虚拟机,借鉴 私有云架构 部署一个full Kubernetes Atlas
实践发现对于内存有限的笔记本电脑(32GB)运行5个KVM虚拟机依然内存捉襟见肘,所以后来在 MacBook Pro 15” Late 2013 笔记本我追求轻量级运行,不再强求KVM虚拟化模拟,而是采用纯容器的 kind(本地docker模拟k8s集群)
启用域名
cloud-atlas.io
模拟构建dev.cloud-atlas.io
开发和持续集成环境
一台非常古老的 Intel Core i7-4850HQ处理器 MacBook Pro 15” Late 2013 笔记本,已经快10年历史了,不过我 NvMe硬盘升级MacBook(2013~2017) SSD 还能再打:
采用纯容器运行 kind(本地docker模拟k8s集群)
专注模拟 Kubernetes Atlas 并进行相关开发
更为复杂的云计算(考虑到性能消耗,特别是海量内存需求),还是采用数据中心服务器(二手) HPE ProLiant DL360 Gen9服务器 来实现(最高支持 768GB RDIMM内存)
备注
使用Linux来构建移动云计算,其实是非常hard的工作,你必须解决很多底层的技术难题,包括但不限于 Kernel Atlas / Linux存储 / Kubernetes Atlas ( kind(本地docker模拟k8s集群) )等等组合的技术堆栈。这是一个充满挑战和乐趣的过程。
不过,如果你更侧重于软件开发,或者想一步跨国底层各种 KVM Atlas / Docker Atlas 虚拟化和容器技术的障碍,那么采用 macOS工作室 或许是一个更方便的选择: 快速构建Kubernetes平台,学习和实践上层的容器调度技术以及 DevOps Atlas (持续集成),将自己开发的软件推送到生产环境。(这样也不错哦)
Anyway,成为全栈工程师!!!
模拟集群¶
X86架构 MacBook Pro 15” Late 2013 笔记本: 采用 kind(本地docker模拟k8s集群) 构建本地容器化 Kubernetes Atlas 集群,作为个人开发环境
dev.cloud-atlas.io
ARM架构 Apple ARM架构芯片M1 Pro MacBook Pro 16”: 采用 ARM硬件环境KVM虚拟化 构建本地运行的虚拟化服务器集群,进一步部署 Kubernetes Atlas 和 openshift
虚拟服务器分布¶
虚拟化层 |
主机IP |
主机名 |
cpu |
内存(G) |
磁盘(G) |
说明 |
---|---|---|---|---|---|---|
1 |
192.168.8.101 |
a-k8s-m-1 |
2 |
4 |
K8s 管控 1 |
|
1 |
192.168.8.101 |
a-k8s-api |
apiserver入口 |
|||
1 |
192.168.8.102 |
a-k8s-m-2 |
2 |
4 |
K8s 管控 2 |
|
1 |
192.168.8.102 |
a-k8s-api |
apiserver入口 |
|||
1 |
192.168.8.103 |
a-k8s-m-3 |
2 |
4 |
K8s 管控 3 |
|
1 |
192.168.8.103 |
a-k8s-api |
apiserver入口 |
|||
1 |
192.168.8.111 |
a-k8s-n-1 |
2 |
4 |
K8s node 1 |
|
1 |
192.168.8.112 |
a-k8s-n-2 |
2 |
4 |
K8s node 2 |
|
1 |
192.168.8.113 |
a-k8s-n-3 |
2 |
4 |
K8s node 3 |
|
1 |
192.168.8.204 |
a-b-data-1 |
2 |
6 |
12G+55G |
lvm卷(数据基础服务) |
1 |
192.168.8.204 |
etcd |
基础etcd服务 |
|||
1 |
192.168.8.205 |
a-b-data-2 |
2 |
6 |
12G+55G |
lvm卷(数据基础服务) |
1 |
192.168.8.205 |
etcd |
基础etcd服务 |
|||
1 |
192.168.8.206 |
a-b-data-3 |
2 |
6 |
12G+55G |
lvm卷(数据基础服务) |
1 |
192.168.8.206 |
etcd |
基础etcd服务 |
|||
1 |
192.168.8.211 |
a-b-cache-1 |
2 |
4 |
近端访问 a-data(缓存基础服务) |
|
1 |
192.168.8.212 |
a-b-cache-2 |
2 |
4 |
近端访问 a-data(缓存基础服务) |
|
1 |
192.168.8.213 |
a-b-cache-3 |
2 |
4 |
近端访问 a-data(缓存基础服务) |
|
1 |
192.168.8.221 |
a-b-mon-1 |
2 |
4 |
基础监控 |
|
1 |
192.168.8.222 |
a-b-mon-2 |
2 |
4 |
基础监控 |
|
1 |
192.168.8.234 |
a-udev |
1 |
2 |
6 |
编译(ubuntu20) |
1 |
192.168.8.235 |
a-kdev |
1 |
2 |
6 |
内核测试(fedora35) |
1 |
192.168.8.239 |
a-codeready |
2 |
2 |
6 |
OpenShift开发环境CodeReady |
1 |
192.168.8.240 |
a-devstack |
2 |
2 |
6 |
OpenStack开发环境DevStack |
1 |
192.168.8.241 |
a-centos6 |
1 |
2 |
6 |
模版 |
1 |
192.168.8.242 |
a-centos7 |
1 |
2 |
6 |
模版 |
1 |
192.168.8.243 |
a-centos8 |
1 |
2 |
6 |
模版 |
1 |
192.168.8.244 |
a-fedora35 |
1 |
2 |
6 |
模版 |
1 |
192.168.8.245 |
a-ubuntu18 |
1 |
2 |
6 |
模版 |
1 |
192.168.8.246 |
a-ubuntu20 |
1 |
2 |
6 |
模版(ubuntu 20.04) |
1 |
192.168.8.247 |
a-ubuntu20-rbd |
2 |
4 |
7 |
模版(ubuntu 20.04)Ceph存储 |
1 |
192.168.8.249 |
a-centos9-rbd |
2 |
4 |
7 |
模版(CentOS 9 Stream)Ceph存储 |
1 |
192.168.8.250 |
a-centos8-rbd |
2 |
4 |
7 |
模版(CentOS 8)Ceph存储 |
1 |
192.168.8.251 |
a-centos7-rbd |
2 |
4 |
7 |
模版(CentOS 7)Ceph存储 |
1 |
192.168.8.253 |
a-dev |
2 |
4 |
6 |
fedora35 |
实践¶
我将按照不同的硬件环境(X86和ARM)分为两部分分别整理: