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: {}