首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何通过抓包来查看Kubernetes API流量

如何通过抓包来查看Kubernetes API流量

原创
作者头像
Robert Lu
修改于 2021-11-25 02:47:42
修改于 2021-11-25 02:47:42
3.8K0
举报
文章被收录于专栏:JVM以及其他JVM以及其他

当我们通过kubectl来查看、修改Kubernetes资源时,有没有想过后面的接口到底是怎样的?有没有办法探查这些交互数据呢?

Kuberenetes客户端和服务端交互的接口,是基于http协议的。所以只需要能够捕捉并解析https流量,我们就能看到kubernetes的API流量。

但是由于kubenetes使用了客户端私钥来实现对客户端的认证,所以抓包配置要复杂一点。具体是如下的结构:

capture-architecture.png
capture-architecture.png

如果想了解更多Kubernetes证书的知识,可以看下这篇Kubernetes证书解析的文章

从kubeconfig中提取出客户端证书和私钥

kubeconfig中包含了客户端的证书和私钥,我们首先要把它们提取出来:

代码语言:txt
AI代码解释
复制
# 提取出客户端证书
grep client-certificate-data ~/.kube/config | \
  awk '{ print $2 }' | \
  base64 --decode > client-cert.pem
# 提取出客户端私钥
grep client-key-data ~/.kube/config | \
  awk '{ print $2 }' | \
  base64 --decode > client-key.pem
# 提取出服务端CA证书
grep certificate-authority-data ~/.kube/config | \
  awk '{ print $2 }' | \
  base64 --decode > cluster-ca-cert.pem

参考自Reddit

配置Charles代理软件

从第一张图可以看出,代理软件的作用有两个:一是接收https流量并转发,二是转发到kubernetes apiserver的时候,使用指定的客户端私钥。

首先配置Charles,让他拦截所有的https流量:

ssl-proxy-settings.png
ssl-proxy-settings.png

然后配置客户端私钥,即对于发送到apiserver的请求,统一使用指定的客户端私钥进行认证:

client-cert-config.png
client-cert-config.png

配置kubectl

需要抓包kubectl的流量,需要两个条件:1. kubectl使用Charles作为代理,2. kubectl需要信任Charles的证书。

代码语言:txt
AI代码解释
复制
# Charles的代理端口是8888,设置https_proxy环境变量,让kubectl使用Charles代理
$ export https_proxy=http://127.0.0.1:8888/
# insecure-skip-tls-verify表示不校验服务端证书
$ kubectl --insecure-skip-tls-verify get pod
NAME                    READY   STATUS    RESTARTS   AGE
sc-b-7f5dfb694b-xtfrz   2/2     Running   0          2d20h

我们就可以看到get pod的网络请求了:

kubectl-get-pod.png
kubectl-get-pod.png

可以看到,get pod的endpoint是GET /api/v1/namespaces/<namespace>/pods

让我们再尝试下创建pod的请求:

代码语言:txt
AI代码解释
复制
$ cat <<EOF >pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx-robberphex
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2
EOF
$ kubectl --insecure-skip-tls-verify apply -f pod.yaml
pod/nginx-robberphex created

也同样可以抓到包:

kubectl-apply-pod.png
kubectl-apply-pod.png

创建pod的endpoint是POST /api/v1/namespaces/<namespace>/pods

配置kubenetes client

我们先从写一个用kubernetes go client来获取pod的例子(注意,代码中已经信任所有的证书,所以可以抓到包):

代码语言:txt
AI代码解释
复制
package main

/*
require (
	k8s.io/api v0.18.19
	k8s.io/apimachinery v0.18.19
	k8s.io/client-go v0.18.19
)
*/
import (
	"context"
	"flag"
	"fmt"
	"path/filepath"

	apiv1 "k8s.io/api/core/v1"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/client-go/kubernetes"
	"k8s.io/client-go/tools/clientcmd"
	"k8s.io/client-go/util/homedir"
)

