我有一个名为'jenkins-app-2843651954-4zqdp'的pod。我想暂时在这个pod上安装几个软件。我怎么能这样做?
我正在尝试这个 - kubectl exec -it jenkins-app-2843651954-4zqdp -- /bin/bash
然后运行apt-get install命令,但由于我访问的用户没有sudo访问权限,我无法运行命令
答案 0 :(得分:31)
kubectl describe pod ...
查找运行Pod的节点和容器ID(docker://...
)docker exec -u root ID -- /bin/bash
答案 1 :(得分:4)
有一些kubectl插件可以帮助您实现这一目标:https://github.com/jordanwilson230/kubectl-plugins
其中一个名为“ ssh”的插件将允许您通过运行(例如)kubectl ssh -u root -p nginx-0
答案 2 :(得分:3)
在@ jordanwilson230的答案的基础上,他还开发了一个名为exec-as
的bash脚本,该脚本使用Docker-in-Docker来完成此任务:https://github.com/jordanwilson230/kubectl-plugins/blob/krew/kubectl-exec-as
通过kubectl插件管理器krew→krew install exec-as
安装后,您只需
kubectl exec-as -u <username> <podname> -- /bin/bash
这仅适用于允许特权容器的Kubernetes集群。
答案 3 :(得分:2)
function onChange(e) {
var sheet = e.source.getActiveSheet();
mit = sheet.getRange(1,12).getValue();
mat = sheet.getRange(1,13).getValue();
mih = sheet.getRange(1,14).getValue();
mah = sheet.getRange(1,15).getValue();
var chart = sheet.getCharts()[0];
chart = chart.modify()
.setOption('vAxes.0.viewWindow.max', mat)
.setOption('vAxes.0.viewWindow.min', mit)
.build();
sheet.updateChart(chart);
var chart1 = sheet.getCharts()[1];
chart1 = chart1.modify()
.setOption('vAxes.0.viewWindow.max', mah)
.setOption('vAxes.0.viewWindow.min', mih)
.build();
sheet.updateChart(chart1);
}
查找容器ID docker container ls
答案 4 :(得分:0)
就我而言,我需要对容器进行root访问(或sudo),以授予chown
特定安装路径的权限。
我无法通过SSH进行机器操作,因为我将基础结构设计为使用Terraform完全自动化,而无需任何手动访问。
相反,我发现initContainers
可以完成这项工作:
initContainers:
- name: volume-prewarming
image: busybox
command: ["sh", "-c", "chown -R 1000:0 {{ .Values.persistence.mountPath }}"]
volumeMounts:
- name: {{ .Chart.Name }}
mountPath: {{ .Values.persistence.mountPath }}
的整个课程
答案 5 :(得分:0)
如果有人在使用 AKS,请按照以下步骤操作:
kubectl describe pod -n <namespace> <pod_name> | grep "Node:"
,或在 Azure 门户上查找)进入节点后,执行以下命令以进入容器:
sudo su
(您必须获得 root 访问权限才能使用 docker
命令)docker exec -it -u root ID /bin/bash
(要获取容器 ID,请使用 docker container ps
)答案 6 :(得分:-1)
你必须知道,归根结底你是在使用容器,所以问题是关于 docker 而不是 Kubernetes,
此注释对故障排除很有帮助,您必须忘记 Kubernetes 资源并将其视为容器
并且在 docker 中,如果您想以 root 身份执行到容器,请使用以下命令:
docker exec -it -u root ID /bin/bash
用于指定要登录到容器中的用户的标志 u
答案 7 :(得分:-6)
我们可以通过以下命令在kubernetes
窗格中执行。
kubectl exec --stdin --tty pod-name -n namespace-name -- /bin/bash