如何在 Kubernetes pod 中安装包

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

探索 Kubernetes 中的部署,我试图了解在 pod 上

 apt-get update && apt-get install some_package -y
的适当方法是什么。

到目前为止我尝试过没有运气:

    spec:
      containers:
        - name: gitlab-runner
          image: gitlab/gitlab-runner:ubuntu-bleeding
          command: ["/bin/bash", "/scripts/entrypoint", "apt-get", "update"]
          args: ["apt-get", "install", "packer", "-y"]

    spec:
      containers:
        - name: gitlab-runner
          image: gitlab/gitlab-runner:ubuntu-bleeding
          command: ["/bin/bash", "/scripts/entrypoint", "apt-get", "update"]
          command: ["apt-get", "install", "packer", "-y"]

    spec:
      containers:
        - name: gitlab-runner
          image: gitlab/gitlab-runner:ubuntu-bleeding
          command: ["/bin/bash", "/scripts/entrypoint", "apt-get", "install", "packer", "-y"]]

问题是:

  1. 更新 pod(基于 Ubuntu 的容器)并安装软件包的正确方法是什么?

  2. 可以通过部署来完成还是应该通过配置映射来完成?

  3. 如果您需要安装和配置多个软件包,正确的方法是什么?

我知道我可以使用 Helm,但在讨论之前,我宁愿在不使用 Helm 的情况下正确理解它。

kubernetes
2个回答
2
投票

对不起,大家,通过进一步推动得到了我的答案:

这些命令 ->

apt-get update && apt-get install packer -y
必须添加到 config-map.yaml 中。像这样的东西:

data:

  entrypoint: |
    #!/bin/bash

    set -xe
    apt-get update && apt-get install packer -y
    .
    .
    .

然后创建配置映射

然后您只需创建指向配置映射的部署。

谢谢。


1
投票

虽然您可以使用容器入口点安装软件包,但每次 pod 启动/重新启动时您都会遇到安装问题。这对于故障排除来说很好,如果您要进行故障排除,另一种方法是 exec 到 pod 中并运行相同的命令,然后您就有了一个 shell -

kubectl exec -it container-name -- sh
apt-get update
apt-get install packer -y

一般来说,如果这是一个长期解决方案(而且性能很重要),我建议使用基于您引用的镜像的 Dockerfile 来构建、发布和引用您自己的镜像 -

gitlab/gitlab-runner:ubuntu-bleeding

例如 -

Dockerfile

FROM gitlab/gitlab-runner:ubuntu-bleeding
RUN apt-get update && apt-get install -y packer
#...
ENTRYPOINTY ['/somescript.sh']
docker build --tag my-repo/my-gitlab-runner:ubuntu-bleeding-edge .
docker push my-repo/my-gitlab-runner:ubuntu-bleeding-edge

然后从 pod 或部署 yaml 清单中引用您的自定义映像。

现在,每次 pod 启动时安装软件包都不会影响性能,它会在构建时处理。

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