gpt4 book ai didi

bash - 在kubernetes中创建一个可以运行GNU屏幕的Pod

转载 作者:行者123 更新时间:2023-12-02 12:08:09 24 4
gpt4 key购买 nike

我正在创建一个长期运行的跳转,以在我的kubernetes集群内部运行。它使用EBS卷作为主文件夹,保存了我的代码的重要副本,并为我提供了常规行为的快速访问权限。问题是我无法使用GNU screen创建类似的长期 session 。

这是我的Dockerfile:

FROM ubuntu:zesty

ENV KUBECTL_VERSION=v1.7.6

RUN apt-get update && \
apt-get install -y \
htop vim sysstat \
build-essential make \
ruby ruby-dev rake \
postgresql-client libpq-dev \
curl wget \
python python-pip && \
pip install awscli && \
gem install --no-rdoc --no-ri bundler
RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/$KUBECTL_VERSION/bin/linux/amd64/kubectl && \
chmod a+x kubectl && \
mv kubectl /usr/local/bin/kubectl
ADD dotfiles /root-dotfiles
ADD code /root-code
ADD docker-entrypoint.sh /docker-entrypoint.sh

这是我如何部署它:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: doit
purpse: jumpbox
name: doit
namespace: default
spec:
replicas: 1
revisionHistoryLimit: 2
selector:
matchLabels:
app: doit
purpose: jumpbox
template:
metadata:
labels:
app: doit
purpose: jumpbox
spec:
containers:
- image: 123.dkr.ecr.eu-central-1.amazonaws.com/doit:latest
imagePullPolicy: Always
name: doit
command: ["sleep", "infinity"]
workingDir: /root
env:
- name: TERM
value: xterm
volumeMounts:
- mountPath: /root
subPath: root-homedir
name: doit-home
volumes:
- name: doit-home
persistentVolumeClaim:
claimName: doit-home
restartPolicy: Always
securityContext: {}
terminationGracePeriodSeconds: 1

但是当我在容器中 kubectl exec并尝试创建屏幕时:
root@doit-2561276907-kl2h6:~# screen -S asdf
Cannot open your terminal '' - please check.

我可以通过以下方法解决此问题:
root@doit-2561276907-kl2h6:~# script /dev/null
Script started, file is /dev/null
# bash
root@doit-2561276907-kl2h6:~# screen -S asdf
# now inside of the screen

另外,这是我连接到Pod的方法:
function doit {
doit_pods=$(kubectl get pods -l 'app==doit' -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')
kubectl exec -it $doit_pods bash
}

因此,在后台我正在做 kubectl exec -it

但我不希望该Jumpbox实例的所有用户都必须运行脚本并切换回bash。如何创建已经为 screen正确配置的Pod?

最佳答案

我用centos图像尝试了它的工作原理,需要检查ubuntu图像。

kubectl run -it screentest --image=centos -- bash
kubectl exec -it screentest-cbd49447f-286wq -- bash
yum -y install screen
screen

在ubuntu中也对此进行了测试,它对我有用。
kubectl run -it ubuntuest --image=ubuntu -- bash
apt-get update -qq && apt-get install screen -y
screen

也尝试使用 kubectl exec -it ubuntuest-78df75fbb-9sk6f -- bash起作用。

关于bash - 在kubernetes中创建一个可以运行GNU屏幕的Pod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46576551/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com