Etcd ,Cadvisor 基础安装和应用

本文详细介绍了如何在Linux环境下安装和配置Etcd服务,包括下载二进制包、设置参数、启动服务、配置防火墙等步骤。同时,演示了Etcd的常见操作,如设置、获取、更新和删除键值,以及创建和删除目录。此外,文章还介绍了Cadvisor容器监控平台的安装和使用,包括获取容器和主机的性能数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装Etcd,二进制程序包下载安装

mkdir - p /home/install && cd /home/install
wget https://github.com/etcd-io/etcd/releases/download/v0.4.6/etcd-v0.4.6-linux-amd64.tar.gz
[root@localhost install]# tar -zxvf etcd-v0.4.6-linux-amd64.tar.gz 
etcd-v0.4.6-linux-amd64/
etcd-v0.4.6-linux-amd64/etcd
etcd-v0.4.6-linux-amd64/etcdctl
etcd-v0.4.6-linux-amd64/README-etcd.md
etcd-v0.4.6-linux-amd64/README-etcdctl.md
[root@localhost install]# cd etcd-v0.4.6-linux-amd64
[root@localhost etcd-v0.4.6-linux-amd64]# ls
etcd  etcdctl  README-etcdctl.md  README-etcd.md
[root@localhost etcd-v0.4.6-linux-amd64]# cp etcd* /bin/
[root@localhost etcd-v0.4.6-linux-amd64]# /bin/etcd -version
etcd version 0.4.6    #显示此信息说明部署成功
[root@localhost etcd-v0.4.6-linux-amd64]#
[root@localhost etcd-v0.4.6-linux-amd64]# mkdir -p /data/etcd   #etcd数据目录
[root@localhost etcd-v0.4.6-linux-amd64]# /bin/etcd -name etcdserver -peer-addr 192.168.118.129:7001 -addr 192.168.118.129:4001 -data-dir /data/etcd/ -peer-bind-addr 0.0.0.0:7001 -bind-addr 0.0.0.0:4001 &
[1] 9641
[root@localhost etcd-v0.4.6-linux-amd64]# [etcd] Aug 30 20:24:24.819 INFO      | etcdserver is starting a new cluster
[etcd] Aug 30 20:24:24.826 INFO      | etcd server [name etcdserver, listen on 0.0.0.0:4001, advertised url http://192.168.118.129:4001]
[etcd] Aug 30 20:24:24.827 INFO      | peer server [name etcdserver, listen on 0.0.0.0:7001, advertised url http://192.168.118.129:7001]
[etcd] Aug 30 20:24:24.828 INFO      | etcdserver starting in peer mode
[etcd] Aug 30 20:24:24.828 INFO      | etcdserver: state changed from 'initialized' to 'follower'.
[etcd] Aug 30 20:24:24.828 INFO      | etcdserver: state changed from 'follower' to 'leader'.
[etcd] Aug 30 20:24:24.828 INFO      | etcdserver: leader changed from '' to 'etcdserver'.

由于Etcd具备多机容灾支持,参数“-peer-addr”指定与其他节点通信的地址;参数“-addr” 指定服务监听地址;参数“-data-dir”为指定数据存储目录;IP地址192.168.118.129为安装Etcd的主机。

查看端口
[root@localhost etcd-v0.4.6-linux-amd64]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1036/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1168/master         
tcp6       0      0 :::4001                 :::*                    LISTEN      9641/etcd           
tcp6       0      0 :::22                   :::*                    LISTEN      1036/sshd           
tcp6       0      0 :::7001                 :::*                    LISTEN      9641/etcd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1168/master

配置Etcd服务防火墙,其中4001为服务端口,7001为集群数据交换端口,策略如下:

[root@localhost etcd-v0.4.6-linux-amd64]# iptables -I INPUT -s 192.168.118.0/24 -p tcp --dport 4001 -j ACCEPT
[root@localhost etcd-v0.4.6-linux-amd64]# iptables -I INPUT -s 192.168.118.0/24 -p tcp --dport 7001 -j ACCEPT

使用方法:
Etcd提供了2种操作方法,一种是基于HTTP的RESTful API,是一个用HTTP并遵循REST原则的web服务,通过不同URL来封装业务逻辑,由于基于HTTP协议,因此我们可以使用curl命令来操作,比较适合程序的调用。另一个是通过命令etcdctl方法.

(1)Set key(设置键值)

给“/message” key设置“Hello world”值,

[root@localhost etcd]# curl http://192.168.118.129:4001/v2/keys/messsage -XPUT -d value-"hello world"
{"action":"set","node":{"key":"/messsage","value":"","modifiedIndex":3,"createdIndex":3}}
[root@localhost etcd]#

命令行操作如下:

[root@localhost etcd]# etcdctl set /message "Hello world"
Hello world
(2)Get key(获取键值)

获取“/message” key值,

[root@localhost etcd]# curl http://192.168.118.129:4001/v2/keys/message
{"action":"get","node":{"key":"/message","value":"Hello world","modifiedIndex":4,"createdIndex":4}}
[root@localhost etcd]# etcdctl get /message
Hello world
(3)Changing value(更新键)

更新“/message” key的值为“Hello world”,操作命令如下:

[root@localhost etcd]# curl http://192.168.118.129:4001/v2/keys/message -XPUT -d value="Hello etcd"
{"action":"set","node":{"key":"/message","value":"Hello etcd","modifiedIndex":5,"createdIndex":5},"prevNode":{"key":"/message","value":"Hello world","modifiedIndex":4,"createdIndex":4}}
[root@localhost etcd]# etcdctl update /message "Hello etcd"
Hello etcd
(4)Deleting a key(删除键)

删除“/message ” key ,

[root@localhost etcd]# curl http://192.168.118.129:4001/v2/keys/message -XDELETE
{"action":"delete","node":{"key":"/message","modifiedIndex":7,"createdIndex":5},"prevNode":{"key":"/message","value":"Hello etcd","modifiedIndex":6,"createdIndex":5}}
[root@localhost etcd]#
[root@localhost etcd]# etcdctl rm /message
(5)Creating Directories(创建目录)

创建一个“/dir”目录,

[root@localhost etcd]# curl http://192.168.118.129:4001/v2/keys/dir -XPUT -d dir=true
{"action":"set","node":{"key":"/dir","dir":true,"modifiedIndex":11,"createdIndex":11}}
[root@localhost etcd]# etcdctl mkdir /dir
(6)Deleting a Directory(删除目录)

删除“/dir”目录

[root@localhost etcd]# curl 'http://192.168.118.129:4001/v2/keys/dir?dir=true' -XDELETE
{"action":"delete","node":{"key":"/dir","dir":true,"modifiedIndex":12,"createdIndex":11},"prevNode":{"key":"/dir","dir":true,"modifiedIndex":11,"createdIndex":11}}
[root@localhost etcd]# etcdctl rmdir /dir
(7)watch value change(捕捉key的value更新事件)

用于捕捉key的value的更新事件,从而触发某个动作。实现捕捉“/message” key的变化,命令执行后会处于等待状态,直到key的value发生改变才退到系统提示符,

[root@localhost etcd]# curl http://192.168.118.129:4001/v2/keys/message?wait=true
[root@localhost etcd]# etcdctl watch /message

Cadvisor实践

Cadvisor容器监控平台,是用来分析运行中的Docker容器的资源占用及性能特性的工具。Cadvisor是一个运行中的守护进程,用来收集、聚合、处理和导出运行容器相关的信息,每个容器保持独立的参数、历史资源使用情况和完整的资源使用数据。

访问http://ip:8081,访问成功,说明安装成功。

docker run --volume=/var/run:/var:rw --volume=/sys/fs/cgroup/:/sys/fs/cgroup:ro --volume=/var/lib/docker/:/var/lib/docker:ro --publish=8081:8080 -detach=true google/cadvisor

参数参考:

--volume , -v       Bind mount a volume

--detach , -d       Run container in background and print container ID

Publish or expose port (-p, --expose)
$ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
This binds port 8080 of the container to TCP port 80 on 127.0.0.1 of the host machine. You can also specify udp and sctp ports. The Docker User Guide explains in detail how to manipulate ports in Docker.

Cadvisor提供了Remote REST API,,可以轻松与采集程序进行对接。
通过接口我们可以获取前端UI看到的所有原始数据,调用地址格式如下(限V1.0版本):

http://<hostname>:<port>/api/<version>/<request>

(1)获取容器性能数据。API访问格式如下:

http://ip:8081/api/v1.0/containers  #获取所有容器信息
http://ip:8081/api/v1.0/containers/docker/container id #获取指定的容器ID信息

(2)获取主宿机性能数据。通过CadvisorAPI,我们也可以获取主宿机的性能数据,API访问格式如下:

http://ip:8080/api/v1.0/machine
### cAdvisor 使用指南 cAdvisor 是一种用于收集、聚合处理容器资源使用情况性能数据的开源工具。以下是关于其安装、配置以及使用的详细介绍。 #### 安装方法 cAdvisor安装过程相对简单,可以通过 Docker 容器的方式快速启动并运行。只需下载官方镜像并启动容器即可完成基本设置[^1]。具体命令如下: ```bash docker run \ --volume=/:/rootfs:ro \ --volume=/var/run:/var/run:rw \ --volume=/sys:/sys:ro \ --volume=/var/lib/docker/:/var/lib/docker:ro \ --publish=8080:8080 \ --detach=true \ --name=cadvisor \ google/cadvisor:latest ``` 上述命令会挂载必要的系统目录到容器内部,并开放默认端口 `8080` 提供 Web UI 访问功能。用户可以直接通过浏览器访问 `<主机IP>:8080` 查看实时监控数据。 --- #### 配置说明 虽然 cAdvisor 默认提供了开箱即用的功能,但在实际生产环境中可能需要进一步调整参数来满足特定需求。例如,可以指定日志路径或者启用额外的实验性特性。这些自定义选项通常作为环境变量传递给容器实例。以下是一些常见的可选参数: | 参数名称 | 描述 | |---------------------|----------------------------------------------------------------------| | `-logtostderr=true` | 将日志输出重定向至标准错误流 | | `-storage_driver=` | 设置存储驱动程序类型(如 InfluxDB 或 Prometheus),以便持久化保存指标 | 更多高级配置可通过修改启动脚本实现,详情参见官方文档。 --- #### 数据采集与集成 值得注意的是,在现代云原生架构下,单独依赖于 cAdvisor 并不足以覆盖全面的应用层监控需求。因此,许多企业倾向于将其与其他工具相结合形成更强大的解决方案体系。比如 Prometheus 可以直接抓取由 Kubernetes 节点上的 cAdvisor 所暴露出来的 API 接口中的时间序列数据[^2]。这种组合方式不仅增强了灵活性还提升了整体效率。 另外如果希望构建更加完善的生态系统,则可以选择类似 Dockprom 这样的预制套件方案[^5]。该预设包含了从告警通知到可视化图表绘制等一系列完整链路的支持能力。 --- ### 总结 综上所述,无论是对于个人开发者还是大型团队而言,掌握好 cAdvisor基础操作都是非常有帮助的一件事。它能够为我们提供有关硬件利用率方面的深刻见解从而助力优化资源配置决策制定工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值