封尘网

让学习成为一种习惯!

helm install时提示 Error: grpc: received message larger than max

最近在K8s测试环境中利用helm安装kubernetes-dashboard 插件时遇到一个奇怪的问题。然后在网上搜了一堆都没有能让我满意的答案。

 

helm版本

[root@k8s-master kubernetes-dashboard]# helm version
Client: &version.Version{SemVer:"v2.16.9", GitCommit:"8ad7037828e5a0fca1009dabe290130da6368e39", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.16.9", GitCommit:"8ad7037828e5a0fca1009dabe290130da6368e39", GitTreeState:"clean"}

 

拉取kubernetes-dashboard配置

[root@k8s-master ]# helm fetch stable/kubernetes-dashboard
[root@k8s-master ]# tar xf kubernetes-dashboard-1.11.1.tgz
[root@k8s-master kubernetes-dashboard]# cd kubernetes-dashboard

[root@k8s-master kubernetes-dashboard]# tree -L 3
.
├── Chart.yaml
├── kubernetes-dashboard.yaml
├── README.md
├── templates
│   ├── clusterrole-readonly.yaml
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── ingress.yaml
│   ├── networkpolicy.yaml
│   ├── NOTES.txt
│   ├── pdb.yaml
│   ├── rolebinding.yaml
│   ├── role.yaml
│   ├── secret.yaml
│   ├── serviceaccount.yaml
│   └── svc.yaml
└── values.yaml

 

错误的操作导致错误的提示

当我要使用helm 安装kubernetes-dashboard时出现的错误提示;并非是一执行就出错。

[root@k8s-master kubernetes-dashboard]# helm install . -n kubernetes-dashboard --namespace kube-system -f kubernetes-dashboard.yaml 
Error: grpc: received message larger than max (122349570 vs. 20971520)

//注意我当前的所有目录

 

通过提示就知道了grpc接收的消息包超过了默认的大小

20971520/1024/1024=20M    //20M以内的消息包地可以通过

 

出现问题回顾

主要是之前都没有这样的错误提示;第一次执行时因为我的镜像无法拉取下来,所以删除了releases,等下载完镜像后导出并传到其它的机器上再导入镜像后。回来再执行时就出现上面的错误提示了。

这里的导出镜像就是一个问题了。因为我是导出到当前的目录下的,所以当前目录下就多了一个kubernetes-dashboard_v1.10.1.tar.gz ;而这个镜像包大小为122310656 字节,约118M。直接说就是当前的目录下多了一个大文件,超过了20M。

[root@k8s-master kubernetes-dashboard]# tree -L 3
.
├── Chart.yaml
├── kubernetes-dashboard_v1.10.1.tar.gz   //此文件就是导致问题的所在,主要是大小超过了20M
├── kubernetes-dashboard.yaml
├── README.md
├── templates
│   ├── clusterrole-readonly.yaml
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── ingress.yaml
│   ├── networkpolicy.yaml
│   ├── NOTES.txt
│   ├── pdb.yaml
│   ├── rolebinding.yaml
│   ├── role.yaml
│   ├── secret.yaml
│   ├── serviceaccount.yaml
│   └── svc.yaml
└── values.yaml

 

正常情况下每个helm创建的项目目录下都应该有类似上面结构的文件(除了kubernetes-dashboard_v1.10.1.tar.gz是我导出的Docker镜像);其它的文件一般情况下也不会影响。但是当额外的文件大小超过20M后就会出现上面的错误提示。

 

为了证明想法,我用dd 命令创建几个文件做了测试。

dd if=/dev/zero of=testfile bs=1M count=2    //2M没问题
dd if=/dev/zero of=testfile bs=1M count=19   //19M也没问题
dd if=/dev/zero of=testfile bs=1M count=20   //20M时就会现在上面的提示了。

 

 

提醒:本文最后更新于 45 天前,文中所描述的信息可能已发生改变,请谨慎使用。