我还是Kubernetes的新手。我正在尝试在kubernetes的同一容器中运行ubuntu容器和linux kali容器。我还需要能够从浏览器访问这两个容器。我现在的方法是使用安装了VNC的ubuntu和kali docker映像。
这是我要使用的docker映像:
这里是用于创建广告连播的YAML文件:
apiVersion: v1
kind: Pod
metadata:
name: training
labels:
app: training
spec:
containers:
- name: kali
image: jgamblin/kalibrowser-lxde
ports:
- containerPort: 6080
- name: centos
image: consol/centos-xfce-vnc
ports:
- containerPort: 5901
这是问题。当我使用这两个容器运行Pod时,只有Kali容器运行出现问题,导致其继续重启。
我可以知道如何实现这一目标吗?
jgamblin / kalibrowser-lxde图片需要tty(显示)分配。
您可以在docker hub页面上看到示例命令。
然后您应该在Pod清单中允许它:
apiVersion: v1
kind: Pod
metadata:
name: training
labels:
app: training
spec:
containers:
- name: kali
image: jgamblin/kalibrowser-lxde
ports:
- containerPort: 6080
tty: true
- name: centos
image: consol/centos-xfce-vnc
ports:
- containerPort: 5901
将tty: true
放入kali容器声明中。
您可以添加一个简单的sleep命令,然后在容器内执行以保持其运行,例如:
apiVersion: v1
kind: Pod
metadata:
name: training
labels:
app: training
spec:
containers:
- name: kali
image: jgamblin/kalibrowser-lxde
ports:
- containerPort: 6080
command: ["bash", "-c"]
args: ["sleep 500"]
- name: centos
image: consol/centos-xfce-vnc
ports:
- containerPort: 5901`
这样,广告连播将处于running
状态:
kubectl get pod
NAME READY STATUS RESTARTS AGE
training 2/2 Running 0 81s
或如@ozlevka所述,您可以添加tty: true
和stdin: true
。指定stdin: true
时,要求tty: true
为真。默认情况下,这两个选项均设置为false
。