小编bur*_*ttk的帖子

内存使用率差异:cgroup memory.usage_in_bytes与docker容器内的RSS

"Kubernetes"(v1.10.2)说我的pod(包含一个容器)使用大约5GB的内存.在容器内部,RSS更像是681MiB.可以解释如何使用以下数据从681MiB到5GB(或者描述如何从容器或在kubernetes中运行此容器的docker主机中省略的另一个命令来弥补差异)?

kubectl top pods说5GB:

% kubectl top pods -l app=myapp
NAME                             CPU(cores)   MEMORY(bytes)
myapp-56b947bf6d-2lcr7           39m          5039Mi
Run Code Online (Sandbox Code Playgroud)

Cadvisor报告了一个相似的数字(可能来自略有不同的时间,所以请忽略小的差异):

container_memory_usage_bytes{pod_name=~".*myapp.*"}      5309456384

5309456384 / 1024.0 / 1024 ~= 5063 ~= 5039
Run Code Online (Sandbox Code Playgroud)

在容器内部,此文件似乎是cadvisor获取其数据的位置:

% kubectl exec -it myapp-56b947bf6d-2lcr7 bash
meme@myapp-56b947bf6d-2lcr7:/app# cat /sys/fs/cgroup/memory/memory.usage_in_bytes
5309456384
Run Code Online (Sandbox Code Playgroud)

容器内的驻留集大小(RSS)不匹配(小于1GB):

meme@myapp-56b947bf6d-2lcr7:/app# kb=$(ps aux | grep -v grep | grep -v 'ps aux' | grep -v bash | grep -v awk | grep -v RSS | awk '{print $6}' | awk '{s+=$1} END {printf "%.0f", s}'); mb=$(expr $kb / 1024); printf …
Run Code Online (Sandbox Code Playgroud)

memory cgroups docker kubernetes cadvisor

18
推荐指数
2
解决办法
3183
查看次数

kubernetes helm:"丢失了与pod的连接"和"传输正在关闭"错误

我跑来helm upgrade --install修改我的kubernetes集群的状态,我有时会得到这样的错误:

22:24:34 StdErr: E0126 17:24:28.472048   48084 portforward.go:178] lost connection to pod
22:24:34 Error: UPGRADE FAILED: transport is closing
Run Code Online (Sandbox Code Playgroud)

似乎我不是唯一一个,它似乎发生在许多不同的helm命令.所有这些github问题都有描述或评论提到"丢失连接到pod"或"传输正在关闭"错误(通常两者):

虽然阅读数百个github问题评论可能具有教育意义,但通常切换到stackoverflow的追逐速度更快,而且这个问题似乎还不存在,所以现在就是这样.希望一些快速症状修复,并最终一个或多个根本原因诊断最终在答案中.

kubernetes kubernetes-helm

9
推荐指数
1
解决办法
4931
查看次数

我可以在共享库中定义和参数化整个声明性管道吗?

基本上我希望我的Jenkinsfile看起来像这样:

@Library('my-descriptive-pipline') _
myPipeline('arg1','arg2','arg3')
Run Code Online (Sandbox Code Playgroud)

然后我的共享库(/vars/descriptivePipeline.groovy)将如下所示:

pipeline {
    agent any
    options {
      skipDefaultCheckout()
    }
    environment {
    }
    stages {
        stage('stageA') {
            steps {
                ... Do something with arg1, arg2 or arg3
            }
        }
        stage('stageB') {
            steps {
                ... Do something with arg1, arg2 or arg3
            }
        }
    ....
Run Code Online (Sandbox Code Playgroud)

我想集中管道配置,所以我不必担心Jenkinsfile蔓延.这是否可以使用声明性管道?

jenkins jenkins-plugins jenkins-pipeline jenkins-shared-libraries

3
推荐指数
1
解决办法
3598
查看次数