1. 准备
1.1 cadvisor
cadvisor:
image: harbocto.xxx.com.cn/public/cadvisor:v0.24.1
container_name: monitoring_cadvisor
restart: unless-stopped
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
ports:
- "4194:8080"
1.2 文件下载
github 地址
https://github.com/n9e/k8s-mon安装文件
下载合适版本到服务器,下载得到k8s-mon-2.2.0.zip
文件,解压缩得到k8s-mon-2.2.0
目录。
1.3 metrics
- 修改为本地镜像(非必须)
下载公共镜像:quay.io/coreos/kube-state-metrics:v1.9.7
上传本地镜像仓库:harbocto.xxx.com.cn/kubernetes/kube-state-metrics:v1.9.7
修改配置文件:修改k8s-mon-2.2.0/k8s-config/kube-stats-metrics/deployment.yaml
文件
- image: harbocto.xxx.com.cn/kubernetes/kube-state-metrics:v1.9.7
- 启动服务
[root@DoM01 k8s-mon-2.2.0]# kubectl apply -f k8s-config/kube-stats-metrics
- 查看容器
[root@DoM01 kube-stats-metrics]# kubectl get pod -n kube-system
NAME READY STATUS RESTARTS AGE
……
kube-state-metrics-6497487656-mpgqs 1/1 Running 0 21s
……
2. 安装夜莺k8s客户端
2.1 准备
- 修改为本地镜像
公共源使用阿里云镜像:registry.cn-beijing.aliyuncs.com/n9e/k8s-mon:v2.2.0
上传本地仓库:harbocto.xxx.com.cn/kubernetes/k8s-mon:v2.2.0
同步修改daemonset 和deployment yaml文件中的image字段
- 创建 namespace
# kubectl create ns kube-admin
- 证书文件
kubectl create secret generic etcd-certs --from-file=/etc/kubernetes/pki/etcd/healthcheck-client.crt --from-file=/etc/kubernetes/pki/etcd/healthcheck-client.key --from-file=/etc/kubernetes/pki/etcd/ca.crt -n kube-admin
2.2 修改配置文件
- 查看要修改处
[root@DoM01 k8s-config]# grep N9E_NID *
configMap_daemonset.yaml: n9e_nid_label_name: "N9E_NID"
configMap_deployment.yaml: n9e_nid_label_name: "N9E_NID"
daemonSet.yaml: N9E_NID: "5"
deployment.yaml: N9E_NID: "5"
- 查看实际 N9E_NID
- 修改配置文件
[root@DoM01 k8s-config]# grep N9E_NID *
configMap_daemonset.yaml: n9e_nid_label_name: "N9E_NID"
configMap_deployment.yaml: n9e_nid_label_name: "N9E_NID"
daemonSet.yaml: N9E_NID: "11"
deployment.yaml: N9E_NID: "11"
- 启动服务
[root@DoM01 k8s-mon-2.2.0]# kubectl apply -f k8s-config
configmap/k8s-mon-daemonset created
configmap/k8s-mon-deployment created
daemonset.apps/k8s-mon-daemonset created
deployment.apps/k8s-mon-deployment created
serviceaccount/k8s-mon created
clusterrole.rbac.authorization.k8s.io/k8s-mon created
clusterrolebinding.rbac.authorization.k8s.io/k8s-mon created
- 查看结果
[root@DoM01 k8s-mon-2.2.0]# kubectl get pod -n kube-admin
NAME READY STATUS RESTARTS AGE
k8s-mon-daemonset-2whf2 1/1 Running 0 5s
k8s-mon-daemonset-5dx2l 1/1 Running 0 5s
k8s-mon-daemonset-d4hts 1/1 Running 0 5s
k8s-mon-daemonset-m9p7v 1/1 Running 0 5s
k8s-mon-daemonset-ncqv4 1/1 Running 0 5s
k8s-mon-deployment-794b57b759-85bgb 1/1 Running 0 5s
- 夜莺查看结果
3. 服务接入夜莺
需要给服务打个标签,如在yml文件中metadata.labels
字段添加如 N9E_NID: "11"
。值11 是我们在步骤 "2.2"中看到的
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: server
namespace: "{{ .Values.global.namespace }}"
spec:
replicas: 1
template:
metadata:
labels:
app: server
N9E_NID: "11"