【问题标题】:I want to apt-get install sysstat command in kubernetes yaml file我想在 kubernetes yaml 文件中 apt-get install sysstat 命令
【发布时间】:2020-06-10 07:39:46
【问题描述】:

集群信息:
Kubernetes 版本:1.8
正在使用的云:(如果不在公共云上,则放置裸机)AWS EKS
主机操作系统:debian linux

当我部署 pod 时,我希望我的 pod 自动安装并启动 sysstat

这是我下面的两个yaml,但是当我在下面输入命令时它不起作用CrashLoopBackoff:[“/bin/sh”,“-c”]、args:[“apt-get install sysstat”]” 「图片:」

cat deploy/db/statefulset.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: 
    sbdemo-postgres-sfs
spec:
  serviceName: sbdemo-postgres-service
  replicas: 1
  selector:
    matchLabels:
      app: sbdemo-postgres-sfs
  template:
    metadata:
      labels:
        app: sbdemo-postgres-sfs
    spec:
      containers:
       - name: postgres
         image: dayan888/springdemo:postgres9.6
         ports:
          - containerPort: 5432
         **command: ["/bin/bash", "-c"]**
         **args: ["apt-get install sysstat"]**
         volumeMounts:
         - name: pvc-db-volume
           mountPath: /var/lib/postgresql
  volumeClaimTemplates:
  - metadata:
      name: pvc-db-volume
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 1G

cat deploy/web/deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sbdemo-nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: sbdemo-nginx
  template:
    metadata:
      labels:
        app: sbdemo-nginx
    spec:
      containers:
      - name: nginx
        image: gobawoo21/springdemo:nginx
         **command: ["/bin/bash", "-c"]**
         **args: ["apt-get install sysstat"]**
        ports:
        - containerPort: 80
        volumeMounts:
        - name: nginx-conf
          mountPath: /etc/nginx/nginx.conf
          subPath: nginx.conf
        - name: server-conf
          mountPath: /etc/nginx/conf.d/server.conf
          subPath: server.conf
      volumes:
      - name: nginx-conf
        configMap: 
          name: nginx-conf
          items:
            - key: nginx.conf
              path: nginx.conf
      - name: server-conf
        configMap: 
          name: server-conf
          items:
            - key: server.conf
              path: server.conf

有人知道如何在部署 pod 时自动设置存储库吗?

问候

【问题讨论】:

  • Kubernetes 版本 1.8?????
  • 对不起,现在是 1.18 我会修复它

标签: kubernetes manifest apt-get


【解决方案1】:

最佳做法是在映像构建阶段安装软件包。您只需将此步骤添加到您的 Dockerfile。

FROM postgres:9.6

RUN apt-get update &&\ 
    apt-get install sysstat -y &&\
    rm -rf /var/lib/apt/lists/*

COPY deploy/db/init_ddl.sh /docker-entrypoint-initdb.d/
RUN chmod +x /docker-entrypoint-initdb.d/init_ddl.sh

Kube 清单

   spec:
      containers:
       - name: postgres
         image: harik8/sof:62298191
         imagePullPolicy: Always
         ports:
          - containerPort: 5432
         env:
         - name: POSTGRES_PASSWORD
           value: password
         volumeMounts:
         - name: pvc-db-volume
           mountPath: /var/lib/postgresql

它应该运行(请忽略POSTGRES_PASSWORD env 变量)

$ kubectl get po
NAME                    READY   STATUS      RESTARTS   AGE
sbdemo-postgres-sfs-0   1/1     Running     0          8m46s

验证

$ kubectl exec -it sbdemo-postgres-sfs-0 bash
root@sbdemo-postgres-sfs-0:/# iostat
Linux 4.19.107 (sbdemo-postgres-sfs-0)  06/10/2020      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          10.38    0.01    6.28    0.24    0.00   83.09

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
vda             115.53      1144.72      1320.48    1837135    2119208
scd0              0.02         0.65         0.00       1048          0

【讨论】:

  • 感谢您的评论。为什么我需要这个命令? rm -rf /var/lib/apt/lists/*
  • @Bawoo “当您通过删除 /var/lib/apt/lists 来清理 apt 缓存时,它会减小图像大小”。参考here
  • 你不能帮我解决我的问题吗?它不工作我的 nginx pod
【解决方案2】:

如果这是可能的,那就是有问题。您的容器不应该以 root 身份运行,因此即使您修复了这种方法,它也不应该工作。你需要做的是把它放在你的容器构建中(即在 Dockerfile 中)。

【讨论】:

  • 谢谢您的评论您的意思是如果我想使用该命令和参数,我必须修改我的 Dockerfile?谢谢问候
  • 是的,您需要将RUN apt-get install sysstat 添加到您的Dockerfile。可能您想要添加的不仅仅是这些,因为编写好的容器图像有一种微妙的艺术,但从那里开始。
猜你喜欢
  • 2016-06-04
  • 1970-01-01
  • 2021-06-14
  • 2018-05-12
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
  • 1970-01-01
  • 2019-10-06
相关资源
最近更新 更多