Kubernetes 监控和日志

1       查看集群资源状态

1.1   查看mster集群状态

kubectl  get  cs

 

1.2   查看node状态

kubectl  get  node

 

1.3   查看Apiserver代理的URL

kubectl  cluster-info

 

1.4   查看集群线下信息

kubectl  cluster-info dump

1.5   查看资源信息

kubectl  describe  <资源>   <资源名称>

 

1.6   列出k8s支持的资源

kubectl api-resources

 

1.7   实时查看资源信息

kubectl  get  pod(或是pod名称)  -w(或是--watch)

 

2       监控集群资源利用率

2.1   metrics server

         Metrics server 是一个集群范围的资源使用情况的数据聚合器,作为一个应用部署在集群中,metrics server 从每一个节点上kubelet api收集指标,通过kubernetes聚合器注册在master apiserver中。

 

Metrics-server+cAdvisor监控集群资源消耗

2.2   部署

项目地址:https://github.com/kubernetes-sigs/metrics-server

wget  https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.4.1/components.yaml

修改vim components.yaml

 

2.3   查看node资源消耗

kubectl  top  node 

 

2.3.1  查看pod资源的消耗

kubectl  top  pod 

 

3       管理k8s组件日志

Systemd守护进程管理的组件:

jurnalctl -u kubelet

Pod部署的组件:

Kubectl  logs  kube-proxy-btxd4  -n kube-system

系统日志:

/var/log/messages

4       管理k8s应用日志

K8s cluster里面部署的应用程序日志

         -标准输出

                   查看容器标准输出的日志

                   kubectl logs podname

                   kubectl log -f  podname

                   kubect logs –f podname  -c  containername

                   标准输出在宿主机的路径

                   /var/log/docker/containers/<container-id>/<container-id>-json.log

-日志文件

                   容器中应用日志可以使用emptyDir数据卷将日志文件持久化到宿主机上,

                   宿主机的路径:

                            /var/lib/kubelet/pods/<pod-id>/volumes/kubernetes,io~empty-dir/logs/*.log

4.1   日志收集方案

方案一:将容器应用程序日志共享到宿主机通过挂载空目录emptyDir

实例:

apiVersion: v1

kind: Pod

metadata:

  labels:

    run: nginx-php-1

  name: my-nginx-pod

spec:

  containers:

  - image: lizhenliang/nginx-php

    name: nginx-php-1

    volumeMounts:

    - name: logs

      mountPath: /usr/local/nginx/logs

  volumes:

  - name: logs

emptyDir: {}

参考文档:

https://kubernetes,io/docs/concepts/cluster-administration/logging

方案二:pod 创建一个边车容器读取业务容器日志

[root@k8s-master ~]# cat nginx-logs.yaml

apiVersion: v1

kind: Pod

metadata:

  labels:

  name: nginx-pods-logs

spec:

  containers:

  - image: lizhenliang/nginx-php

    name: nginx-pods

    volumeMounts:

    - name: logs

      mountPath: /usr/local/nginx/logs

  - name: nginx-pods-longs

    image: busybox

    args: [/bin/sh, -c,'tail -f /opt/access.log']

    volumeMounts:

    - name: logs

      mountPath: /opt

  volumes:

  - name: logs

    emptyDir: {}

原文地址:https://www.cnblogs.com/houchaoying/p/14365601.html