【部署篇】基于华为云虚拟机 Allinone 部署 Cloudpods 搭建多云管理平台

479 阅读8分钟

参考官方文档:www.cloudpods.org/zh/docs/qui…

第一步 创建华为云虚拟机

  • 镜像:CentOS 7.9 64位
  • 大小:8核16GB
  • 系统盘:通用型SSD 40GiB
  • 数据盘:通用型SSD 500GiB
  • 公网带宽:10Mbps
  • 安全组:入方向放通22、443、80

详细配置如下图所示:

image.png

第二步 格式化数据盘,并且挂载到/opt

[root@cloudpods ~]# fdisk -l

Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000f24de

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048    83886079    41942016   83  Linux

Disk /dev/vdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

[root@cloudpods ~]# mkfs.ext4 /dev/vdb
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
6553600 inodes, 26214400 blocks
1310720 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2174746624
800 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624, 11239424, 20480000, 23887872

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   

[root@cloudpods ~]# blkid
/dev/vda1: UUID="7c5d72cf-4d6b-4cd2-ac0d-fcc9270be4c4" TYPE="ext4" 
/dev/vdb: UUID="666409d2-c110-43ed-9ea3-213857816344" TYPE="ext4" 
[root@cloudpods ~]# vim /etc/fstab
[root@cloudpods ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Wed Jul 12 13:43:30 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=7c5d72cf-4d6b-4cd2-ac0d-fcc9270be4c4 /                       ext4    defaults        1 1
UUID=666409d2-c110-43ed-9ea3-213857816344 /opt                    ext4    defaults        0 0
[root@cloudpods ~]# mount -a
[root@cloudpods ~]# 
[root@cloudpods ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        7.8G     0  7.8G   0% /dev
tmpfs           7.8G     0  7.8G   0% /dev/shm
tmpfs           7.8G  8.6M  7.8G   1% /run
tmpfs           7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/vda1        40G  2.1G   36G   6% /
tmpfs           1.6G     0  1.6G   0% /run/user/0
/dev/vdb         99G   61M   94G   1% /opt

纯命令行

fdisk -l
mkfs.ext4 /dev/vdb
blkid
vim /etc/fstab
cat /etc/fstab
mount -a
df -h

第三步 配置 SSH 免密登录

[root@cloudpods ~]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:uZhEGY7ds2EoHrgawOX22wz/ZXX65/6F248GtbmcsaY root@cloudpods
The key's randomart image is:
+---[RSA 2048]----+
|   .  .          |
|. o. + =         |
|...o+ * =        |
|. .o.+ . =    .  |
|. . .o. S    o + |
| o   .*o .  o *. |
|.    .o+.  o +.=.|
|        . o   O+o|
|         .  E+o+X|
+----[SHA256]-----+
[root@cloudpods ~]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
[root@cloudpods ~]# chmod 600 ~/.ssh/authorized_keys
[root@cloudpods ~]# ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.119  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::f816:3eff:fe53:ab22  prefixlen 64  scopeid 0x20<link>
        ether fa:16:3e:53:ab:22  txqueuelen 1000  (Ethernet)
        RX packets 12469  bytes 16882813 (16.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1995  bytes 226906 (221.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@cloudpods ~]# ssh 'root@192.168.0.119' hostname
The authenticity of host '192.168.0.119 (192.168.0.119)' can't be established.
ECDSA key fingerprint is SHA256:nFjKfWzINUsxTa8OFepPiT3jMa6UrA7Ea6Xs9c4a0xU.
ECDSA key fingerprint is MD5:1e:ec:75:ae:32:3f:23:5f:80:97:87:e9:76:fd:f6:69.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.119' (ECDSA) to the list of known hosts.
cloudpods

纯命令行

ssh-keygen
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
ifconfig
ssh 'root@192.168.0.119' hostname

第四步 安装 ansible 和 git

安装 ansible 报错:UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' in position 117: ordinal not in range(128) 解决办法请见文末安装过程中的问题

安装 ansible 如果比较慢,可以使用国内的 pip 源,配置方法见文末安装过程中的问题

yum install -y epel-release git python3-pip
python3 -m pip install --upgrade pip setuptools wheel
python3 -m pip install --upgrade ansible

第五步 下载 ocboot 工具

git clone -b release/3.10 https://github.com/yunionio/ocboot && cd ./ocboot

第六步 部署 Cloudpods

[root@cloudpods ocboot]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.119  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::f816:3eff:fe53:ab22  prefixlen 64  scopeid 0x20<link>
        ether fa:16:3e:53:ab:22  txqueuelen 1000  (Ethernet)
        RX packets 87777  bytes 121280048 (115.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 15898  bytes 2012989 (1.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 41  bytes 8302 (8.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 41  bytes 8302 (8.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@cloudpods ocboot]# ./run.py 192.168.0.119

整个安装过程还挺慢的,大概得有个四五十分钟。部署完成之后,系统就自动重启了。

第七步 登录系统

服务器重启之后,需要等 10 分钟左右,就可以访问了。当然,也可以登录系统查看所有 pod 的状态,都 running 了就可以访问了。

可以登录服务器看一下所有服务的启动状态。

[root@cloudpods ~]# kubectl get pods -n onecloud
NAME                                                 READY   STATUS    RESTARTS   AGE
default-ansibleserver-77696f8f46-mtp8p               1/1     Running   2          31m
default-apigateway-584fc899db-4s82h                  1/1     Running   2          31m
default-apimap-bcccddf79-2tkch                       1/1     Running   2          31m
default-climc-864b4d4c4b-krhw9                       1/1     Running   1          8m24s
default-cloudevent-58f9fd65bd-vrqqh                  1/1     Running   2          8m23s
default-cloudid-554db6ddcd-gq6nm                     1/1     Running   0          8m22s
default-cloudmon-79cf5c88bd-6ghkq                    1/1     Running   2          8m27s
default-cloudproxy-86d7757fc6-gcsmr                  1/1     Running   2          8m21s
default-devtool-7d689fc7c7-9sxpr                     1/1     Running   0          8m22s
default-esxi-agent-76fb88bf5f-p9lsf                  1/1     Running   2          31m
default-etcd-5qnj5vq4b4                              0/1     Pending   0          33m
default-etcd-twzzswk67t                              1/1     Running   0          6m54s
default-etcd-x8vp8c4h76                              0/1     Error     0          33m
default-glance-6ff84fc8bb-sxggv                      1/1     Running   1          31m
default-host-deployer-fsghr                          1/1     Running   6          31m
default-influxdb-7bf4bf9765-42n5m                    1/1     Running   1          32m
default-keystone-7cdb6477c6-7qfg9                    1/1     Running   1          33m
default-kubeserver-5bb67c7595-bqcmt                  1/1     Running   2          31m
default-logger-7d5dff87c4-hzs4q                      1/1     Running   0          8m21s
default-monitor-76d6764574-446nw                     1/1     Running   2          31m
default-notify-7cccd996f8-9g88r                      1/1     Running   1          8m22s
default-onecloud-service-operator-79c57b5f87-rhdmz   1/1     Running   2          8m23s
default-ovn-north-7cd9c46bf6-wbdk7                   1/1     Running   1          31m
default-region-5888bdc999-gwzzh                      1/1     Running   1          32m
default-region-dns-4qv4k                             1/1     Running   1          31m
default-scheduledtask-7469c587c4-8dvzd               1/1     Running   1          8m24s
default-scheduler-6b4d67b857-b7s52                   1/1     Running   2          31m
default-telegraf-8f4pv                               1/1     Running   1          32m
default-vpcagent-59bbd8478c-q28rw                    1/1     Running   2          31m
default-web-5888675765-2sss4                         1/1     Running   11         31m
default-webconsole-85c8c559ff-9x7jw                  1/1     Running   0          8m22s
default-yunionconf-65f5c7c949-pvz5p                  1/1     Running   0          8m22s
onecloud-operator-78bc8bb9b4-cndkb                   1/1     Running   1          7m5s

因为我创建虚拟机的时候,就选择了放通 22、80、443 端口,所以可以直接访问,这一点注意一下,否则可能因为安全规则导致访问不了。

按照文档提示获取登录了登录信息。
web 地址:https://124.71.225.57/ (公有云上只能通过公网 IP 访问)
用户名:admin
用户密码:admin@123

image.png

输入用户名和密码后,进入系统:

image.png

可以正常访问页面,不过有提示,我登录系统之后,根据系统的提示,把内网IP设置成了公网IP,提示消失。

image.png

第八步 配置阿里云账号以及对接现有资源

根据文档提示,获取到我自己的阿里云账号的 Access Key Id 和 Access Key Secret 然后填入表单,完成创建。

image.png

安装过程中的问题

安装 ansible 报错:UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' in position 117: ordinal not in range(128)

解决办法:github.com/yunionio/cl…

配置 pip 国内源

[root@cloudpods ~]# mkdir ~/.pip
[root@cloudpods ~]# vim ~/.pip/pip.conf
[root@cloudpods ~]# cat ~/.pip/pip.conf
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn
[root@cloudpods ~]# pip3 config list
global.index-url='https://pypi.tuna.tsinghua.edu.cn/simple'
install.trusted-host='https://pypi.tuna.tsinghua.edu.cn'