func main() {
	ctx := context.Background()
	var kubeconfig *string
	if home := homedir.HomeDir(); home != "" {
		kubeconfig = flag.String("kubeconfig", filepath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file")
	} else {
		kubeconfig = flag.String("kubeconfig", "", "absolute path to the kubeconfig file")
	}
	flag.Parse()

	config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)
	if err != nil {
		panic(err)
	}
	// 让clientset信任所有证书
	config.TLSClientConfig.CAData = nil
	config.TLSClientConfig.Insecure = true
	clientset, err := kubernetes.NewForConfig(config)
	if err != nil {
		panic(err)
	}
	podClient := clientset.CoreV1().Pods(apiv1.NamespaceDefault)
	podList, err := podClient.List(ctx, metav1.ListOptions{})
	if err != nil {
		panic(err)
	}

	for _, pod := range podList.Items {
		fmt.Printf("podName: %s\n", pod.Name)
	}

	fmt.Println("done!")
}

然后编译执行:

代码语言:txt
AI代码解释
复制
$ go build -o kube-client
$ export https_proxy=http://127.0.0.1:8888/
$ ./kube-client
podName: nginx-robberphex
podName: sc-b-7f5dfb694b-xtfrz
done!

这时也可以抓到同样的结果:

go-client-get-pod.png
go-client-get-pod.png

基于此,我们就可以分析一个Kubernetes到底干了什么,也是我们分析Kubernetes实现的入口。


