zoukankan      html  css  js  c++  java
  • Helm安装服务端tiller出现的问题

    一、首先,我是看尚硅谷视频跟着操作出现了问题,视频链接:https://www.bilibili.com/video/av66617940/?p=58

    再说下大概的部署流程

    Helm 部署

    Helm 包含两个组件:Helm 客户端和 Tiller 服务器,如下图所示

     Helm 客户端负责 chart release 的创建和管理以及和 Tiller 的交互。Tiller 服务器运行在 Kubernetes 集群中,它会处理 Helm 客户端的请求,与 Kubernetes API Server 交互

    流程

    1、客户端(Helm Client)和服务器端(Tiller)通过gRPC协议进行调用

    2、我们在客户端(Helm Client)传递对应的指令,服务器端(Tiller)接收到数据后会把数据理解成对应的命令,然后和KubeAPI进行交互

    3KubeAPI接收到指令会生成对应的数据或资源

    4、这些生成的数据或资源会被写入到etcd,kubernetes接受后进行创建

     所以helm部署会分为两个部分部署:

    1、客户端(Helm Client)部署

    2、服务器端(Tiller)的部署

    服务器端(Tiller)如图是部署到K8S集群的,所以以下就是服务器端(Tiller)的部署安装

    二、安装步骤,这些聪明的你肯定一看就懂,不多赘述了

    wget https://storage.googleapis.com/kubernetes-helm/helm-v2.13.1-linux-amd64.tar.gz
    tar -zxvf helm-v2.13.1-linux-amd64.tar.gz
    cd linux-amd64/
    cp helm /usr/local/bin/

     为了安装服务端 tiller,还需要在这台机器上配置好 kubectl 工具和 kubeconfig 文件,确保 kubectl 工具可以在这台机器上访问 apiserver 且正常使用。这里的 node1 节点以及配置好了 kubectl

    因为 Kubernetes APIServer 开启了 RBAC 访问控制,所以需要创建 tiller 使用的

    service accountSA: tiller 并分配合适的角色给它。详细内容可以查看helm文档中的Role-based Access Control(https://helm.sh/docs/using_helm/#role-based-access-control)。这里简单起见直接分配cluster- admin 这个集群内置的 ClusterRole 给它。创建 rbac-config.yaml 文件:

    #创建SA
    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

    #创建rbac.yaml

    kubectl create -f rbac-config.yaml

     

    #tiller的k8s集群的部署
    helm init --service-account tiller --skip-refresh

     视频里边的成功Running了,我的就炸了。所以,正文开始!!!

    三、自己安装时出现的问题

    kubectl get pods -n kube-system

     查看详细信息

    kubectl describe pods tiller-deploy-58565b5464-jcv8w  -n kube-system

    出现了这些问题

    Events:
      Type     Reason     Age                From                 Message
      ----     ------     ----               ----                 -------
      Normal   Scheduled  91s                default-scheduler    Successfully assigned kube-system/tiller-deploy-58565b5464-jcv8w to liu-node01
      Normal   Pulling    51s (x2 over 84s)  kubelet, liu-node01  Pulling image "gcr.io/kubernetes-helm/tiller:v2.13.1"
      Warning  Failed     21s (x2 over 64s)  kubelet, liu-node01  Failed to pull image "gcr.io/kubernetes-helm/tiller:v2.13.1": rpc error: code = Unknown desc = Error response from daemon: Get https://gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
      Warning  Failed     21s (x2 over 64s)  kubelet, liu-node01  Error: ErrImagePull
      Normal   BackOff    6s (x2 over 63s)   kubelet, liu-node01  Back-off pulling image "gcr.io/kubernetes-helm/tiller:v2.13.1"
      Warning  Failed     6s (x2 over 63s)   kubelet, liu-node01  Error: ImagePullBackOff

     根据问题描述,我先修改了自己的apiVersion,修改到自己环境对应的版本

    利用kubectl explain ClusterRoleBinding查看

     

    修改后还是有问题,不过问题变了,不是拉取错误,是拉取失败

     

      再次查看:kubectl describe pods tiller-deploy-58565b5464-jcv8w  -n kube-system,可以发现是镜像出现了问题

    Events:
      Type     Reason     Age                    From                 Message
      ----     ------     ----                   ----                 -------
      Normal   Scheduled  5m44s                  default-scheduler    Successfully assigned kube-system/tiller-deploy-58565b5464-jcv8w to liu-node01
      Normal   Pulling    2m57s (x4 over 5m37s)  kubelet, liu-node01  Pulling image "gcr.io/kubernetes-helm/tiller:v2.13.1"
      Warning  Failed     2m37s (x4 over 5m17s)  kubelet, liu-node01  Failed to pull image "gcr.io/kubernetes-helm/tiller:v2.13.1": rpc error: code = Unknown desc = Error response from daemon: Get https://gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
      Warning  Failed     2m37s (x4 over 5m17s)  kubelet, liu-node01  Error: ErrImagePull
      Warning  Failed     2m10s (x7 over 5m16s)  kubelet, liu-node01  Error: ImagePullBackOff
      Normal   BackOff    31s (x13 over 5m16s)   kubelet, liu-node01  Back-off pulling image "gcr.io/kubernetes-helm/tiller:v2.13.1"

     既然说我拉取的镜像有问题,所以我先去docker.hub上查了下,发现没有找到对应的镜像,所以要自己修改镜像,先直接搜索,看有那些镜像可以使用

     

     然后去docker.hub官网找

     

     拉取过程中,最新版本我没拉取成功,尝试了几个其他的才成功。拉取成功后,更改tag

    docker tag sapcc/tiller:v2.15.2 gcr.io/kubernetes-helm/tiller:v2.13.1

     

     再查看,发现还是没Running,说明镜像没有被使用,编辑配置文件,查看拉取策略

    kubectl edit deployment tiller-deploy -n kube-system

     

     最后查看,已经Running

     部署完成了,然后再后边看也看到类似的解决办法,文章链接:

    https://www.jianshu.com/p/d0cdbb49569b

    早看到他的也不用自己折腾半天了哈哈!!

  • 相关阅读:
    接口测试
    Excel
    day16 内置函数作业
    day16 内置函数和匿名函数
    day15 内置函数
    day14 生成器进阶
    day13迭代器
    day13生成器
    day11 作业
    day11 装饰器
  • 原文地址:https://www.cnblogs.com/LiuQizhong/p/11883307.html
Copyright © 2011-2022 走看看