前言
本文简要描述了基于kubernetes 1.20.1, Istio 1.10.0, GlusferFS 9.2, Helm 3.12及Kiali 1.34.1 来构建MongoDB 3.6 集群。本文各组件的安装主要参与互联网文章及相应的官方文档,仅供个人参考使用。
一、前置条件
Istio 已安装配置好,或参考文章Istio学习笔记:Istio及Kiali的安装与配置进行实验配置。
【可选】Kubernetes Dashboard 已安装配置好,或参考文章 Istio学习笔记:https访问Kubernetes Dashboard-PASSTHROUGH 进行实验配置。
本文省略重复的过程,不同版本的安装配置雷同,差别以官方文档为准。
本文的简版k8s集群在Virtualbox下的节点配置如下:2C3G,20G系统。 所有节点均可调度。
kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane,master 4d22h v1.20.1
k8s-node01 Ready <none> 4d22h v1.20.1
k8s-node02 Ready <none> 43h v1.20.1
二、安装步骤
1.Kiali配置调整(可选 )
Kiali 通过Istio 代码里的samples/addon模板安装时,默认并没有配置对外的grafan 及trancing服务。对外的url 暂时通过nodePort的方式进行服务暴露。另外,需要强调的是,将deployment的镜像拉取策略由Always改成IfNotPresent,以免重新调度国内无法拉取到kiali镜像。
#编辑kiali configMap
kubectl edit cm -n istio-system kiali
#这里的vhost.yin.com是master节点的ip 域名,新增tracing及grafana的配置
...
external_services:
custom_dashboards:
enabled: true
tracing:
in_cluster_url: http://tracing.istio-system/jaeger
url: http://vhost.yin.com:32255/jaeger
grafana:
url: http://vhost.yin.com:32526
...
2.Glusterfs的安装
在每台节点中外挂50G存储盘,将使用fdisk /dev/sdb进行格式化及分区创建/dev/sdb1。
#格式化并新建分区
fdisk /dev/sdb
#选择n新建一个分区,配置采用默认
#选择w保持并退出。通过fdisk -l 查看
...
磁盘 /dev/sdb:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x55f93103
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 104857599 52427776 83 Linux
...
安装Glusterfs
#1. 加载内核模板(这里先记录下,印象中安装client是需要的)
modprobe dm_snapshot
modprobe dm_mirror
modprobe dm_thin_pool
#2. 安装Glusterfs组件,在每个节点中执行
yum install centos-release-gluster -y
yum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma glusterfs-geo-replication glusterfs-devel
#3. 启动
systemctl enable glusterd & systemctl start glusterd
#4. 查看版本
gluster --version
glusterfs 9.2
#5. 添加Peer,在master节点执行
gluster peer probe k8s-node01
gluster peer probe k8s-node02
#查看状态
gluster peer status
Number of Peers: 2
Hostname: k8s-node01
Uuid: 386d5d86-6a18-4666-84ca-53e0a561a79e
State: Peer in Cluster (Connected)
Other names:
192.168.56.112
Hostname: k8s-node02
Uuid: 6bc87c96-637b-4d8a-9877-55687c43a020
State: Peer in Cluster (Connected)
Other names:
192.168.56.113
安装Heketi, 以ssh方式执行时,确认各节点能够通过免密登陆。免密登陆的操作主要通过ssh-keygen及ssh-copy-id等命令完成
#1. 在master节点执行
yum install -y heketi heketi-client
systemctl enable heketi & systemctl start heketi