关于kubernetes:Helm-安装-Prometheus-详解-以及-问题解决

92次阅读

共计 4884 个字符,预计需要花费 13 分钟才能阅读完成。

Helm install prometheus


kubectl create ns monitor

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm search repo prometheus

# prometheus
helm show values prometheus-community/prometheus > prometheus.yaml -n monitor

uninstall

helm  uninstall prometheus  -n monitor

Helm install ingress

1.  增加 ingress 的 helm 仓库
01.# helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
02.# helm search repo ingress-nginx
#要应用 APP VERSION 大于 0.4.2 的版本
2.  下载 ingress 的 helm 包至本地
# helm pull ingress-nginx/ingress-nginx --version 3.6.0
3.  更改对应的配置
tar xvf ingress-nginx-3.6.0.tgz
cd ingress-nginx
vim values.yaml
4.  须要批改的地位
a)  Controller 和 admissionWebhook 的镜像地址,须要将公网镜像同步至公司内网镜像仓库(和文档不统一的版本,须要自行同步 gcr 镜像的,能够百度查一下应用阿里云同步 gcr 的镜像,也能够参考这个链接 https://blog.csdn.net/weixin_39961559/article/details/80739352,或者参考这个链接:https://blog.csdn.net/sinat_35543900/article/details/103290782)批改 repository 为地址 registry.cn-beijing.aliyuncs.com/dotbalo/controller,并正文掉哈希值;////Controller 和 admissionWebhook 的镜像备选的地址
image:
    registry: registry.aliyuncs.com  #批改镜像仓库地址
    image: google_containers/nginx-ingress-controller #批改镜像仓库和镜像名 ////
     
b)  镜像的 hash 值正文;c)  hostNetwork 设置为 true;d)  dnsPolicy 设置为 ClusterFirstWithHostNet;e)  nodeSelector 增加 ingress: "true" 部署至指定节点;f)  默认的类型是 Deployment,更改为 kind: DaemonSet;g)  type: 默认是 LoadBalancer(云环境应用这个),批改为 ClusterIP;h)  倡议依据生产理论环境批改 requests;i)  倡议依据生产理论环境批改 admissionWebhooks;要应用 APP VERSION 大于 0.4.2 的版本,大于这个版本,这个 enabled 不须要批改
j)  image 批改镜像地址为 registry.cn-beijing.aliyuncs.com/dotbalo/kube-webhook-certgen
    // 此项的备用地址参考 a 我的项目的备用地址 //
 
5.  部署 ingress
给须要部署 ingress 的节点上打标签
  01.// 创立命名空间叫 ingress-nginx
# kubectl create ns ingress-nginx
  02.// 获取所有 namespace;# kubectl get ns
  // 查看到 ingress-nginx 创立实现;//
  03.// 取所有工作节点
# kubectl get node
  04.// 比方咱们给部署在 master03 上 ingress 的节点上打标签
# kubectl label node k8s-master03 ingress=true
node/k8s-master03 labeled
  05.// 留神开端的 .(点)# helm install ingress-nginx -n ingress-nginx .
  06.// 镜像拉取快慢取决于镜像地址,国内的阿里云比拟快(屡次刷新看到后果 Ready 1/1,STATUS:Running 为止)[root@k8s-master01 ingress-nginx]# kubectl get pod -n ingress-nginx
 
6.  将 ingress controller 部署至 Node 节点(ingress controller 不能部署在 master 节点,须要装置视频中的步骤将 ingress controller 部署至 Node 节点,生产环境起码三个 ingress controller,并且最好是独立的节点)kubectl label node k8s-node01 ingress=true
kubectl label node k8s-master03 ingress-

ingress-nginx 配置应用


[root@vm2 ~]# cat ingress_alertmanager.yaml 
apiVersion: networking.k8s.io/v1
kind: Ingress  
metadata:
  name: alertmanager-ingress
  namespace: monitor
spec:
  ingressClassName: nginx
  rules:
  - host: "alertmanager.test.com"
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: prometheus-alertmanager
            port:
              number: 9093
[root@vm2 ~]# 
[root@vm2 ~]# cat ingress_prometheus.yaml 
apiVersion: networking.k8s.io/v1
kind: Ingress  
metadata:
  name: prometheus-ingress
  namespace: monitor
