OpenShift Metrics监控采用Kubernetes原生的kubelet api
提供数据,然后使用heapster进行收集存储到cassandra数据库中,这些监控数据最主要是用来进行pad auto scalers
。
Heaspter、 Hawkular Metrics 和 Canssandra数据库都是以容器的形式提供,并默认提供了可快速部署的template。 用户通过简单的配置就可以快速部署和启用度量采集和监控 。
1. 准备工作
先在Master节点上安装1.8版本的JDK,并将其添加到PATH环境变量中,执行Ansible Playbook过程中会用到。
安装可参考: https://www.cnblogs.com/xuliangxing/p/7066913.html
2. 切换项目到openshift-infra
[root@openshift-qa ~]# oc project openshift-infra
Now using project "openshift-infra" on server "https://openshift-qa.okd.io:8443".
3. 通过Ansible playbook安装OpenShift Metrics
# 克隆OpenShift Ansible代码库
git clone -b release-3.9 https://github.com/openshift/openshift-ansible
cd openshift-ansible/
ansible-playbook -i ./inventory.ini \
./playbooks/openshift-metrics/config.yml \
-e openshift_metrics_install_metrics=True \
-e openshift_metrics_hawkular_hostname=openshift-metrics-qa.okd.io \
-e openshift_metrics_start_cluster=True \
-e openshift_metrics_duration=1 \
-e openshift_metrics_image_version=v3.9 \
参数说明:
- -i: 指定inventory文件,默认按照官网利用ansible安装openshift的时候,你会有inventory.ini文件
- openshift_metrics_install_metrics=True: 安装监控
- openshift_metrics_hawkular_hostname=openshift-metrics-qa.okd.io 指定监控访问域名
- openshift_metrics_image_version=v3.9: 指定镜像版本,此处一定要指向该版本,否则默认会去拉v3.9.0的tag,但是
docker hub
里面没有这个tag - openshift_metrics_start_cluster=True: 是否集群启动之后就开始数据收集
- openshift_metrics_duration=1: 数据保留多长时间
- openshift_metrics_cassandra_storage_type=dynamic: 动态分配pv,如果上述未指定pv,也就是不做持久化存储
我搭建的单机测试版本的inventory.ini文件如下:
[root@openshift-qa openshift-ansible]# cat /data/setup/inventory.ini
[OSEv3:children]
masters
nodes
etcd
[OSEv3:vars]
ansible_ssh_user=root
openshift_deployment_type=origin
openshift_release=3.9
openshift_master_default_subdomain=openshift-qa.okd.io
openshift_master_cluster_method=native
openshift_master_cluster_hostname=openshift-qa
openshift_master_cluster_public_hostname=openshift-qa.okd.io
# 不要检查
openshift_disable_check=disk_availability,docker_storage,memory_availability,docker_image_availability
openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider', 'filename': '/etc/origin/master/htpasswd'}]
# 禁用 NTP 配置(阿里云默认开启)
openshift_clock_enabled=true
openshift_docker_options="--log-driver=journald --registry-mirror=https://0sx3ibp.mirror.aliyuncs.com"
osm_cluster_network_cidr=192.168.0.0/16
[masters]
openshift-qa openshift_schedulable=True
[nodes]
openshift-qa openshift_node_labels="{'region': 'infra'}"
[etcd]
openshift-qa
inventory file参考:
https://docs.okd.io/latest/install/configuring_inventory_file.html
https://github.com/openshift/openshift-ansible/blob/master/inventory/hosts.localhost
4、安装完成后检查pod状态
[root@openshift-qa ~]# oc get pods
NAME READY STATUS RESTARTS AGE
hawkular-cassandra-1-7c68l 1/1 Running 5 14h
hawkular-metrics-8vsf5 1/1 Running 37 14h
heapster-qnsgn 1/1 Running 14 14h
部署完毕,再次查看Pod的状态可见 Hawkular、 Cassandra及 Heaspter容器的状态均为 Running。
提示:
运行监控的这三个模块很耗费资源,在第一次安装的时候,由于内存不足,导致三个容器没有一个启动成功的,最后只能将虚拟机内存增加到16G之后,才勉强运行起来, 因为初期没有安装metrics,默认运行了一些pod,占用了一些资源
heapster容器内存设置情况:
hawkular-metrics内存设置情况:
Cassandra内存设置情况:
5、Web端验证
由于3.9.0的Web Console
采用pod部署,配置文件在Config Maps
里面,所以在部署完监控之后会自动更新web-console的Config Maps
添加一条metricsPublicURL:https://openshift-metrics-qa.okd.io/hawkular/metrics 信息。
此时pod页面是还没有metrics选项的,有几种解决方法使更改的config map生效:
- 等一会,自动更新生效
- 干掉pod,重新生成
- 委婉一点,将副本数改为0,然后再设置为1
刷新页面,metrics选项就出来了。

本文由 空心菜 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Dec 14, 2018 at 08:23 am