1. 故事背景

原本我是在自建k8s集群里,集成阿里云的日志服务,发现需要使用Helm来安装,这个过程也遇到一些坑,所以一起在这里记录下来。

2. 提前准备

  • 本次试验是在CentOS 7.4 64位系统,root用户下进行
  • Kubernetes(k8s)集群

3. 安装Helm

一般需要两个步骤。

  • 安装Client
  • 安装Server(helm init)

注意:如果安装期间遇到问题,可以使用helm reset -f,强制重置`

期间我遇到两个坑。

1. helm init需要科学上网

有几个选择,最好的方案是使用阿里云的库

2. 安装helm chart遇到权限问题

报错信息截选

Error:
  release alibaba-log-controller failed: namespaces "default" is forbidden:
  User "system:serviceaccount:kube-system:default"
  cannot get namespaces in the namespace "default"

说白了,默认的default用户没有权限,要么给这个用户修改权限,要么新建一个用户给helm使用。(新版本的K8S基于RBAC,经常会遇到这样的问题)

3.1 安装Client

官方参考传送门

curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash

3.2 创建用户tiller

这里我选择了新建一个用户给Helm(这里给了很大的权限)

rbac-config.yml内容

apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: tiller
  namespace: kube-system

创建ServiceAccount和ClusterRoleBinding

kubectl apply -f rbac-config.yml

3.3 安装server(helm init)

helm init在缺省配置下

  1. Helm会通过gcr.io/kubernetes-helm/tiller镜像安装配置Tiller

  2. 缺省仓库是https://kubernetes-charts.storage.googleapis.com

由于在国内可能无法访问gcr.io,storage.googleapis.com等域名,阿里云容器服务为此提供了镜像站点。

这里我不使用科学上网(因为不会),使用阿里的镜像,同时把仓库的地址由改成aliyun,最后指定ServiceAccounttiller,具体如下:

helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.10.0 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts  --service-account tiller

4. 安装Logtail

官方参考传送门 - 自建Kubernetes安装方式

wget http://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/kubernetes/alicloud-log-k8s-custom-install.sh; chmod 744 ./alicloud-log-k8s-custom-install.sh; sh ./alicloud-log-k8s-custom-install.sh {your-project-suffix} {region-id} {aliuid} {access-key-id} {access-key-secret}

到这里就很容易了,根据阿里官网说明替换上对应的参数即可。

5. 结束

如果还有其他的问题,可留言交流。