在离线的arm架构kylin v10服务器上使用Kuboard-Spray搭建K8S集群
在内网项目中需要安装K8S集群,经过调研,选择使用Kuboard-Spray工具搭建K8S集群,降低学习成本,提高安装效率。
为了简化安装使用集群的过程,搭建了私有yum源仓库和harbor私有镜像仓库。
详细参考文章:
本地yum源仓库搭建
Harbor镜像仓库的安装和使用
1 安装环境
CPU: 飞腾 arm64,即aarch64
系统:Kylin v10 sp2
查看服务器信息
# 查看CPU架构
uname -p# 查看系统信息
cat /etc/os-release# 查看 Linux 内核版本(3.10以上)
uname -a# 查看 iptables 版本(1.4以上)
iptables --version
2 服务器规划
三台虚拟机,一台安装Kuboard-Spray,两台安装K8S(一个主节点,一个工作节点)
注意!
Kuboard-Spray平台不能安装在集群相关的服务器上,因为使用
IP | hostname | 用途 |
---|---|---|
192.168.16.101 | k8s-master | k8s集群master节点 |
192.168.16.102 | k8s-node-1 | k8s集群工作节点1 |
192.168.16.103 | kuboard-spray | 安装kuboard-spray,用于快速安装k8s集群 |
在飞腾arm架构的kylin v10服务器上安装虚拟机可以参考:https://blog.csdn.net/weixin_43128854/article/details/136504354
3 安装过程
安装过程:
1 给各个服务器设置hostname
2 在准备安装Kuboard-Spray的服务器(这里是192.168.16.103
)上离线安装docker
3 离线安装Kuboard-Spray
4 使用Kuboard-Spray离线安装K8S
3.1 服务器初始化配置
3.1.1 设置服务器hostname
设置各个服务器的hostname,便于识别
#根据集群规划,各节点设置对应的主机名
hostnamectl set-hostname k8s-master #192.168.16.101
hostnamectl set-hostname k8s-node1 #192.168.16.102
hostnamectl set-hostname kuboard-spray #192.168.16.103
3.1.2 禁用iptables和firewalld
systemctl stop firewalldsystemctl disable firewalldsystemctl stop iptablessystemctl disable iptables
3.1.3 禁用selinux(linux下的一个安全服务,必须禁用)
vim /etc/selinux/configSELINUX=disabled
3.1.3 禁用swap分区
方法一(在kylin sp2系统 验证无效,可以直接看方法二)
参考网上的文章,使用如下命令禁用swap分区,但是重启后又出现了
# 查看分区信息
free -m
# 禁用所有的swap分区 -临时
sudo swapoff -a
# 禁用swap分区 -永久
sed -ri 's/.*swap.*/#&/' /etc/fstab
swapoff -a && sysctl -w vm.swappiness=0
或者直接注释掉/etc/fstab
中关于swap的那一行,但是kylin sp2中没有这一行,这行上述的命令也是强行加上这一行增加注释,不起作用。在CentOS中测试该方法是可以的。
方法二
可以使用删除分区的方法,删除swap分区
1 查看磁盘分区fdisk -l
,找到swap分区的设备名称为/dev/vda3
2 执行fdisk /dev/vda
命令,进入到分区操作工具命令行,其中/dev/vda
是我们要删除的分区所在的磁盘名称。
3 根据帮助信息提示输入d
,删除分区。
4 根据提示输入分区号,/dev/vda3
的分区号是3,输入3之后提示分区3已删除
5 输入w
,保存并退出fdisk。
3.1.4 重启服务器
重启服务器,使之前的服务器配置生效
reboot
查看内存信息,可以看到swap都显示为0,说明swap分区删除成功。
3.2 安装docker
实际上,为了方便下载需要用到的docker镜像,还额外准备了一台可以访问公网的服务器192.168.16.104
需要在192.168.16.103和192.168.16.104上分别安装docker
参考文章
银河麒麟操作系统 v10 中离线安装 Docker
离线部署docker与镜像
下载安装包并解压
安装包下载地址
tar xzvf docker-20.10.6.tgz
将解压包下的文件都复制到/usr/bin/下
mv docker/* /usr/bin/
添加docker.service文件
vim /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s[Install]
WantedBy=multi-user.target
添加docker的配置文件
配置国内镜像源(公网环境192.168.16.104需要配置,内网192.168.16.103可以不配置)
vim /etc/docker/daemon.json
{"registry-mirrors": ["https://registry.docker-cn.com"],"exec-opts": ["native.cgroupdriver=systemd"]
}
更新配置
systemctl daemon-reload
运行docker服务并设置为开机自启
systemctl start docker
systemctl enable docker
3.3 安装Kuboard-Spray
实际上,在离线环境后续使用集群拉取镜像部署容器服务,还是需要配置私有镜像仓库。如果是已经搭建私有镜像仓库,并且已经在私有镜像仓库中上传Kuboard-Spray镜像,可以直接使用docker run 命令快速进行安装。只不过,不管用什么方式,总要从公网下载镜像,保存镜像文件,导入到内网使用。
下载镜像
在公网服务器192.168.16.104上下载名为eipwork/kuboard-spray
的镜像,版本为:v1.2.0-arm64
或者latest-amd64
docker pull eipwork/kuboard-spray:v1.2.0-arm64
保存镜像到压缩文件
docker save eipwork/kuboard-spray:v1.2.0-arm64 -o kuboard-spray1.2.0.tar
镜像复制到目标服务器并导入到docker中
使用内网服务器从192.168.16.104
将/root/kuboard-spray1.2.0.tar
下载到本地目录
scp root@192.168.16.104:/root/kuboard-spray1.2.0.tar /root/docker/images/
将镜像导入到docker中
docker load -i kuboard-spray1.2.0.tar
运行镜像
根据镜像ID运行容器
docker run -d \--privileged \--restart=unless-stopped \--name=kuboard-spray \-p 80:80/tcp \-v /var/run/docker.sock:/var/run/docker.sock \-v ~/kuboard-spray-data:/data \825da82f6df6
持久化
KuboardSpray 的信息保存在容器的 /data 路径,请将其映射到一个您认为安全的地方,上面的命令中,将其映射到了 ~/kuboard-spray-data 路径;
只要此路径的内容不受损坏,重启、升级、重新安装 Kuboard-Spray,或者将数据及 Kuboard-Spray 迁移到另外一台机器上,您都可以找回到原来的信息。
容器运行成功后,即可在浏览器中访问http://192.168.16.103
,登录使用Kuboard-Spray。
默认用户名:admin,密码:Kuboard123。
默认端口80访问不通的异常解决(虚拟机安装配置的问题,一般不会遇到这个问题)
运行容器后,访问不通,ping 80端口不通
发现运行容器的时候警告WARNING: IPv4 forwarding is disabled. Networking will not work.
IPv4转发已禁用。网络是行不通的。是因为IPv4转发被禁用了,只需要开启就可以了。
开启转发配置
编辑/etc/sysctl.conf
文件
vim /etc/sysctl.conf
修改net.ipv4.ip_forward=1
#配置转发
net.ipv4.ip_forward=1
重启网络服务
systemctl restart network
重启网络服务的时候提示,未找到network.service:Failed to restart network.service: Unit network.service not found.
使用
需要安装network-scripts
,使用yum install network-scripts
安装即可
重启网络服务后,运行容器即可
docker start <CONTAINER ID>
3.4 使用Kuboard-Spray平台安装K8S集群
注意!!!
由于是离线安装,Kuboard-Spray需要配置私有yum源
注意!!!
如果使用docker作为容器引擎,还需要配置私有docker-ce的yum源。
例如在CentOS系统中部署,使用docker作为容器引擎,就需要配置私有的docker-ce的yum源。
但是Kuboard-Spray不支持kylin server的系统使用docker作为容器引擎,只能使用Containerd,因此在kylin系统中部署不需要配置私有docker-ce的yum源。
3.4.1 导入集群安装资源包到Kuboard-Spray平台
在系统设置->资源包管理模块可以根据自己的需要选择合适版本的资源包导入到Kuboard-Spray环境中,但是在离线环境中,该页面无法获取到资源包信息列表,只能点击右上角的离线加载资源包
按钮,访问官方的资源包下载页面https://www.kuboard-spray.cn/support/
。
在可以访问公网的机器上用浏览器打开该网页https://www.kuboard-spray.cn/support/
,选择合适的资源包,点击离线导入
按钮,根据提示导入资源包。
因为想用docker作为容器引擎去使用,因此选择了支持docker的最新版本:spray-v2.18.0b-2_k8s-v1.23.17_v1.24-arm64,以便在非kylin操作系统中使用docker作为容器引擎。
具体操作过程为
1 下载镜像并保存文件
在安装docker的公网服务器上下载资源镜像
# 1. 在一台可以联网的机器上执行
docker pull registry.cn-shanghai.aliyuncs.com/kuboard-spray/kuboard-spray-resource:spray-v2.18.0b-2_k8s-v1.23.17_v1.24-arm64
docker save registry.cn-shanghai.aliyuncs.com/kuboard-spray/kuboard-spray-resource:spray-v2.18.0b-2_k8s-v1.23.17_v1.24-arm64 > kuboard-spray-resource.tar
2 复制到内网服务器
# 2. 将 kuboard-spray-resource.tar 复制到 kuboard-spray 所在的服务器(例如:10.99.0.11 的 /root/kuboard-spray-resource.tar)
scp ./kuboard-spray-resource.tar root@192.168.16.103:/root/kuboard-spray-resource.tar
4 镜像文件导入到docker中
# 3. 在 kuboard-spray 所在的服务器上执行,(例如:192.168.16.103)
docker load < /root/kuboard-spray-resource.tar
5 导入到Kuboard-Spray中
复制下面的 YAML 内容到粘贴板;
在 Kuboard-Spray 界面中导航到 “系统设置” --> “资源包管理” 菜单,点击 “离线加载资源包”,按界面提示操作,即可完成资源包的离线导入。
加载离线资源包完成后,关掉日志输出页面即可
downloadFrom: registry.cn-shanghai.aliyuncs.com/kuboard-spray/kuboard-spray-resource
metadata:version: spray-v2.18.0b-2_k8s-v1.23.17_v1.24-arm64type: kubernetes-offline-resourcekuboard_spray_version:min: v1.1.0available_at:- registry.cn-shanghai.aliyuncs.com/kuboard-spray/kuboard-spray-resource- swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard-spray-resource- eipwork/kuboard-spray-resourceissue_date: 2023-3-25owner: shaohq@foxmail.comcan_upgrade_from:include:- 'spray-v2.18.0b-1_k8s-v1.23.1[0-6]_v[0-9.]*-arm64'- 'spray-v2.18.0a-[8-9]_k8s-v1.23.1[0-5]_v[0-9.]*-arm64'- 'spray-v2.18.[0-9a-]*_k8s-v1.23.[1-9]_v[0-9.]*-arm64'- 'spray-master-8d9ed01_k8s-v1.23.[1-3]_v[0-9.]*-arm64'exclude: nullcan_replace_to: nullsupported_os:- distribution: Ubuntuversions:- '20.04'- distribution: Anolisversions:- '8.4'- '8.5'- '8.6'- distribution: CentOSversions:- '7.6'- '7.8'- '7.9'- '8'- distribution: RedHatversions:- '7.9'- '8.5'- distribution: OracleLinuxversions:- '8.5'- distribution: Rockyversions:- '8.5'- distribution: openEulerversions:- '20.03'- '22.03'- distribution: Kylin Linux Advanced Serverversions:- V10- distribution: openSUSE Leapversions:- '15.3'supported_feature:eviction_hard: true
data:kubespray_version: v2.18.0b-2supported_playbooks:install_cluster: pb_cluster.yamlremove_node: pb_remove_node.yamladd_node: pb_scale.yamlsync_nginx_config: pb_sync_nginx_config.yamlsync_etcd_address: pb_sync_etcd_address.yamlinstall_addon: pb_install_addon.yamlremove_addon: pb_remove_addon.yamlcluster_version_containerd: pb_cluster_version_containerd.yamlcluster_version_docker: pb_cluster_version_docker.yamlupgrade_cluster: pb_upgrade_cluster.yamldrain_node: pb_drain_node.yamluncordon_node: pb_uncordon_node.yamlcis_scan: truerenew_cert: pb_renew_cert.yamlsync_container_engine_params: pb_sync_container_engine_params.yamlbackup_etcd: pb_backup_etcd.yamlrestore_etcd: pb_restore_etcd.yamlkubernetes:kube_version: v1.23.17image_arch: arm64gcr_image_repo: gcr.iokube_image_repo: k8s.gcr.iocandidate_admission_plugins: >-AlwaysAdmit,AlwaysDeny,CertificateApproval,CertificateSigning,CertificateSubjectRestriction,DefaultIngressClass,DefaultStorageClass,DefaultTolerationSeconds,DenyServiceExternalIPs,EventRateLimit,ExtendedResourceToleration,ImagePolicyWebhook,LimitPodHardAntiAffinityTopology,LimitRanger,MutatingAdmissionWebhook,NamespaceAutoProvision,NamespaceExists,NamespaceLifecycle,NodeRestriction,OwnerReferencesPermissionEnforcement,PersistentVolumeClaimResize,PersistentVolumeLabel,PodNodeSelector,PodSecurity,PodTolerationRestriction,Priority,ResourceQuota,RuntimeClass,SecurityContextDeny,ServiceAccount,StorageObjectInUseProtection,TaintNodesByCondition,ValidatingAdmissionWebhookdefault_enabled_admission_plugins: >-CertificateApproval,CertificateSigning,CertificateSubjectRestriction,DefaultIngressClass,DefaultStorageClass,DefaultTolerationSeconds,LimitRanger,MutatingAdmissionWebhook,NamespaceLifecycle,PersistentVolumeClaimResize,Priority,ResourceQuota,RuntimeClass,ServiceAccount,StorageObjectInUseProtection,TaintNodesByCondition,ValidatingAdmissionWebhookcontainer_engine:- container_manager: containerdparams:containerd_version: 1.6.15- container_manager: dockerparams:docker_version: '20.10'docker_containerd_version: 1.6.18vars:target:containerd_version: 1.6.15etcd_version: v3.5.6calico_version: v3.21.5flannel_cni_version: v1.0.1kuboard_version: v3.5.2.3kubelet_checksums:arm64:v1.23.17: 95e25ee4d2f34f628ba42685c6ae1ba6efdf86f2e76b5cceb0b48de4d66522a7amd64:v1.23.17: 588dde06e2515601380787cb5fcb07ae3d3403130e1a5556b013b7b7fb4ab230kubectl_checksums:arm64:v1.23.17: c4a48fdc6038beacbc5de3e4cf6c23639b643e76656aabe2b7798d3898ec7f05amd64:v1.23.17: f09f7338b5a677f17a9443796c648d2b80feaec9d6a094ab79a77c8a01fde941kubeadm_checksums:arm64:v1.23.17: cf1bca6b464f30ea078a9cf4d902033fb80527b03c2f39409e19fb8b3886c75eamd64:v1.23.17: 6d3f732fe1eabd91c98ff0ee66c6c8b4fcbdee9e99c2c8606f0fa5ff57b4ea65crun_checksums:arm64:1.4.4: 2ad2c02ec0b1566f1c5e85223b726b704904cc75c2eb4af298e95b98fe5c166damd64:1.4.4: 73f7f89a98f69c0bf0e9fe1e0129201d5b72529785b4b1bcb4d43c31d0c3a8earunc_checksums:arm64:v1.1.1: 20c436a736547309371c7ac2a335f5fe5a42b450120e497d09c8dc3902c28444amd64:v1.1.1: 5798c85d2c8b6942247ab8d6830ef362924cd72a8e236e77430c3ab1be15f080containerd_archive_checksums:arm64:1.6.15: d63e4d27c51e33cd10f8b5621c559f09ece8a65fec66d80551b36cac9e61a07damd64:1.6.15: 191bb4f6e4afc237efc5c85b5866b6fdfed731bde12cceaa6017a9c7f8aeda02nerdctl_archive_checksums:arm64:1.0.0: 27622c9d95efe6d807d5f3770d24ddd71719c6ae18f76b5fc89663a51bcd6208amd64:1.0.0: 3e993d714e6b88d1803a58d9ff5a00d121f0544c35efed3a3789e19d6ab36964etcd_binary_checksums:arm64:v3.5.6: 888e25c9c94702ac1254c7655709b44bb3711ebaabd3cb05439f3dd1f2b51a87amd64:v3.5.6: 4db32e3bc06dd0999e2171f76a87c1cffed8369475ec7aa7abee9023635670fbcni_binary_checksums:arm64:v1.1.1: 16484966a46b4692028ba32d16afd994e079dc2cc63fbc2191d7bfaf5e11f3ddamd64:v1.1.1: b275772da4026d2161bf8a8b41ed4786754c8a93ebfb6564006d5da7f23831e5flannel_cni_binary_checksums:arm64:v1.0.1: f813ae49b7b84eb95db73f7a3c34d2ee101f8cfc27e3a8054297a36d53308543amd64:v1.0.1: 63906a5b7dc78fbf1fbd484adbf4931aea5b15546ece3c7202c779ab9ea994a2flannel_image_repo: '{{ docker_image_repo }}/flannelcni/flannel'flannel_image_tag: '{{ flannel_version }}-{{ image_arch }}'flannel_init_image_repo: '{{ docker_image_repo }}/flannelcni/flannel-cni-plugin'flannel_init_image_tag: '{{ flannel_cni_version }}-{{ image_arch }}'calicoctl_download_url: >-https://github.com/projectcalico/calico/releases/download/{{calico_ctl_version }}/calicoctl-linux-{{ image_arch }}calicoctl_binary_checksums:amd64:v3.23.1: e8fd04d776df5571917512560800bf77f3cdf36ca864c9cae966cb74d62ba4fev3.22.3: a9e5f6bad4ad8c543f6bdcd21d3665cdd23edc780860d8e52a87881a7b3e203cv3.21.5: 98407b1c608fec0896004767c72cd4b6cf939976d67d3eca121f1f02137c92a7arm64:v3.23.1: 30f7e118c21ecba445b4fbb27f7ac8bc0d1525ab3c776641433e3b1a3388c65bv3.22.3: 3a3e70828c020efd911181102d21cb4390b7b68669898bd40c0c69b64d11bb63v3.21.5: cc73e2b8f5b695b6ab06e7856cd516c1e9ec3e903abb510ef465ca6b530e18e6calico_crds_archive_checksums:v3.23.1: a1754ae4bb158e3b46ba3fb326d8038d54cd0dc2c5c8527eadf2b0a6cf8ef2e3v3.22.3: 55ece01da00f82c62619b82b6bfd6442a021acc6fd915a753735e6ebceabaa21v3.21.5: ffbbaa2bc32b01bf160828d2cfd4504d83c69cb1f74c0028349181ed61bad635krew_archive_checksums:linux:arm64:v0.4.3: 0994923848882ad0d4825d5af1dc227687a10a02688f785709b03549dd34d71damd64:v0.4.3: 5df32eaa0e888a2566439c4ccb2ef3a3e6e89522f2f2126030171e2585585e4fcrictl_checksums:arm64:v1.24.0: b6fe172738dfa68ca4c71ade53574e859bf61a3e34d21b305587b1ad4ab28d24amd64:v1.24.0: 3df4a4306e0554aea4fdc26ecef9eea29a58c8460bebfaca3405799787609880snapshot_controller_image_tag: v4.2.1dns_min_replicas: '{{ [ 2, groups[''kube_control_plane''] | length ] | min }}'kuboardspray_extra_downloads:kuboard:container: truefile: falseenabled: '{{ kuboard_enabled }}'version: '{{ kuboard_version }}'repo: eipwork/kuboardtag: '{{ kuboard_version }}'sha256: ''groups:- kube_control_planenetcheck_etcd:container: truefile: falseenabled: '{{ deploy_netchecker }}'version: '{{ netcheck_etcd_image_tag }}'dest: >-{{ local_release_dir }}/etcd-{{ netcheck_etcd_image_tag }}-linux-{{image_arch }}.tar.gzrepo: '{{ etcd_image_repo }}'tag: '{{ netcheck_etcd_image_tag }}'sha256: '{{ etcd_digest_checksum|d(None) }}'unarchive: falseowner: rootmode: '0755'groups:- k8s_clustercoredns:enabled: '{{ dns_mode in [''coredns'', ''coredns_dual''] }}'container: truerepo: '{{ coredns_image_repo }}'tag: '{{ coredns_image_tag }}'sha256: '{{ coredns_digest_checksum|default(None) }}'groups:- k8s_clusteretcd:etcd_version: v3.5.6etcd_params: nulletcd_deployment_type:- host- dockerdependency:- name: crunversion: 1.4.4target: crun_version- name: krewversion: v0.4.3target: krew_version- name: runcversion: v1.1.1target: runc_version- name: cni-pluginsversion: v1.1.1target: cni_version- name: crictlversion: v1.24.0target: crictl_version- name: nerdctlversion: 1.0.0target: nerdctl_version- name: nginx_imageversion: 1.21.4target: nginx_image_tag- name: corednstarget: coredns_versionversion: v1.8.6- name: cluster-proportional-autoscalertarget: dnsautoscaler_versionversion: 1.8.5- name: pausetarget: pod_infra_versionversion: '3.6'network_plugin:- name: calicoparams:calico_version: v3.21.5- name: flannelparams:flannel_version: v0.17.0flannel_cni_version: v1.0.1addon:- name: kuboardtarget: kuboard_enabledlifecycle:install_by_default: truecheck:shell: kubectl get pods -n kuboard -l k8s.kuboard.cn/name=kuboard-v3keyword: kuboard-v3install_addon_tags:- download- upgrade- kuboardremove_addon_tags:- upgrade- kuboarddownloads:- kuboardparams_default:kuboard_version: v3.5.2.3kuboard_port: 80kuboard_cluster_name: defaultkuboard_data_dir: /root/kuboard-dataparams: null- name: nodelocaldnstarget: enable_nodelocaldnslifecycle:install_by_default: truecheck:shell: kubectl get daemonset -n kube-system nodelocaldns -o jsonkeyword: '"k8s-app": "kube-dns"'install_addon_tags:- download- upgrade- coredns- nodelocaldnsdownloads:- nodelocaldns- corednsparams:nodelocaldns_version: 1.21.1enable_nodelocaldns_secondary: false- name: metrics_servertarget: metrics_server_enabledlifecycle:install_by_default: truecheck:shell: kubectl get deployments -n kube-system metrics-server -o jsonkeyword: k8s.gcr.io/metrics-server/metrics-serverinstall_addon_tags:- download- upgrade- metrics_serverremove_addon_tags:- upgrade- metrics_serverdownloads:- metrics_serverparams:metrics_server_version: v0.6.2
3.4.2 创建集群
1 添加集群安装计划
在Kuboard Spray的集群管理
菜单中点击添加集群安装计划
按钮,填写集群名称,选择资源包,点击确定
2 配置集群的全局设置
- SSH设置中,设置所有K8S节点服务器的SSH连接用户名和密码,必须使用root用户。
- 容器引擎设置中,设置所有节点使用的容器引擎,在kylin系统中只能选择
containerd_1.6.15
- 软件源设置中,选择操作系统为
Kylin Linux Advanced Server
,选择kylin_linux_advanced_server 源默认设置为默认的使用操作系统预先配置的软件源
注意!!!
实际上本来应该添加软件源配置,根据需要选择软件源,但是Kuboard-Spray平台目前不支持kylin系统的软件源设置,只能选择系统默认软件源,去各个节点中配置默认的软件源为我们的私有yum软件源。
在集群的各个节点的服务器中,修改/etc/yum.repos.d/kylin_aarch64.repo文件,配置私有yum源地址,启用该配置,设置不检查文件。
vim /etc/yum.repos.d/kylin_aarch64.repo
###Kylin Linux Advanced Server 10 - os repo###[ks10-adv-base]
name = ks10-adv-base
baseurl = http://192.168.16.106/ks10-adv-base/
enabled = 1
gpgcheck = 0
执行命令可以查看配置的yum源是否生效,清理并重新建立yum缓存
# 查看yum源配置
yum repolist
# 清理缓存
yum clean all
# 创建缓存
yum makecache
全局配置和所有节点的系统默认yum软件源修改完成后,添加节点。
3 添加节点
点击添加节点
按钮,输入节点名称并勾选节点角色,点击确定
按钮将其加入到集群计划中。
例如:主节点设置名称为master
,角色勾选控制节点
、ETCD节点
、工作节点
;工作节点1设置名称为node1
,角色勾选工作节点
;工作节点2设置名称为node2
,角色勾选工作节点
。
所有节点信息添加和编辑完成后,点击保存
按钮保存集群计划信息。
添加节点后,选中节点,在右侧相应节点的信息标签页中编辑主机IP地址,如果该主机的root用户密码与全局设置不同,可以在这里设置用户名和密码。点击验证连接
,可以测试该主机是否能正确连接,并返回主机信息。
4 安装/设置集群
在集群信息查看页面,点击安装/设置集群
按钮,选择显示日志输出的详细程度、并发数量等信息,点击确认按钮,Kuboard-Spray将自动为该集群的所有节点进行安装和配置,等待日志输出安装成功即可。该过程可能要等待半个小时以上。
5 访问集群
安装完成后,点击上方集群名称后的刷新按钮,可以刷新集群状态。
使用Kuboard-spray安装集群,默认会勾选可选组件中的Kuboard,用于可视化管理集群。会安装在主节点上,这样
集群连接成功后,就可以点击使用集群规划外的其他标签页。在访问集群
标签页可以看到kuboard
访问集群的信息,例如:
http://192.168.16.107
默认用户名: admin
默认密 码: Kuboard123
在浏览器中访问Kuboard的
3.4.3 离线独立安装Kuboard集群可视化管理工具
1 安装Kuboard
如果不想默认将Kuboard安装到集群的控制节点上,可以在使用Kuboard-spray安装集群的时候在可选插件中取消Kuboard。然后独立安装Kuboard到合适的服务器上。
参考上文中其他的镜像导入方案,将Kuboard的镜像从公网拉下来,导入到内网服务器或推送到私有镜像仓库
执行docker run 命令运行Kuboard服务
docker run -d \--restart=unless-stopped \--name=kuboard \-p 80:80/tcp \-p 10081:10081/tcp \-e KUBOARD_ENDPOINT="http://内网IP:80" \-e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \-v /root/kuboard-data:/data \eipwork/kuboard:v3
参数解释
建议将此命令保存为一个 shell 脚本,例如 start-kuboard.sh,后续升级 Kuboard 或恢复 Kuboard 时,需要通过此命令了解到最初安装 Kuboard 时所使用的参数;
第 4 行,将 Kuboard Web 端口 80 映射到宿主机的 80 端口(您可以根据自己的情况选择宿主机的其他端口);
第 5 行,将 Kuboard Agent Server 的端口 10081/tcp 映射到宿主机的 10081 端口(您可以根据自己的情况选择宿主机的其他端口);
第 6 行,指定 KUBOARD_ENDPOINT 为 http://内网IP,如果后续修改此参数,需要将已导入的 Kubernetes 集群从 Kuboard 中删除,再重新导入;
第 7 行,指定 KUBOARD_AGENT_SERVER 的端口为 10081,此参数与第 5 行中的宿主机端口应保持一致,修改此参数不会改变容器内监听的端口 10081,例如,如果第 5 行为 -p 30081:10081/tcp 则第 7 行应该修改为 -e KUBOARD_AGENT_SERVER_TCP_PORT=“30081”;
第 8 行,将持久化数据 /data 目录映射到宿主机的 /root/kuboard-data 路径,请根据您自己的情况调整宿主机路径;
参考官方命令,修改第4行将Kuboard对外端口映射到8092端口,第6行的Kuboard的api服务端地址改为部署的服务器的内网IP,以便集群能够正常和Kuboard的api服务通信。
docker run -d \--restart=unless-stopped \--name=kuboard -p 8092:80/tcp -p 10081:10081/tcp -e KUBOARD_ENDPOINT="http://192.168.16.110:80" -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" -v /root/kuboard-data:/data 192.168.16.106:5000/kuboard/kuboard:v3
容器启动后,即可使用浏览器访问http://192.168.16.110:8092,进入可视化管理工具。默认用户名密码为admin/Kuboard123。
2 添加集群到Kuboard
添加已有的集群到Kuboard进行管理,在v3.5.2.5版本后,增加token添加方式,简单,通用性强,选择使用token的方式
前提条件:
Kuboard 可以访问 Kubernetes 集群的 APIServer
优点:
无需安装 Agent
可以支持高可用
适用各种方式安装的 k8s 集群
根据界面提示在集群master节点执行命令获取token,填写其他连接信息,点击确定即可添加成功。
3 安装metrics-scraper
metrics-scraper 用于存储最近一段时间内的 CPU/内存度量信息,以便在 kuboard 中展示 CPU/内存的曲线图
选择我的私有镜像仓库
,填写镜像仓库地址和项目名称,界面下方会提示镜像拉取、打标签和推送到私有镜像仓库的命令,按照提示将镜像推动到私有镜像仓库后,点击确定安装即可。