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没有挂载,并不会影响仪表盘的正常使用。

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值