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

Need help running two OS containers in a single pod on kubernetes

我对 Kubernetes 还是个新手。我正在尝试在 kubernetes 的同一个 pod 中 运行 一个 ubuntu 容器和一个 linux kali 容器。我还需要能够从浏览器访问这两个容器。我现在的方法是使用安装了 VNC 的 ubuntu 和 kali docker 图像。

这是我尝试使用的 docker 图片:

这是用于创建 pod 的 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 容器有问题 运行ning,导致它不断重启。

我可以知道如何实现吗?

jgamblin/kalibrowser-lxde 图像需要 tty(显示)分配。

您可以在 docker 中心页面上查看示例命令。

那么您应该在您的 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 命令在 then 容器中执行以保留它 运行,例如:

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`

这样 pod 将处于 running 状态:

kubectl get pod
NAME                            READY   STATUS    RESTARTS   AGE
training                        2/2     Running   0          81s