最近在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时就会现在上面的提示了。