k8s学习(3)--kubesphere安装
Helm 相关组件及概念Helm 包含两个组件,分别是 helm 客户端 和 Tiller 服务器:helm 是一个命令行工具,用于本地开发及管理chart,chart仓库管理等Tiller 是 Helm 的服务端。Tiller 负责接收 Helm 的请求,与 k8s 的 apiserver 交互,根据chart来生成一个 release 并管理 releasechart Helm的打包格式叫做c
Helm 相关组件及概念
Helm 包含两个组件,分别是 helm 客户端 和 Tiller 服务器:
- helm 是一个命令行工具,用于本地开发及管理chart,chart仓库管理等
- Tiller 是 Helm 的服务端。Tiller 负责接收 Helm 的请求,与 k8s 的 apiserver 交互,根据chart
来生成一个 release 并管理 release - chart Helm的打包格式叫做chart,所谓chart就是一系列文件, 它描述了一组相关的 k8s 集群资源
- release 使用 helm install 命令在 Kubernetes 集群中部署的 Chart 称为 Release
- Repoistory Helm chart 的仓库,Helm 客户端通过 HTTP 协议来访问存储库中 chart 的索引文件和压缩包
- 安装前提环境
- 安装helm
helm是k8s的包管理器,类似于yum,apt等,通过指定版本安装helm-v2.16.3-linux-amd64.tar.gz
tar zxvf helm-v2.16.3-linux-amd64.tar.gz
cd linux-amd64 && mv helm /usr/local/bin/
查看helm版本,这里的版本为2.16.3,下面安装的tiller也要是2.16.3
创建权限,执行helm_rbac.yaml文件
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system
kubectl apply -f helm_rbac.yaml
- 安装tiller
helm初始化
helm init --service-account=tiller --tiller-image=sapcc/tiller:v2.16.3 --history-max 300
# 如果想要重置
helm reset -f
通过命令查看所有pods状态:kubectl get pods --all-namespaces
发现killer状态为ImagePullBackOff,说明docker仓库中没有这个镜像,并没有安装成功。通过命令kubectl describe pod tiller-deploy-5d84fdb456-9tzxq -n kube-system
查看原因,拉取镜像tiller失败,这里是因为我写错了,把tiller:v.2.17.0
写成了tiller.v.2.17.0
了
如果我们确实是因为镜像找不到,则我们需要修改部署配置,查看所有部署kubectl get deploy --all-namespaces
,有一个名为tiller-deploy
的部署
编辑此部署kubectl edit deployment tiller-deploy -n kube-system
,将里面的imagePullPolicy由IfNotPresent
改为Never
,这几个的意思是
https://kubernetes.io/docs/concepts/containers/images/
By default, the kubelet will try to pull each image from the specified registry. However, if the imagePullPolicy property of the container is set to IfNotPresent or Never, then a local image is used (preferentially or exclusively, respectively).
#默认情况是会根据配置文件中的镜像地址去拉取镜像,如果设置为IfNotPresent 和Never就会使用本地镜像。
IfNotPresent :如果本地存在镜像就优先使用本地镜像。
Never:直接不再去拉取镜像了,使用本地的;如果本地不存在就报异常了
然后手动把镜像拉取下来,再将本地的镜像和配置的镜像关联,保存配置文件,过一会就会自动部署成功了。当然也可以reset,重新执行helm init命令,将后面的镜像改为手动下载的镜像即可。
- 集群现有的可用内存至少在 2G以上,那么执行 free -g可以看下可用资源
- 配置存储类型
集群已有存储类型(StorageClass),执行 kubectl get sc看下当前是否设置了默认的 storageclass;如果没有则参考https://v2-1.docs.kubesphere.io/docs/zh-CN/appendix/install-openebs/
进行设置
查看当前master节点,可以看到我们配置的master节点名称为k8s-node1
kubectl get node -o wide
确认 master 节点是否有 Taint,如果有就去掉
kubectl describe node k8s-node1 | grep Taint
kubectl taint nodes k8s-node1 node-role.kubernetes.io/master:NoSchedule-
安装 OpenEBS
# 创建 OpenEBS 的 namespace
kubectl create ns openebs
# 安装 OpenEBS
helm install --namespace openebs --name openebs stable/openebs --version 1.5.0
等待几分钟,查看
将 openebs-hostpath设置为 默认的 StorageClass
kubectl patch storageclass openebs-hostpath -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
提示:由于在文档开头手动去掉了 master 节点的 Taint,我们可以在安装完 OpenEBS 和 KubeSphere 后,可以将 master 节点 Taint 加上,避免业务相关的工作负载调度到 master 节点抢占 master 资源:
kubectl taint nodes k8s-node1 node-role.kubernetes.io/master=:NoSchedule
- 安装kubesphere
kubectl apply -f kubesphere-minimal.yaml
查看日志
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f
注:也可以更简便的方法安装,直接使用官网的一台机子一个命令安装,链接为https://v2-1.docs.kubesphere.io/docs/zh-CN/installation/all-in-one/
安装好以后,记得开启devops和sornar代码检测功能
kubectl edit cm -n kubesphere-system ks-installer
更多推荐
所有评论(0)