k8s学习笔记——安装istio的仪表盘之prometheus安装

接上一篇,继续安装istio的dashboard。

先到istio-1.22.0/samples/addons目录下,把yaml文件中的镜像仓库地址修改了,修改地址参考我之前写的CSDN里的镜像对照表。不然直接执行kubectl apply -f samples/addons这个命令后,依据会出现下拉不下来镜像的问题。

可悲的是,按照对照表修改完后,依旧会有下拉不下来的镜像,比如prometheus,找了国内很多仓库地址能没能下拉成功,而且之前从github下载源程序本地编译也没成功!!于是决定到prometheus官网下载二进制文件,自建个镜像。下面是具体操作步骤。

到官网https://prometheus.io/download/下载二进制文件,我这里下载的是prometheus-2.51.1.linux-amd64.tar.gz版本,解压,进入目录创建Dockerfile文件

#Dockerfile文件内容如下:

FROM docker.m.daocloud.io/library/ubuntu:latest

USER root
# 将 Prometheus 二进制文件复制到镜像中
RUN mkdir -p /usr/share/prometheus/console_libraries
RUN mkdir -p /usr/share/prometheus/consoles
RUN mkdir -p /prometheus
ADD prometheus /bin/prometheus
ADD promtool /bin/promtool
ADD prometheus.yml /etc/prometheus/prometheus.yml
ADD console_libraries/ /usr/share/prometheus/console_libraries/
ADD consoles/ /usr/share/prometheus/consoles/
ADD LICENSE /LICENSE
ADD NOTICE /NOTICE

# 创建 nobody 用户组
RUN groupadd -r nobody
# 创建 nobody 用户
#RUN useradd -r -g nobody nobody

# 设置工作目录
WORKDIR /prometheus
RUN ln -s /usr/share/prometheus/console_libraries /usr/share/prometheus/consoles/ /etc/prometheus/ 
RUN chown -R nobody:nobody /etc/prometheus
RUN chown -R nobody:nobody /prometheus
# 暴露 Prometheus 默认端口
USER nobody
EXPOSE 9090
VOLUME [ "/prometheus" ]

# 运行 Prometheus
ENTRYPOINT [ "/bin/prometheus" ]
CMD [ "--config.file=/etc/prometheus/prometheus.yml", "--storage.tsdb.path=/prometheus", "--web.console.libraries=/usr/share/prometheus/console_libraries", "--web.console.templates=/usr/share/prometheus/consoles" ]

在创建Dockerfile文件时,有一点要注意就是ENIRYPOINT和CMD还有yaml文件中的args里的命令或参数设置。这里的执行顺序或规则是

  1. 如果容器镜像中指定了 `ENTRYPOINT`,那么 `args` 将会作为 `ENTRYPOINT` 的参数。

  2. 如果容器镜像中指定了 `CMD`,那么 `args` 将会作为 `CMD` 的参数。

  3. 如果 `args` 和 `CMD` 都存在,那么 `args` 将会覆盖 `CMD` 中的参数。

所以prometheus命令一定要写在ENIRYPOINT而不是CMD里不然执行 kubectl apply -f istio-1.22.0/samples/addons/prometheus.yaml时会报错,因为在yaml中args里只写了命令的参数而没有命令,在部署时,yaml里的参数直接把dockerfile的cmd里的命令替换,如果没有ENIRYPOINT里的命令,容器中就执行的没有命令的参数,所以会报错,容器启动不起来。

然后执行sudo nerdctl build -t core.harbor.shell.com:443/istio/prometheus:v2.51.1

上传至私有仓库 sudo nerdctl push core.harbor.shell.com:443/istio/prometheus:v2.51.1

测试镜像有没有问题

sudo nerdctl run --name prometheus-test -it --rm -p 8090:9090 --network=host core.harbor.shell.com:443/istio/prometheus:v2.51.1

在浏览器输入当前节点ip:8090看是否可以打开prometheus的网页

没问题就到istio-1.22.0/samples/addons目录下执行kubectl apply -f prometheus.yaml

看到如下就表明仪表盘安装成功了

kubectl get pod -n istio-system
NAME                                   READY   STATUS    RESTARTS   AGE
grafana-66ffbc9664-fjs9s               1/1     Running   0          2d4h
istio-ingressgateway-94974fc7f-cxjwz   1/1     Running   0          5d5h
istiod-54785969-6rfzh                  1/1     Running   0          5d5h
jaeger-856f88d5d7-fv2zc                1/1     Running   0          2d4h
kiali-d9dfd8fb7-rztq2                  1/1     Running   0          2d4h
loki-0                                 0/1     Pending   0          2d4h
prometheus-7fc648b979-hmnp7            2/2     Running   0          4h45m

//这里的日志收集的loki-0处于pending状态,是因为其pvc没有挂载,并不会影响仪表盘的正常使用。
相关推荐
Charles Ray28 分钟前
C++学习笔记 —— 内存分配 new
c++·笔记·学习
重生之我在20年代敲代码28 分钟前
strncpy函数的使用和模拟实现
c语言·开发语言·c++·经验分享·笔记
我要吐泡泡了哦1 小时前
GAMES104:15 游戏引擎的玩法系统基础-学习笔记
笔记·学习·游戏引擎
骑鱼过海的猫1231 小时前
【tomcat】tomcat学习笔记
笔记·学习·tomcat
贾saisai3 小时前
Xilinx系FPGA学习笔记(九)DDR3学习
笔记·学习·fpga开发
北岛寒沫4 小时前
JavaScript(JS)学习笔记 1(简单介绍 注释和输入输出语句 变量 数据类型 运算符 流程控制 数组)
javascript·笔记·学习
烟雨666_java4 小时前
JDBC笔记
笔记
GEEKVIP4 小时前
Android 恢复挑战和解决方案:如何从 Android 设备恢复删除的文件
android·笔记·安全·macos·智能手机·电脑·笔记本电脑
铁匠匠匠5 小时前
从零开始学数据结构系列之第六章《排序简介》
c语言·数据结构·经验分享·笔记·学习·开源·课程设计
Moliay6 小时前
【资料分析】刷题日记2
笔记·公考·行测·常识·资料分析