在Kubernetes中通过 pod 打开 pod所在宿主机上的shell

昨日一伙计突然问我 在么把自己打好的 docker镜像 上传到 kubernetes 的 节点的 local 镜像池。

现状大约如下:

1)只有master节点的登录权限;

2)不知道存在哪些worker节点也无法通过 master 借助SSH 登录到 worker节点 (这点我很困惑,难道部署 Kubernetes 集群时不应该打通 部署节点【默认为master1】到其他节点的SSH免密登录吗?还是着就是一个ALL-IN-ONE的单节点集群?)

3)docker client 版本是 24.0.6 ,通过 registory 搭建私有docker镜像仓库 无法解决https协议问题。因为 docker client 没有配置使用 不安全的docker仓库;

4)客户那儿不可能给这个 Kubernetes 集群申请 公网IP或者二级域名,使用反向代理或者自谦证书后 会出现 X509 证书不受信问题。

这个问题的解决就两种途径:

要么把各节点上的 docker client 配置为使用 不安全的docker镜像仓库;

要么找一个具有公网IP或者域名的内网主机申请公共可信证书或者把自签证书配置到各节点上。

但经过试验,可以 通过 pod的 namespace 打开一个 PID 为 1 的shell,这个shell其实就是pod所在宿主机的root用户在其 namespace 中开启的一个 TTY 。这其实是 Kubernetes 中的一个提权漏洞,不知道在未来会不会进行修复。

nsenter 是一个 进入 namespace 的 工具,通用的 Linux OS 中都会含有这个工具。

相关推荐
Hadoop_Liang3 小时前
使用Kubernetes Gateway API实现域名访问应用
容器·kubernetes·gateway
java_cj6 小时前
深入kubectl create源码:从YAML到Pod的完整链路拆解
运维·云原生·容器·kubernetes
步步为营DotNet7 小时前
基于.NET Aspire 实现云原生应用的高效监控与可观测性
云原生·.net·wpf
源图客9 小时前
【AI向量数据库】Weaviate介绍与部署
运维·docker·容器
牛奶咖啡1310 小时前
KVM虚拟化与企业应用实践——给远端主机创建虚拟机
云原生·qemu·kvm·给远端主机创建虚拟机·创建uefi模式的虚拟机·安装openeulersp2·vnc与虚拟机环境搭建
码云骑士12 小时前
28-Docker部署Django(下)-docker-compose编排与静态文件处理
docker·容器·django
java_cj13 小时前
从kubectl学Visitor模式:如何优雅处理多态数据结构的遍历
云原生·golang·k8s·访问者模式
木雷坞13 小时前
Firecrawl Docker Compose 自托管排查:镜像、Redis、队列和 Playwright
redis·docker·容器·firecrawl
就改了13 小时前
微服务异步场景链路断裂完整解决方案
微服务·云原生·架构
whyfail13 小时前
Colima:把 Docker Desktop 从 Mac 上“瘦身”的那把刀
macos·docker·容器