1、概述html
一、部署metrics-servernode
我都是把这种服务部署在master节点上面,此时须要修改metrics-server-deployment.yamlgit
--- apiVersion: v1 kind: ServiceAccount metadata: name: metrics-server namespace: kube-system --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: metrics-server namespace: kube-system labels: k8s-app: metrics-server spec: selector: matchLabels: k8s-app: metrics-server template: metadata: name: metrics-server labels: k8s-app: metrics-server spec: serviceAccountName: metrics-server tolerations: - effect: NoSchedule key: node.kubernetes.io/unschedulable operator: Exists - key: NoSchedule operator: Exists effect: NoSchedule volumes: # mount in tmp so we can safely use from-scratch images and/or read-only containers - name: tmp-dir emptyDir: {} containers: - name: metrics-server image: k8s.gcr.io/metrics-server-amd64:v0.3.1 imagePullPolicy: Always command: - /metrics-server - --kubelet-insecure-tls - --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP volumeMounts: - name: tmp-dir mountPath: /tmp nodeSelector: metrics: "yes"
为master节点添加labelgithub
部署sql
验证:docker
it's coolvim
注:metrics-server默认使用node的主机名,可是coredns里面没有物理机主机名的解析,一种是部署的时候添加一个参数:api
- --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP
bash
第二种是使用dnsmasq构建一个上游的dns服务,参照https://www.cnblogs.com/cuishuai/p/9856843.html。app
二、部署prometheus
下载相关文件:
cd k8s-monitor
yum install -y nfs-utils
1.
1.1 master上安装nfs sudo
在 nfs-deployment.yaml 更改image pull路径: lizhenliang/nfs-client-provisioner:latest
sudo vi /etc/exports
systemctl restart /data/opv *(rw,sync,no_root_squash,no_subtree_check) 注意将*换成本身的ip段,纯内网的话也能够用*,代替任意 sudo rpcbind restart
systemctl restart nfssudo
sudo systemctl enable rpcbind nfs
1.2 客户端 Node节点上 安装: sudo yum install -y nfs-common mount -t nfs k8s-masterIP:/data/opv /data/opv -o proto=tcp -o nolock 为了方便使用将上面的mount命令直接放到.bashrc里面
2. master上:
建立namesapce kubectl creaet -f nfs/monitoring-namepsace.yaml 3.为nfs建立rbac kubectl create -f nfs/rbac.yaml 4.建立deployment,将nfs的地址换成本身的 kubectl create -f nfs/nfs-deployment.yaml 5.建立storageclass kubectl create -f nfs/storageClass.yaml
cd k8s-monitor/Promutheus/prometheus
1.建立权限
kubectl create -f rbac.yaml 2.建立 node-exporter kubectl create -f prometheus-node-exporter-daemonset.yaml kubectl create -f prometheus-node-exporter-service.yaml 3.建立 kube-state-metrics kubectl create -f kube-state-metrics-deployment.yaml kubectl create -f kube-state-metrics-service.yaml 4.建立 node-directory-size-metrics kubectl create -f node-directory-size-metrics-daemonset.yaml 5.建立 prometheus kubectl create -f prometheus-pvc.yaml kubectl create -f prometheus-core-configmap.yaml kubectl create -f prometheus-core-deployment.yaml kubectl create -f prometheus-core-service.yaml kubectl create -f prometheus-rules-configmap.yaml 6.修改core-configmap里的etcd地址
#修正文件prometheus-core-configmap.yaml的143行开始修改为以下:注意insecure比上一行后退2格:
vim prometheus-core-configmap.yaml +143
- job_name: 'etcd'
scheme: https
tls_config:
insecure_skip_verify: true
7. 若是promethus Pod有问题,先用kubectl delete依次如下的全部yaml文件:
kubectl delete -f prometheus-core-service.yaml
再kubectl create 全部delete的yaml文件。
cd k8s-monitor/Promutheus/grafana
1.安装grafana service kubectl create -f grafana-svc.yaml 2.建立configmap kubectl create -f grafana-configmap.yaml 3.建立pvc kubectl create -f grafana-pvc.yaml 4.建立gragana deployment kubectl create -f grafana-deployment.yaml 5.建立dashboard configmap kubectl create configmap "grafana-import-dashboards" --from-file=dashboards/ --namespace=monitoring 6.建立job,导入dashboard等数据 kubectl create -f grafana-job.yaml
查看部署:
prometheus和grafana都是采用的nodePort方式暴漏的服务,因此能够直接访问。
grafana默认的用户名密码:admin/admin
QA:
一、集群是使用kubeadm部署的,controller-manager和schedule都是监听的127.0.0.1,致使prometheus收集不到相关的数据?
能够在初始化以前修改其监听地址:
apiVersion: kubeadm.k8s.io/v1beta1 kind: ClusterConfiguration controllerManager: extraArgs: address: 0.0.0.0 scheduler: extraArgs: address: 0.0.0.0
若是集群已经构建好了:
sed -e "s/- --address=127.0.0.1/- --address=0.0.0.0/" -i /etc/kubernetes/manifests/kube-controller-manager.yaml
sed -e "s/- --address=127.0.0.1/- --address=0.0.0.0/" -i /etc/kubernetes/manifests/kube-scheduler.yaml
二、metrics-server不能使用,报错不能解析node节点的主机名?
须要修改deployment文件,
- --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP
三、metrics-server报错,x509,证书是非信任的?
command: - /metrics-server - --kubelet-insecure-tls
四、完整的配置文件
containers: - name: metrics-server image: k8s.gcr.io/metrics-server-amd64:v0.3.1 command: - /metrics-server - --metric-resolution=30s - --kubelet-insecure-tls - --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP