安装部署
前提条件
Kubernetes版本大于等于1.11 或 OpenShift版本大于等于3.10。
Kubernetes集群必须安装kubectl,所有命令都需要在kubectl控制节点执行。OpenShift集群必须安装oc,所有命令都需要在oc控制节点执行。
集群必须开启MutatingAdmissionWebhook插件(OpenShift 3.x平台默认是关闭的)。
集群内空闲的资源必须大于探针需要最小消耗的资源:4Core CPU、16GB内存。
说明:Kubernetes UniAgent已经集成了Agent Collector,因此部署前不需要部署Agent Collector。 由于 Agent Collector 消耗的资源比较高,为了不影响业务应用Pod的运行,建议通过nodeSelector将Agent Collector固定到一些特定的Node上。
部署探针
登录基调听云悟空平台。
在左侧导航栏中选择管理>部署状态。
在UniAgents页面的右上角单击新增,新部署UniAgent。
选择Kubernetes或OpenShift部署平台。
OpenShift平台下仅支持部署APM探针,不支持部署Infra探针。
配置Kubernetes基础信息。
- 集群名称:UniAgent所要部署到的Kubernetes集群名称。下方的部署环境和业务系统会自动同步此处的信息。
- Kubernetes版本:默认勾选1.18+,可选版本1.18+、1.14-1.17和1.11-1.13。请确保选择的版本和实际使用的Kubernetes版本一致。
- 部署环境:Kubernetes集群所在的部署环境名称,默认与集群名称联动,也可单独填写。部署环境由字母、数字、下划线(_)、中划线(-)组成。
- Namespace:部署UniAgent所在的namespace名称。默认为tingyun。可自定义名称,请确保使用一个独立的namespace。
- 业务系统:监控数据所属的业务系统,默认与集群名称联动,也可单独填写。UniAgent监控的应用将默认属于该业务系统。如果输入的是一个不存在的业务系统,听云报表系统将会新创建一个该名称的业务系统。业务系统由字母、数字、下划线(_)、中划线(-)组成。用户可在应用与微服务>业务系统中配置业务系统。
- 镜像仓库选择:包括Docker官方公共仓库和私有仓库,默认勾选Docker官方公共仓库。使用私有仓库之前,需要上传探针镜像到私有仓库仓库,具体步骤见私有镜像仓库部署。
选用以下方式下载UniAgent yaml文件。
- 方法一:单击点击生成,系统会生成安装命令,单击右侧的copy按钮将安装命令拷贝到剪切板,以备在目标服务器上执行这条命令。
- 方法二:网络不通时,可直接单击右侧下载按钮下载yaml文件,可以将yaml文件传到目标服务器。
如果在第5步信息配置中填写的Namespace(例如:tingyun)在Kubernetes集群中不存在,则需要在Kubernetes中创建Namespace,如果已经存在该Namespace,则忽略这一步。
kubectl create namespace tingyun
在Kubernetes中执行下载的yaml文件, 并备份yaml,这个yaml无论将来配置更新,升级镜像还是卸载探针都用的到。
kubectl apply -f tingyunagent.yaml
安装探针需要 MutatingWebhookConfiguration、ClusterRoleBinding和ClusterRole权限。如果权限不足,请联系Kubernetes集群管理员进行操作,可参见常见问题。
验证安装是否成功,确认所有Pod均处在Running状态。
kubectl get pods -n tingyun
如果状态异常请查看常见问题。
开启应用监控。
默认情况下,不会对应用Pod嵌入APM探针,如需开启应用监控,还需要以下操作:
给应用Pod所在的Namespace打label。
kubectl label namespace [应用所在namespace] tingyun-injection=enabled
给deployment/daemonset/statefuset打label,将tingyun-agent-injected设置为true。以Tocmat部署的Deployment为例,配置如下:
apiVersion: apps/v1 kind: Deployment metadata: name: demo1 namespace: default spec: selector: matchLabels: app: demo1 template: metadata: labels: tingyun-agent-injected: "true" spec: containers: - name: demo1 image: tomcat
激进嵌码模式情况下,会对打了标签的Namespace下所有应用嵌入APM探针:
```
kubectl label namespace [应用所在namespace] tingyun-injection=enabled
```
如需禁用某个应用监控,需要给deployment/daemonset/statefuset打label,将tingyun-agent-injected设置为false。以Tocmat部署的Deployment为例,配置如下:
```
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo1
namespace: default
spec:
selector:
matchLabels:
app: demo1
template:
metadata:
labels:
tingyun-agent-injected: "false"
spec:
containers:
- name: demo1
image: tomcat
```
- 验证部署状态。
在新增UniAgent部署页面最下方,单击查看部署状态按钮,可跳转到UniAgents管理页面,看到上述刚部署的服务器,且在该主机下有进程信息。如果有数据,说明UniAgent部署成功。
在左侧导航栏中单击应用与微服务>业务系统,进入业务系统拓扑页面,左侧操作面板区下方的应用区可以看到新生成的应用。
在左侧导航栏中单击基础设施>主机监控,可以看到新生成的主机信息,Kubernetes集群有多少个Node就会新增多少个主机。
探针所需资源
APM Injector
默认只有一个Pod,可横向扩展,用于自动嵌码应用探针。
limits:
cpu: "0.5"
memory: "200Mi"
requests:
cpu: "0.01"
memory: "10Mi"
APM initContainer
随应用启动的Pod,初始化完毕后销毁,资源属于临时征用。
limits:
cpu: "0.5"
memory: "200Mi"
requests:
cpu: "0.01"
memory: "10Mi"
Collector
默认1个Pod,可横向扩展,用于收集应用的性能数据和基础设施监控数据。
limits:
cpu: "4"
memory: "16Gi"
requests:
cpu: "2"
memory: "8Gi"
Infra Agent
默认每个Node上启动一个Pod,用于基础设施监控。
limits:
cpu: "2"
memory: "1Gi"
requests:
cpu: "0.2"
memory: "200Mi"
Prometheus
一个Pod,用于基础设施监控。
limits:
cpu: "3"
memory: "2Gi"
requests:
cpu: "0.4"
memory: "1Gi"