Rancher 2.6.10导入集群后,建立pod无法执行shell是什么原因?

Rancher Server 设置

  • Rancher 版本:2.6.10
  • 安装选项 (Docker install/Helm Chart): Docker install
    • 如果是 Helm Chart 安装,需要提供 Local 集群的类型(RKE1, RKE2, k3s, EKS, 等)和版本:
  • 在线或离线部署:离线部署

下游集群信息

  • Kubernetes 版本: 1.23
  • Cluster Type (Local/Downstream): Downstream
    • 如果 Downstream,是什么类型的集群?(自定义/导入或为托管 等): 导入

用户信息

  • 登录用户的角色是什么? (管理员/集群所有者/集群成员/项目所有者/项目成员/自定义):管理员
    • 如果自定义,自定义权限集:

**主机操作系统:suse12sp5

**问题描述:我自己建立了一个nginx的负载,并且想进入pod内部看下情况,点击 execute shell时候没有出现命令行提示,也无法键入任何指令,卡死在页面上,这个该怎么分析呢?谢谢!

**重现步骤:创建1个负载,进入pod页面点击execute shell

结果:

**预期结果:可以在容器内执行指令

**截图:

其他上下文信息:

日志


这个问题解决了,因为我没有对node的kubelet和kube-proxy实施hostname override,但是这些主机又不是通过dns或则/etc/hosts互相解析的,要能正常用要么就重载为ip地址作为主机名 ,要么加入解析,这个问题可以关闭,谢谢!

虽然这个问题解决,但是我在集群内点击右上角的Kubectl Shell,也出现了一直connecting没有连上的问题,这个目前没有头绪。运行docker的rancher的主机和k8s api server不在同一台主机上,这个有关系吗?好像文档也没有限制docker离线安装时需要对容器所在机器有何特别设置,理论上不用关心import的集群来自哪个网络?

是因为下面这个 bug 引起的:Rancher 2.6.10 设置全局的仓库后import集群时依然从外网拉取镜像,求助该怎么处理? - #3,来自 niusmallnan

因为你在 UI 上执行 kubectl shell 的时候,会拉一个 shell 的镜像,因为上面的 bug 导致这个镜像拉不下来。

你也可以在执行 kubectl shell 的时候,查看下 所有 pod,应该会有个 dashboard 的 pod 没有运行成功

有一个临时解决办法,在下游集群编辑 cattle-cluster-agent :

kubectl edit deploy cattle-cluster-agent -n cattle-system

将其中一个环境变量 CATTLE_CLUSTER_REGISTRY 的值修改为私有镜像仓库

访问容器内部的时候为什么不报错呢?访问容器执行的shell和kubectl shell是不同的机制哦?

细节不清楚,但肯定不是一个机智。盲猜:

  1. 单个容器执行 shell,可以理解为直接 kubectl exec 去连接容器
  2. 集群的 kubectl shell 是单独启动了一个 pod,用于连接集群的 shell。

我今天删除掉import集群,重新启动一个rancher来import,这回又出现任何一个pod都无法execute shell,实在困惑这个连接为啥之前好的,现在又不行了,到底是啥原理呢。。。
我在master上执行 kubectl exec xxxxx -it – /bin/bash 就可以正常进入pod的容器,说明网络上转发应该是正常的,不理解啊。。。

重新开一次浏览器又可以了,哎,毫无头绪。。。