容器的的运维和监控,是课程第十章的内容

1.容器的基本监控

相关命令:

  1. docker top d1ea6fa01bbd,top后面跟上容器名称可以查看docker的情况
  2. docker stats,查看容器的使用情况

1.1weavework工具

  1. 安装,https://github.com/weaveworks/scope
  2. scope launch 192.168.210.10,192.168.210.10是那个机器的外部可以访问的地址,然后就可以在网页里面查看docker的运行情况了
  3. scope stop,可以关闭scope
  4. scope lannch后面可以跟多个ip,只要能连通就可以了

2.k8s集群运行资源监控——Heapster+Grafana+InfluxDB

heapster: https://github.com/kubernetes/heapster
详见lab010/lab002的三个yml文件,然后启动三个文件就可以了。

相关命令:

  1. kubectl get namespace,查看现在的namespace,默认我们创建的是创建在default的namespace下的
  2. kubectl get svc –namespace kube-system,这个是得到kube-system这个namespace下的service
  3. 可以看到有一个kubernetes-dashboard的service,是NodePort的,我们可以进去看一下,是一个k8s的dashboard
  4. grafana的默认密码是admin,admin
  5. 把grafana这个yml文件里面的service的type换成NodePort,我们就可以在外部访问了

3.根据资源占用自动横向伸缩

我们可以通过监控系统资源,比如cpu的使用率,来自动横向伸缩。比如cpu超过50%的使用率的时候,我们就自动新加一个机器。要是使用率低的,我们可以再减少一点机器。

相关命令:

  1. 删除10-2里面的3个yml文件创建的资源
  2. minikube addons list,查看minikube的addons,会看到enable还是disable
  3. minikube addons enable heapster,enable heapster这个addons
  4. minikube stop
  5. minikube start –extra-config=controller-manager.HorizontalPodAutoscalerUseRESTClients=false,这个minikube的启动参数可以让创建autoscale的时候,可以获得cpu试用率
  6. kubectl run php-apache –image=k8s.gcr.io/hpa-example –requests=cpu=200m –expose –port=80,按照k8s给出的教程,启动一个测试pod,–requests=cpu=200m这个参数限定了cpu的使用量
  7. kubectl autoscale deployment php-apache –cpu-percent=50 –min=1 –max=10,创建一个autoscale,–cpu-percent表示cpu百分比多少的时候要添加pod,最少要一个pod,最多是10个pod
  8. kubectl get horizontalpodautoscaler,得到现在集群里面的autoscaler,还有target的负载情况

NOTICE

  1. autoscale得到负载情况是需要时间的,通常会有一点延迟,不会是很实时的。
  2. 得到负载情况到完成自动伸缩,也是需要一点时间的

4.k8s集群Log的采集和展示——ELK+Fluentd

elk

这里没有logstash,而是用fluentd。LogTrail算是kibana里面的一个插件,看日志比较方便

NOTICE

  1. 所以要打日志的节点都要写加一个label,使用命令 kubectl label node –all beta.kubernetes.io/fluentd-ds-ready=true
  2. kubecte create -f,后面可以跟文件夹,那么文件夹里面所有配置文件都会被创建3
  3. 具体的配置文件可以看视频里面,然后去docker-lab里面找

5.k8s集群监控方案Prometheus

https://prometheus.io/
prometheus和别的监控方案有一个不一样的地方,就是他是采取拉的方式。elk或者其他的这种都是推的方式,也就是应用把日志主动的推向elk。但是prometheus是主动去拉数据,这是一个不一样的地方。
具体配置文件见docker-labs