监控集群资源利用率
metrics-server是一个集群范围的资源使用情况的数据聚合器,作为一个应用部署在集群中
metrics-server从每个节点上kubelet API收集指标,通过kubernetes聚合器注册在master APIserver中
Metrics-Server默认是没有部署的,需要手工进行部署
GitHub地址:https://github.com/kubernetes-sigs/metrics-server/ yaml文件下载地址 wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.7/components.yaml
里面有两种模式可选:
1、HPA 模式可以实现pod水平扩展,可以增加pod的数量 2、VAP 模式可以实现Pod 可以横向扩展,可以增加pod的配置
修改yaml
vim components.yaml
86 image: lizhenliang/metrics-server:v0.3.7 #更换为国内的镜像下载地址 87 imagePullPolicy: IfNotPresent 88 args: 89 - --cert-dir=/tmp 90 - --secure-port=4443 91 - --kubelet-insecure-tls #跳过https(证书)校验 92 - --kubelet-preferred-address-types=InternalIP #使用IP进行连接kuberlet
kubectl describe node|grep InternalIP
修改完成后生效文件
kubectl apply -f components.yaml kubectl get pods -n kube-system
查看metrics server是否向apiserver注册
kubectl get apiservice #查看聚合成注册信息
如果有异常情况可以使用命令进行查看资源情况
kubectl describe apiservice v1beta1.metrics.k8s.io
查看node和pod资源消耗
kubectl top node #不加节点名称默认是所有节点资源利用率 kubectl top pods #不加pod名称默认是全部pod的资源利用率 kubectl top pods nginx-f89759699-6n8qg #指定pod查看利用率 kubectl top pods -n kube-system #指定命名空间下的资源利用率
工作流程:kubectl top -->所有请求都请求apiserver -->代理metrics-server pod -->kubelet(cadvisor) -->通过cgroups中获取 apiserver聚合成:动态注册,安全代理,方便第三方应用接入,统一接入 cgroups 资源限制位置ls /sys/fs/cgroup/memory/kubepods/
k8s系统的组件日志
k8s Cluster里面部署的应用程序日志
- 标准输出
- 日志文件
1、标准输出路径 /var/log/docker/containers/<container-id>/<container-id>-json.log 2、查看容器标准输出日志 kubectl logs <pod名称> kubectl logs -f <pod名称> kubectl logs -f <pod名称> -c <容器名称> 3、容器内应用日志路径 /var/lib/kubelet/pods/<pod-id>/volumes/kubernetes.io~empty-dir/logs/acess.log
例子:
将日志文件通过数据卷挂着到宿主机目录,这样一来就可以在宿主机上统一查看日志了
mkdir /tmp/logs #每个节点都要创建 kubectl apply -f pod.yaml kubectl delete pod.yaml #创建错误删除 kubectl get pods -o wide
vim pod.yaml
apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: web image: lizhenliang/nginx-php volumeMounts: - name: logs mountPath: /usr/local/nginx/logs #容器中的目录 volumes: - name: logs hostPath: path: /tmp/logs #宿主机的目录 type: Directory
日志收集方案
1、deamonset方式在每个节点部署一个日志采集pod完成讲解的两个目录采集
2、sidecar在pod部署一个日志采集容器,通过数据卷共享业务容器日志目录