需要帮助在kubernetes上的单个Pod中运行两个OS容器

问题描述 投票:0回答:2

我还是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容器运行出现问题,导致其继续重启。

我可以知道如何实现这一目标吗?

docker kubernetes containers vnc
2个回答
0
投票

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容器声明中。


0
投票

您可以添加一个简单的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: truestdin: true。指定stdin: true时,要求tty: true为真。默认情况下,这两个选项均设置为false

© www.soinside.com 2019 - 2024. All rights reserved.