需求背景
K8S pod操作
在k8s中,我们想要操作pod,经常会通过kubectl exec -it podName bash的方式来进行操作
VNC控制台
那如果我们需要实现一个vnc控制台,需要怎么做呢?例如下图这样的控制台
首先在docker层的话,我们是可以通过docker 提供的api来实现
那在k8s层的话,我没有看到有这样的api提供,但是有经验的开发人员肯定知道,获取一个wss连接,就可以实现这样的VNC。
尝试
通过k8s命令行的debug模式,我们可以看到,最终是一个POST请求
PS: 这里可能有人不知道怎么查看debug模式,在命令最后加上 -v=6或者-v=9就可以了,6的情况下可以理解为是精简版的debug信息,9的情况下是详细版的debug信息,往往可以通过debug模式查看一些接口调用上的必要参数。
拿到这个请求,我尝试到postman中,去掉前缀https,换成wss,在header中添加验证信息
KEY:
Authorization
VALUE:
Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6Inl0UndoVkF0cWNVLVVlVFVkWTdtOXZhZVZCdjI4eUFOOGtaa01LVC1YQlEifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4temN4NXAiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiYzc5ODI4ODAtZTFjYy00YjE5LTg1YjUtOTVmMDRlNzg5ODcwIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.CHJ8raa2-czif2dikjszTlMG4DNqXR7sSmVjx_CNCkUUGaJMbJeMKpg0grFpBoVs-PUOT5eN7Uc8GVO41VcnHPJHI2uQwlg4cHEOcvCZvyLK_Rj4XXMvbXUb3RylMUEkgbLgdm--ZSgpDpLZpzmT6F_W6E6ELlfoKqL1KIoW6m6DhLOvLkXT2W1MPM7E8UkL1KcAZ-YhOXVXdELT-n77GXI3SvZYCfrstSDMbYA7Lh0Fyyho5zRnxwjfVHoaetoymEimQlkq5UJICvPwFr8P9QrsLErTz_dSuwRTVFr35QUW-UfSit6ZHIUHus_FxGolFsB4H5twiRxcWvEo5o1wMA
点击链接后发现,连接一直处于保持中,也就是说这本身就是个wss连接,只要将这个给到前段就可以处理成VNC了。