三个节点测试环境配置信息
节点 | IP | 资源配置 |
---|---|---|
kubeoperator | 192.168.50.46 | 4core8G、200G磁盘 |
openstack contoller01 | eth0:10.10.10.2 管理网络vip 10.10.10.254;eth1:192.168.50.220、 public网络vip:192.168.50.223 | 6core16G、200G根磁盘、500G数据磁盘 |
openstack compute01 | eth0: 10.10.10.3 eth1: 连接192.168.50.0/24网段,未配置IP | 8core16G、200G磁盘 |
openstack网络信息配置
名称 | 网段 | 备注 |
---|---|---|
管理网络 | 10.10.10.0/24 | openstack节点间控制流量、存储流量联通 |
public网络 | 192.168.50.0/24 | 公共网络,可以用于浮动IP,flat类型外部网络 |
私有网络 | vxlan: 22, 172.18.45.0/24 | 配置vxlan,可以创建多个不同网络 |
kubeoperator通过public网络与openstack通信,kubeoperator调用openstack api在flat类型外部网络中创建虚拟机。并且使用public网络与虚拟机通信,进行k8s集群离线化部署。
为实现在外部网络也能管理openstack各个物理节点以及dashboard,在/etc/kolla/globals.yml配置文件中配置以下的参数:
kolla_internal_vip_address: "10.10.10.254" #内部网络VIP
kolla_external_vip_address: "192.168.50.220" #外部网络VIP
network_interface: "eth0" #内部管理、存储、私有网络接口
neutron_external_interface: "eth1" #neutron接入外部网络的接口
kolla_external_vip_interface: "eth1" #外部网络VIP使用的接口
为使用controller01上的第二块盘作为cinder存储,在controller01节点上配置第二块盘/dev/vdb如下
pvcreate /dev/vdb
vgcreate cinder-volumes /dev/vdb
在/etc/kolla/globals.yml配置文件中配置以下的参数:
enable_cinder: "yes"
enable_cinder_backend_lvm: "yes" #controller01使用cinder方式
enable_cinder_backend_iscsi: "yes" #compute01远程使用controller01上的cinder-volumes方式
配置multinode角色文件
[all]
control01 ansible_host=10.10.10.2 ansible_ssh_user=root
compute01 ansible_host=10.10.10.3 ansible_ssh_user=root
[control]
control01
[network]
control01
[compute]
control01
compute01
[monitoring]
control01
[storage]
control01
[deployment]
localhost ansible_connection=local
......
然后运行部署命令
kolla-ansible -i multinode bootstrap-servers
kolla-ansible -i multinode prechecks
kolla-ansible -i multinode deploy
kolla-ansible -i multinode post-deploy
kolla-ansible -i multinode check
如果部署完成后,只针对cinder配置进行了修改,则只需要
kolla-ansible -i multinode deploy -t haproxy,cinder,iscsi,horizon
如果部署完成后,增加compute02计算节点,只需把compute02节点放到[compute]组下,然后运行
kolla-ansible -i multinode deploy --limit compute02
如果部署完成后,需要切换public网路配置,修改globals.yml配置文件网络配置后,运行
kolla-ansible -i multinode deploy
kolla-ansible -i multinode deploy --skip-tags nova #若nova_libvirtd容器重启任务报错
重启所有容器来使用新的配置文件。
openstack环境必须配置存储,为简单起见,使用cinder存储。(因为kubeoperator调用了获取openstack存储的接口,如果没有配置,则会报错)
kubeoperator非常简单,github项目上提供了离线包的下载地址,解压离线包,执行里面的install.sh,使用默认配置即可。
openstack中网络,镜像,实例套件,卷类型创建如下
网络:创建flat类型网络ext_flat_net供k8s节点使用,配置IP网段为192.168.50.160-192.168.50.180。
使用centos7.9 iso构建centos7.9极少化操作系统模板。
创建4core8G和2core4G实例套餐供创建k8s节点虚拟机使用。
kubeoperator界面上配置openstack的信息,这些信息可以从openstack的界面和部署节点上/etc/kolla/admin-openrc.sh文件中获取。
创建IP池,地址是在openstack中的配置的ext_flat_net子网网段192.168.50.160-192.168.50.180。
使用自己的模板centos-79-mini-nofirewalld(部署脚本会关闭firewalld和selinux,可以不在模板中配置)。
因为我的环境资源有限,选择一主多节点模式,生产环境采用高可用的多主多节点部署模型。master节点使用4c8g实例套餐,worker使用2c4g实例套餐。
使用部署计划创建k8s集群,支持AMD64、ARM64以及AMD6跟ARM64混合部署。
配置部署k8s的网络插件,支持calico,flannel,cilium三种。
配置helm版本(v2或者v3)、ingress插件(nginx,traefik等)、是否安装gpu套件(调度GPU功能有用)。
使用之前创建的额部署计划flat-custom创建k8s集群。
等待半个小时左右,具体时间看环境网络状况。会看到openstack环境自动生成了两台虚拟机部署k8s集群。
遇到的问题
1、kubeoperator在部署k8s时,在更新yum repo时会可能因为网络原因失败(ansbible连接超时时间应该配置长一点),点击重试按钮即可。
解决办法,点击对话框的重试按钮即可。
2、kubeoperator部署完k8s后,无法获取metics-server的指标,报错Client.Timeout exceeded while awaiting headers。
解决办法,给metrics-server的deployment加上hostNetwork: true配置。