本文首发于 https://robberphex.com/lambda-causes-arthas-cant-redefine

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
川普的逆袭,是给大数据的一记耳光!
昨日,美国总统选举落下帷幕,共和党总统候选人唐纳德·特朗普在这场权利的游戏中获得胜利,成功当选美国第58届总统。这次美国总统竞选被德国《商报》称作“第一次数字化竞选”,而特朗普的这次逆袭,让之前支持希
钱塘数据
2018/03/02
1.2K0
川普的逆袭,是给大数据的一记耳光!
洞察|美国大选倒计时:R 语言和蒙特卡洛算法预测希拉里赢面高达89%
距总统大选不到一周,来预测一下竞选结果还是很有挺有趣的。虽然关于选举,有的是博客和网站的预测,但确切告诉你他们究竟用了什么模型,或者告诉你怎么做这个预测的却寥寥无几。但是,作者接下来就会这么做! 在本
灯塔大数据
2018/04/08
9800
洞察|美国大选倒计时:R 语言和蒙特卡洛算法预测希拉里赢面高达89%
干货 | 数据科学岗位必备面经:17个热点问题如何回答?(一)
AI科技评论按:随着数据科学成为炙手可热的领域,相关的应聘岗位也多了起来。面试者们在准备应聘的过程中,往往会有一个疑问:面试官们会问些什么?我又应该如何回答? Gregory Piatetsky在KDnuggets上分享了17个紧跟热点的数据科学相关职位可能会接触的问题及答案。从AI未能正确预测2016年美国总统选举结果和第51届超级碗大逆转的经验教训,如何区分偏差和方差,预测变量数目越少越好,甚至到如何增强模型抵抗异常的鲁棒性都一应俱全,本文为第一部分,AI科技评论做了相关编译。 去年,21个必知的数据科
AI科技评论
2018/03/12
1.1K0
干货 | 数据科学岗位必备面经:17个热点问题如何回答?(一)
DataMesh CEO李劼:美国总统大选,大数据究竟是赢了还是输了?
数据猿导读 很多人之前都认为希拉里已经赢定了,在各种预言帝使用各种模型所做的大数据分析预测中,川普都没有任何胜算。结果出现黑天鹅事件,希拉里不仅败北,而且是数学上的惨败,选举人票上输的一塌糊涂,毫无翻
数据猿
2018/04/23
8210
DataMesh CEO李劼:美国总统大选,大数据究竟是赢了还是输了?
美国大选倒计时:R 语言和蒙特卡洛算法预测希拉里赢面高达89%
【新智元导读】美国总统大选近在眼前,上周新智元刊登相关文章《从未失手的 AI 预测:川普将赢得选举,入主白宫》引起很多争论。这次我们选择了一篇用 R 语言和蒙特卡洛算法等数据预测分析方法,对美国大选做预测的文章,同时附上 Gighub 代码。 总统大选不到一周,自己来预测一下竞选结果还是很有挺有趣的。虽然关于选举,有的是博客和网站的预测,但确切告诉你他们究竟用了什么模型,或者告诉你怎么做这个预测的却寥寥无几。但是,我接下来就会这么做! 在本文中,我将以州为单位拆分竞选数据,向你展示如何使用投票结果模拟和预测
新智元
2018/03/26
1.5K0
美国大选倒计时:R 语言和蒙特卡洛算法预测希拉里赢面高达89%
让数据分析师告诉你,希拉里距离白宫有多远?
时隔8年,希拉里·克林顿再次走上了美国总统的大选之路,这一次,她的胜算有多大? 3 月12日,希拉里在推特上正式宣布参加2016年美国总统大选。在明年这场“权力的游戏”中,她正式宣布参选虽没在时间上拔
CDA数据分析师
2018/02/11
6500
让数据分析师告诉你,希拉里距离白宫有多远?
人工智能预测美国大选这件事,认真你就输了
唐纳德·约翰·特朗普(Donald John Trump)赢了,毕竟DT in the house(不明白的请自行百度)。 与往年不同的是,今年的美国大选堪称史上最激烈、最变幻莫测的一次,当中发生的一
镁客网
2018/05/28
8224
去你的“黑天鹅”,2017年大数据表示不服
2016年,美国总统选举,英国脱欧投票,巴西总统弹劾……这些不可思议的“黑天鹅”事件,让大数据的模型预测变得更加艰难。2017年大数据在预测能力上会做得更好吗?
科技云报道
2022/04/12
2280
去你的“黑天鹅”,2017年大数据表示不服
2016 年美国大选的投票结果中,有哪些数据值得分析?
种族 这届美国大选中白人选民的占比是70%,相比于2012年又低了2个百分点。 有人说川普的胜利应该归功于白人,但是从统计看,川普在白人选民中获得的投票比重比希拉里高21个百分点(58%-37%)。而
智能算法
2018/04/02
1.2K0
2016 年美国大选的投票结果中,有哪些数据值得分析?
马克龙当选法国总统,群集智能 Swarm AI 预测再获全胜
【新智元导读】马克龙在第二轮投票中击败勒庞,成为第 25 任法国总统。在预测的竞技场上,基于对社交网络和传统媒体讨论、民意调查、经济和人口统计等数据分析的 AI 系统预测错误,但基于群集智能的 AI 系统——Unanimous A.I.的 Swarm AI 的预测再次出手不凡,正确地预测了马克龙当选法国总统。 2017年法国总统选举于2017年4月23日进行第一轮投票,中间派政党前进!(En Marche !)创办人埃马纽埃尔·马克龙(Emmanuel Macro)及极右翼政党国民阵线领导人玛丽娜·勒庞(M
新智元
2018/03/28
6890
马克龙当选法国总统,群集智能 Swarm AI 预测再获全胜
【重磅】2017奥斯卡大奖揭晓,群集智能AI成功预测12项(技术解析)
【新智元导读】 2017年2月27日,第89界奥斯卡诸项大奖名单新鲜出炉,《月光男孩》战胜呼声甚高的《爱乐之城》拿下最佳影片。大奖公布之前,著名的群体智能预测网站的Swarm AI再出手预测,今年它虽然保持着75%的胜率,但是却预测错了两项大奖。这是怎么回事?群体智能和群体智能预测原理是什么?本文带来详细解读。 2017年2月27日,第89界奥斯卡诸项大奖名单新鲜出炉: 最佳影片:Moonlight(月光男孩) 最佳导演:amien Chazelle , La La Land( 爱乐之城) 最佳男主角:Ca
新智元
2018/03/27
8580
【重磅】2017奥斯卡大奖揭晓,群集智能AI成功预测12项(技术解析)
对答案:AI 预测法国大选,不太对,可也没全错
【新智元导读】两个月前,总部位于新加坡的投资公司 Leonie Hill Capital 的 AI 系统经过对社交和传统媒体讨论、民意调查、经济和人口统计等数据后的分析,对“史上最难预测”的法国大选进行了预测,认为勒庞将出任法国总统,这和主流媒体预测及民调显示结果有所不同。北京时间今天凌晨,法国 2017 年总统大选首轮投票结束,马克龙获得最高票,勒庞紧随其后进入第二轮选举。 法国 2017 年总统大选首轮投票已经落下帷幕,尽管最终结果还有待确认,但能够进入第二轮选举的两名候选人已经没有悬念。 考题有点难,
新智元
2018/03/27
6550
对答案:AI 预测法国大选,不太对,可也没全错
【AI版纸牌屋】特朗普团队操纵大数据+AI左右竞选引舆论哗然
【新智元导读】一家名叫Cambridge Analytica的数据分析公司成了这两天新闻的焦点,他们使用大数据和AI分析Facebook用户资料,操纵舆论帮助特朗普竞选。研究早已发现,机器能比人类更加精准地掌握人类的性格。AI和大数据正在成为强大的政治武器,假新闻、机器人水军、AI换脸既成为一种技术现象,也是一种社会现象,是我们每个人都需要面对和思考的问题。 消息已经出来了:俄罗斯大选,弗拉基米尔·普京轻松赢得了第四个任期,对70%的得票进行抽查的结果显示,普京得票率为75.91%。 民意调查显示,
新智元
2018/03/22
1.3K0
【AI版纸牌屋】特朗普团队操纵大数据+AI左右竞选引舆论哗然
大数据时代来临后遭遇危机 谁还需要民意测验?
CA崛起的背后是大数据时代政客们获取民意乃至影响民意的方式在经历深刻的转换。《卫报》1月刊发长文“统计如何失去了力量———以及为何我们应该害怕接下来将要发生的事”,详细拷问了为何在17世纪启蒙理想的指
灯塔大数据
2018/04/08
8090
大数据时代来临后遭遇危机 谁还需要民意测验?
谷歌操纵20年大选!算法帮拜登击败特朗普,950页源文件泄漏
---- 新智元报道   编辑:武穆 桃子 【新智元导读】美国中期选举临近,有关谷歌操纵大选的新闻,又被挖了出来。从种种披露的资料来看,操纵大选这事,谷歌无论如何也赖不掉了。 众所周知,2020年的大选,是拜登胜出。 如果细看选票的统计的话,会发现,从全美普选票来看,在计票率为97%时,拜登以50.8%的得票率超过特朗普的47.4%,拜登的优势并不是特别大。 所以在大选基本尘埃落定之际,特朗普方面一直不甘心,想要重新计票。 不过大选已经尘埃落定,特朗普方面再不甘心也只是徒劳。 然而就在美国即将举行中
新智元
2022/09/27
3700
谷歌操纵20年大选!算法帮拜登击败特朗普,950页源文件泄漏
推特 X 地理签到数据分析预测美国大选(三):宾夕法尼亚州,我好像发现了 X 平台的支持倾向基调
在推特地理签到推文分析预测美国 2024 总统大选的前两期,分别讨论了经典蓝州加利福利亚和经典红州德克萨斯,
月小水长
2025/05/13
1010
推特 X 地理签到数据分析预测美国大选(三):宾夕法尼亚州,我好像发现了 X 平台的支持倾向基调
大数据分析:最难的不是分析,而是大数据
从先进的BI工具到机器学习,人工智能,现代企业拥有着各式各样整理分析数据的方法和途径。数据科学家和企业领导人都关注着这些新技术的巨大潜力,然而,当我们将焦点放在分析工具身上时,我们也可能忽略了数据本身
灯塔大数据
2018/04/04
1K0
大数据分析:最难的不是分析,而是大数据
从未失手的AI 预测:川普将赢得选举,入主白宫 (附深度学习生成川普语录教程)
【新智元导读】 从2004年开始连续三次准确预测美国总统大选结果的AI系统MogAI10月28日发布最新预测,看好川普赢得与希拉里的2016总统之争。不管最终结果如何,川普作为美国总统候选人都已经获得了“深入人心”的形象,国外甚至有人整理了他的一些有趣的言论,推出“川普语录”。本文后半部分秉承新智元的干货原则,手把手教你使用递归神经网络在TensorFlow上让生成川普讲话。 “唐纳德·川普会赢”,准确预测了前三场选举的AI系统如此说道。 “如果川普输了,将是过去12年里第一次违反数据趋势,”AI的开发人员
新智元
2018/03/26
1.1K0
从未失手的AI 预测:川普将赢得选举,入主白宫 (附深度学习生成川普语录教程)
不可能的公平?关于投票的一些知识分享
假设场景:大雄的班级一共50人,现在要在大雄和胖虎之间,进行班长选举,老师发起了投票。
sosioshen
2022/08/08
2.1K0
不可能的公平?关于投票的一些知识分享
算法集锦(16)|语义分析| 基于数据的特朗普竞选策略分析
现如今,中美贸易战愈演愈烈。“凡事预则立,不预则废”,如何预判与预测美国的策略与战略对于中国能够打赢这场“遏制战”非常的关键。
用户7623498
2020/08/04
5400
算法集锦(16)|语义分析| 基于数据的特朗普竞选策略分析
推荐阅读
川普的逆袭,是给大数据的一记耳光!
1.2K0
洞察|美国大选倒计时:R 语言和蒙特卡洛算法预测希拉里赢面高达89%
9800
干货 | 数据科学岗位必备面经:17个热点问题如何回答?(一)
1.1K0
DataMesh CEO李劼:美国总统大选,大数据究竟是赢了还是输了?
8210
美国大选倒计时:R 语言和蒙特卡洛算法预测希拉里赢面高达89%
1.5K0
让数据分析师告诉你,希拉里距离白宫有多远?
6500
人工智能预测美国大选这件事,认真你就输了
8224
去你的“黑天鹅”,2017年大数据表示不服
2280
2016 年美国大选的投票结果中,有哪些数据值得分析?
1.2K0
马克龙当选法国总统,群集智能 Swarm AI 预测再获全胜
6890
【重磅】2017奥斯卡大奖揭晓,群集智能AI成功预测12项(技术解析)
8580
对答案:AI 预测法国大选,不太对,可也没全错
6550
【AI版纸牌屋】特朗普团队操纵大数据+AI左右竞选引舆论哗然
1.3K0
大数据时代来临后遭遇危机 谁还需要民意测验?
8090
谷歌操纵20年大选!算法帮拜登击败特朗普,950页源文件泄漏
3700
推特 X 地理签到数据分析预测美国大选(三):宾夕法尼亚州,我好像发现了 X 平台的支持倾向基调
1010
大数据分析:最难的不是分析,而是大数据
1K0
从未失手的AI 预测:川普将赢得选举,入主白宫 (附深度学习生成川普语录教程)
1.1K0
不可能的公平?关于投票的一些知识分享
2.1K0
算法集锦(16)|语义分析| 基于数据的特朗普竞选策略分析
5400
相关推荐
川普的逆袭,是给大数据的一记耳光!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档