spec:
  ingressClassName: nginx
  rules:
  - host: "prometheus.test.com"
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: prometheus-server
            port:
              number: 80

失效:kubectl apply -f ingress_alertmanager.yaml

prometheus 配置

[root@vm2 ~]# kubectl -n monitor get cm
NAME                      DATA   AGE
prometheus-alertmanager   1      18h
prometheus-server         6      18h


kubectl -n monitor edit cm prometheus-server
.
.
- job_name: node-instance
      honor_timestamps: true
      scrape_interval: 1m
      scrape_timeout: 10s
      metrics_path: /metrics
      scheme: http
      static_configs:
      - targets:
        - 192.168.1x.11:9100
        - 192.168.1x.16:9100
   

验证

问题解决

pod ImagePullBackOff

kubectl  describe  pod prometheus-kube-state-metrics-xxxx  -n monitor
kubectl edit pod  prometheus-kube-state-metrics-xxxx  -n monitor

同样的,咱们通过 docker 仓库找一下雷同的, 而后通过​​kubectl edit pod​​批改一下
k8s.gcr.io/kube-state-metrics/kube-state-metrics 替换为:docker.io/dyrnq/kube-state-metrics:v2.3.0

pod pending 问题

  • 解决问题思路办法:

    1. 应用 logs 或者 describe 查看定位问题
 # kubectl describe pod prometheus-server-6d4664d595-pch8q -n monitor。。Events:
  Type     Reason            Age                   From               Message
  ----     ------            ----                  ----               -------
  Warning  FailedScheduling  117s (x619 over 15h)  default-scheduler  0/6 nodes are available: 6 pod has unbound immediate PersistentVolumeClaims.
  1. 报错“6 pod has unbound immediate PersistentVolumeClaims”:没立刻绑定 pvc
  2. 来查看 namespace 下的 pvc 理论状况

     [root@vm2 ~]# kubectl get pvc -n monitor
    NAME                                STATUS    VOLUME                    CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    prometheus-server                   Pending                                                                      15h
    storage-prometheus-alertmanager-0   Bound     pv-volume-alertmanager1   2Gi        RWO                           15h
    
    
    1. pvc 是 pending 状态未 bound pv,当初须要创立一个 pv
  1. 查看须要创立相应 pv 的信息
 应用:helm show values prometheus-community/prometheus

这里咱们曾经把配置重定向到本地的 prometheus.yaml 文件中,间接去文件中查看即可 

  1. 创立 一个 pv

    
    [root@vm2 ~]# cat prometheus_pv.yaml 
    kind: PersistentVolume
    apiVersion: v1
    metadata:
      namespace: monitor
      name: pv-volume-prometheus
      labels:
     type: local
    spec:
      capacity:
     storage: 8Gi
      accessModes:
     - ReadWriteOnce
      hostPath:
     path: "/home/pv/prometheus/prometheus-server"

记得在节点上创立 目录

  1. 验证

CrashLoopBackOff 问题

1.describe 查看 pod 问题

  1. 发现问题形容不清晰 只能去 node 上 查看容器日志(目测在 vm3 上)
# 在 vm3 上
docker ps -a  #寻找 exit 的容器

# 查看日志
docker logs xxxxID

  1. 问题看起来是 权限导致的

    msg=”Error opening query log file” file=/data/queries.active err=”open /data/queries.active: permission denied”

权限问题,监控套件基于 kube-prometheus 构建,prometheus 的镜像中文件 /prometheus/queries.active 属主为 1000 这个用户,以后 nfs 门路 prometheus-k8s-db-prometheus-k8s- 0 属主是 root 用户 (有权限危险), 从而导致写入失败。

批改 PV 的门路权限为 777,确保后续 pod 中属主为 1000 的用户也能够对文件进行操作

4. 验证

问题 Error: INSTALLATION FAILED: chart requires kubeVersion: >=1.20.0-0 which is incompatible with Kubernetes v1.19.8

装置 ingress 碰到了 k8s 版本过低的问题

helm pull ingress-nginx/ingress-nginx --version 3.6.0

正文完
 0