当前位置: 首页 > news >正文

K8S核心组件etcd详解(下)

1 k8s如何使用etcd

在k8s中所有对象的manifest都需要保存到某个地方,这样他们的manifest在api server重启和失败的时候才不会丢失。

只有api server能访问etcd,其它组件只能间接访问etcd的好处是

  • 增强乐观锁系统及验证系统的健壮性

  • 方便后续存储的替换,只需修改api server组件的相关接口。

etcd是一个响应快、分布式、一致的K-V存储,也是k8s存储集群状态和元数据的唯一地方。

图片

2 如何更方便地使用etcdctl命令

https://github.com/etcd-io/etcd/tree/main/etcdctl#readme

etcd接口有V2和V3两个版本,从Kubernetes1.6开始默认etcd版本都为v3,v2和v3接口不兼容,因此使用etcdctl操作我们要确认好api版本。

 

[root@k8s-master01 ~]# yum install etcd -y ##安装etcd服务,下载后会自带客户端工具etcdctl

[root@k8s-master01 ~]# etcdctl --version

etcdctl version: 3.3.11
API version: 2
[root@k8s-master01 ~]# export ETCDCTL_API=3 ##设置api版本为v3
[root@k8s-master01 ~]# etcdctl version ##不同接口使用的命令也有差异
etcdctl version: 3.3.11
API version: 3.3

图片

另外在k8s中使用etcdctl连接etcd中要用到ca证书进行认证,而且还需要指定etcd节点ip和端口信息,这就使得整个命令执行起来非常的冗长。

我们可以把相应的信息通过变量定义,这样在etcdctl命令在执行时可以根据相关的变量获取需要的信息。

[root@k8s-master01 ~]# cat /etc/profile.d/etcd
export ETCDCTL_API=3
export ETCDCTL_CACERT=/etc/kubernetes/pki/etcd/ca.crt
export ETCDCTL_CERT=/etc/kubernetes/pki/etcd/server.crt
export ETCDCTL_KEY=/etc/kubernetes/pki/etcd/server.key
export ETCDCTL_ENDPOINTS=https://10.0.107.77:2379,https://10.0.113.204:2379,https://10.0.87.66:2379
[root@k8s-master01 ~]# source /etc/profile.d/etcd
[root@k8s-master01 ~]# etcdctl member list
15c808b23512a31a, started, k8s-master02, https://10.0.107.77:2380, https://10.0.107.77:2379
5ca9692dbcd57e55, started, k8s-master03, https://10.0.113.204:2380, https://10.0.113.204:2379
f8b45063ae1a7dfa, started, k8s-master01, https://10.0.87.66:2380, https://10.0.87.66:2379

图片

3 查看k8s储存在etcd中的数据

资源都存储在/registry下

[root@k8s-master01 ~]# etcdctl get --prefix / --keys-only|head -10 ##--keys-only表示只看key,相对应的--print-value-only表示只看value

图片

查看/registry/pods下的内容,通过输出结果可以看出。key的命名规则为/registry/pods/namespace_name/pod_name

[root@k8s-master01 ~]# etcdctl get --prefix /registry/pods --keys-only|head -10

图片

查看kube-system命名空间下的条目

[root@k8s-master01 ~]# etcdctl get --prefix /registry/pods/kube-system --keys-only|head -10

图片

4 查看某个pod的值

在k8s中,pod等资源的value是以protobuf格式存储的,因此我们无法直接使用etcdctl命令去查询,会出现乱码现象。

图片

对此OpenShift提供了一个工具etcdhelper来解码proto格式的内容。下面链接提供了OpenShift官方的go源码文件,需要编译成可执行文件,放到/usr/local/bin目录后就可以直接使用。

您也可以直接微信公众号后台回复 etcd,下载我已编译好的etcdhelper命令文件。

https://github.com/openshift/origin/tree/master/tools/etcdhelper

etcdhelper编译

[root@k8s-master01 ~]# wget https://github.com/openshift/origin/archive/refs/heads/master.zip
[root@k8s-master01 ~]# unzip master.zip
[root@k8s-master01 ~]# cd origin-master/tools/etcdhelper/
[root@k8s-master01 etcdhelper]# ls
etcdhelper.go OWNERS README.md
[root@k8s-master01 etcdhelper]# go build etcdhelper.go
[root@k8s-master01 etcdhelper]# ls
etcdhelper etcdhelper.go OWNERS README.md
[root@k8s-master01 etcdhelper]# cp etcdhelper /usr/local/bin/

图片


etcdhelper使用方法与etcdctl类似,也需要指定k8s的ca文件路径,默认直接连接本机的2789端口进行查询。

另外要注意具体的get查询命令要放到最后,否则命令无法正常执行

[root@k8s-master01 ~]# etcdhelper -cacert /etc/kubernetes/pki/etcd/ca.crt -cert /etc/kubernetes/pki/etcd/server.crt -key /etc/kubernetes/pki/etcd/server.key get /registry/pods/kube-system/etcd-k8s-master01

通过查询结果我们可以看到,etcd中存储了pod etcd-k8s-master01的元数据信息,包括类型、api版本、名字、命名空间等信息。

图片

http://www.lryc.cn/news/128953.html

相关文章:

  • 【HarmonyOS】【DevEco Studio】ohpm安装失败该如何解决?
  • STM32 cubemx CAN
  • 贴片电阻封装尺寸及焊盘尺寸
  • 软考笔记——9.软件工程
  • uniapp小程序实现上传图片功能,并显示上传进度
  • 基于物理场的动态模式分解(piDMD)研究(Matlab代码实现)
  • Docker部署rabbitmq遇到的问题 Stats in management UI are disabled on this node
  • Python搭建http文件服务器实现手机电脑文件传输功能
  • 微信小程序实现拖拽的小球
  • uniapp的逆地理编码 和地理编码
  • 在Centos环境中搭建Nginx环境
  • 20W IP网络吸顶喇叭 POE供电吸顶喇叭
  • React 之 Suspense和lazy
  • Kafka中的 ISR 机制
  • 01 Python 网络爬虫:爬虫技术的核心原理
  • 【Rust】Rust学习 第十四章进一步认识 Cargo 和 Crates.io
  • Android性能优化----执行时间优化
  • 基于Python的微博大数据舆情分析,舆论情感分析可视化系统,可作为Python毕业设计
  • 被迫学习一波Linux命令
  • 字符串变量拼接操作的底层原理
  • Wlan安全——认证与加密方式(WPA/WPA2)
  • Leetcode-每日一题【剑指 Offer 31. 栈的压入、弹出序列】
  • 软件需求-架构师之路(五)
  • Python自带的IDLE有什么用
  • 设计模式之简单工厂模式
  • 从SaaS到RPA,没有真正“完美”的解决方案!
  • miniconda克隆arcpy
  • 一万字关于java数据结构堆的讲解,让你从入门到精通
  • Java集合底层源码剖析-ArrayList和LinkedList
  • 【数据分享】2006-2021年我国城市级别的市政公用设施建设固定资产投资相关指标(30多项指标)