包含标签 k8s 的文章

K8S | Prometheus+Grafana监控

概述

作为应用与Kubernetes的监控体系,Prometheus具备诸多的优势,如:

  • Kubernetes默认支持,非常适合容器和微服务- 无依赖,安装方便,上手容易- 社区活跃,它不仅仅是个工具,而是生态- 已有很多插件或者exporter,可以适应多种应用场景的数据收集需要- Grafana默认支持,提供良好的可视化- 高效,单一Prometheus可以处理百万级的监控指标,每秒处理数十万的数据点 在部署之前,先来了解一下Prometheus各个组件的作用吧!
  • MertricServer:是k8s集群资源使用情况的聚合器,收集数据给K8s集群内使用,如:kubectl,hpa,scheduler- PrometheusOperator:是一个系统检测和警报工具箱,用来存储监控数据;- NodeExporter:用于各node的关键度量指标状态数据;- kubeStateMetrics:收集k8s集群内资源对象数据,指定告警规则;- Prometheus:采用pull方式收集apiserver,scheduler,controller-manager,kubelet组件数据,通过http协议传输;- Grafana:是可视化数据统计和监控平台。 web管理部署一个就可以。如果安装了其他web管理可以删除
    https://github.com/prometheus/prometheus

下载

下载prometheus所需文件:

……

阅读全文

K8S | Ingress的基本使用

缘由

看了statefulset基础教程的基础教程,并且把环境搭建起来后。pod内部是可以连通了。但是我不知道怎么去从外部访问。在网上搜索一番,通过Ingress可以作为集群的入口。遂记录之。
结合Statefulset的示例进行配置。这是未配置Ingress之前的Statefulset示例:

……

阅读全文

K8S | Statefluset的持久存储PVC

缘由

在看statefluset基础教程的时候遇到pod状态为pending

kubectl describe pod web-0

日志内容是

 pod has unbound immediate PersistentVolumeClaims

于是就对PV和PVC进行研究。
有给出完整的 web.yaml查看最下面的完整示例。但是我建议先把PV和PVC的概念弄懂了,还有学会查看pod的描述kubectl describe pod podname或者日志kubectl logs -f podname,自然知晓怎么处理pod的状态为pending的问题了。

……

阅读全文

K8S | 创建第一个应用

使用k8s部署第一个应用

创建一个nginx.yaml文件

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  # 指定 label,便于检索
  labels:
    app: nginx
spec:
  containers:
    - name: nginx
      # 指定镜像
      image: nginx:alpine
      # 指定暴露端口
      ports:
        - containerPort: 80

---
# 创建网络服务
apiVersion: v1
kind: Service
metadata:
  name: kube-node-service
  labels:
    name: kube-node-service
spec:
  type: NodePort      #这里代表是NodePort类型的
  ports:
    - port: 80          #这里的端口和clusterIP(10.97.114.36)对应,即10.97.114.36:80,供内部访问。
      targetPort: 80  #端口一定要和container暴露出来的端口对应,nodejs暴露出来的端口是8081,所以这里也应是8081
      protocol: TCP
      nodePort: 32143   # 所有的节点都会开放此端口,此端口供外部调用。

  selector:
    app: nginx          #这里选择器一定要选择容器的标签,之前写name:kube-node是错的。

执行指令:

……

阅读全文

K8S | 集群资源监控 heapster

安装heapster的原因

查看dashboard状态

$ sudo kubectl get pods --all-namespaces | grep dashboard
kubernetes-dashboard   dashboard-metrics-scraper-6b4884c9d5-mvnb9   1/1     Running   0          40m
kubernetes-dashboard   kubernetes-dashboard-d7f7f565d-zhpsc         1/1     Running   0          40m

查看dashboard的日志

$ sudo  kubectl logs -f -n kubernetes-dashboard kubernetes-dashboard-d7f7f565d-zhpsc

日志遇到这样的情况

No metric client provided. Skipping metrics.
2020/08/03 09:02:22 [2020-08-03T09:02:22Z] Outcoming response to 192.168.84.241:40086 with 200 status code
2020/08/03 09:02:23 Metric client health check failed: the server is currently unable to handle the request (get services dashboard-metrics-scraper). Retrying in 30 seconds.

下载heapster的代码

直接现在Github上的最新代码。

……

阅读全文

K8S | Dashboard界面管理

安装部署Dashboard

通过一下命令来部署, recommended.yaml

$ sudo kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml

https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml这个地址却很难打开,如果能打开,直接执行即可,如果不能,可以这样做:

……

阅读全文

K8S | 安装

安装k8s前的准备工作

环境

  • ubuntu18.04
  • docker

关闭 swap

暂时关闭

$ swapoff -a

永久关闭 注释掉这一行

sudo vim /etc/fstab 
# /swapfile none swap sw 0 0

重启机器

sudo reboot

docker 的配置

安装完成之后需要进行一些配置,包括 切换docker下载源为国内镜像站 以及 修改cgroups。
cgroups是一个进程隔离工具 docker就是用它来实现容器的隔离的。docker 默认使用的是cgroupfs,而 k8s 也用到了一个进程隔离工具systemd,如果使用两个隔离组的话可能会引起异常,所以我们要把 docker 的也改成systemd。 编辑daemon.json:

……

阅读全文