helm和tiller安装+openebs+kubesphere前置操作(踩坑)

  1. 前言
    1. 最近正常学习k8s,安装好了集群,现在准备安装kubesphere,卡在安装tiller的步骤,尝试了网上各种办法,最终另辟蹊径,终于解决了这个问题,参考文档:官方文档给我灵感的文章
  2. 安装helm
    1. 下载helm压缩包,无法下载的后面也提供了下载文件;
    2. 解压后得到linux-amd64文件,移动即可
      tar -zxvf helm-v2.16.3-linux-amd64.tar.gz 
      cd linux-amd64/
      mv ./helm /usr/bin
      helm version

      看到下图版本信息即安装成功

      Client: &version.Version{SemVer:"v2.16.3", GitCommit:"1ee0254c86d4ed6887327dabed7aa7da29d7eb0d", GitTreeState:"clean"}
      

      注意:这里安装的是低版本的,应该选择与自己匹配 的版本,Kubernetes和helm版本对应关系,v3版本的helm不需要安装tiller了,V2和V3的版本差异

      tar -zxvf helm-v2.16.3-linux-amd64.tar.gz 
      cd linux-amd64/
      mv ./helm /usr/bin
      helm version

       

  3. 安装tiller
    1. 给tiller授权,创建helm-rbac.yaml文件,编辑
      vi 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

       

    2. 初始化 

      1.  

        下载镜像文件

         

         

        docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.16.3 

         

      2.  

         

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

        可以看到上面的命令,egistry少了一个r,我是故意的,如果输入正确会卡在pending状态,

        接着修改pod的镜像地址:
        kubectl edit deployment -n kube-system tiller-deploy
        
        registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.16.3
        

        修改好后,使用命令验证

        [root@k8s-node1 ~]# kubectl get pods --all-namespaces
        NAMESPACE     NAME                                READY   STATUS    RESTARTS   AGE
        kube-system   coredns-9d85f5447-2hrt7             1/1     Running   4          3d20h
        kube-system   coredns-9d85f5447-577g4             1/1     Running   4          3d20h
        kube-system   etcd-k8s-node1                      1/1     Running   5          3d20h
        kube-system   kube-apiserver-k8s-node1            1/1     Running   5          3d20h
        kube-system   kube-controller-manager-k8s-node1   1/1     Running   5          3d20h
        kube-system   kube-flannel-ds-amd64-87g2v         1/1     Running   5          3d8h
        kube-system   kube-flannel-ds-amd64-b98ff         1/1     Running   4          3d18h
        kube-system   kube-flannel-ds-amd64-wnqzz         1/1     Running   4          3d8h
        kube-system   kube-proxy-4wftl                    1/1     Running   4          3d8h
        kube-system   kube-proxy-c8kw6                    1/1     Running   5          3d20h
        kube-system   kube-proxy-fpqdv                    1/1     Running   5          3d8h
        kube-system   kube-scheduler-k8s-node1            1/1     Running   5          3d20h
        kube-system   tiller-deploy-6d8dfbb696-rjbvz      1/1     Running   0          4m
        [root@k8s-node1 ~]# helm version
        Client: &version.Version{SemVer:"v2.16.3", GitCommit:"1ee0254c86d4ed6887327dabed7aa7da29d7eb0d", GitTreeState:"clean"}
        Server: &version.Version{SemVer:"v2.16.3", GitCommit:"1ee0254c86d4ed6887327dabed7aa7da29d7eb0d", GitTreeState:"clean"}
        

        可以看到tiller的状态为running,下面的版本信息也显示服务端安装完毕

      3. 使用阿里的源会导致在后续安装openebs时,资源库没有1.5的镜像资源,错误如下

        [root@k8s-node1 ~]# helm install --namespace openebs --name openebs stable/openebs --version 1.5.0
        Error: failed to download "stable/openebs" (hint: running `helm repo update` may help)
        

        这个时候我们可以参考https://blog.csdn.net/qq_44986889/article/details/106522841,这个兄弟的文章,先下载要用到的docker镜像如下

        docker pull openebs/m-apiserver:1.5.0
        docker pull openebs/openebs-k8s-provisioner:1.5.0
        docker pull openebs/snapshot-controller:1.5.0
        docker pull openebs/snapshot-provisioner:1.5.0
        docker pull openebs/node-disk-manager-amd64:v0.4.5
        docker pull openebs/node-disk-operator-amd64:v0.4.5
        docker pull openebs/admission-server:1.5.0
        docker pull openebs/provisioner-localpv:1.5.0

         下载修改后的yaml文件如下

        # This manifest deploys the OpenEBS control plane components, with associated CRs & RBAC rules
        # NOTE: On GKE, deploy the openebs-operator.yaml in admin context
        
        # Create the OpenEBS namespace
        apiVersion: v1
        kind: Namespace
        metadata:
          name: openebs
        ---
        # Create Maya Service Account
        apiVersion: v1
        kind: ServiceAccount
        metadata:
          name: openebs-maya-operator
          namespace: openebs
        ---
        # Define Role that allows operations on K8s pods/deployments
        kind: ClusterRole
        apiVersion: rbac.authorization.k8s.io/v1beta1
        metadata:
          name: openebs-maya-operator
        rules:
        - apiGroups: ["*"]
          resources: ["nodes", "nodes/proxy"]
          verbs: ["*"]
        - apiGroups: ["*"]
          resources: ["namespaces", "services", "pods", "pods/exec", "deployments", "deployments/finalizers", "replicationcontrollers", "replicasets", "events", "endpoints", "configmaps", "secrets", "jobs", "cronjobs"]
          verbs: ["*"]
        - apiGroups: ["*"]
          resources: ["statefulsets", "daemonsets"]
          verbs: ["*"]
        - apiGroups: ["*"]
          resources: ["resourcequotas", "limitranges"]
          verbs: ["list", "watch"]
        - apiGroups: ["*"]
          resources: ["ingresses", "horizontalpodautoscalers", "verticalpodautoscalers", "poddisruptionbudgets", "certificatesigningrequests"]
          verbs: ["list", "watch"]
        - apiGroups: ["*"]
          resources: ["storageclasses", "persistentvolumeclaims", "persistentvolumes"]
          verbs: ["*"]
        - apiGroups: ["volumesnapshot.external-storage.k8s.io"]
          resources: ["volumesnapshots", "volumesnapshotdatas"]
          verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
        - apiGroups: ["apiextensions.k8s.io"]
          resources: ["customresourcedefinitions"]
          verbs: [ "get", "list", "create", "update", "delete", "patch"]
        - apiGroups: ["*"]
          resources: [ "disks", "blockdevices", "blockdeviceclaims"]
          verbs: ["*" ]
        - apiGroups: ["*"]
          resources: [ "cstorpoolclusters", "storagepoolclaims", "storagepoolclaims/finalizers", "cstorpoolclusters/finalizers", "storagepools"]
          verbs: ["*" ]
        - apiGroups: ["*"]
          resources: [ "castemplates", "runtasks"]
          verbs: ["*" ]
        - apiGroups: ["*"]
          resources: [ "cstorpools", "cstorpools/finalizers", "cstorvolumereplicas", "cstorvolumes", "cstorvolumeclaims"]
          verbs: ["*" ]
        - apiGroups: ["*"]
          resources: [ "cstorpoolinstances", "cstorpoolinstances/finalizers"]
          verbs: ["*" ]
        - apiGroups: ["*"]
          resources: [ "cstorbackups", "cstorrestores", "cstorcompletedbackups"]
          verbs: ["*" ]
        - apiGroups: ["coordination.k8s.io"]
          resources: ["leases"]
          verbs: ["get", "watch", "list", "delete", "update", "create"]
        - apiGroups: ["admissionregistration.k8s.io"]
          resources: ["validatingwebhookconfigurations", "mutatingwebhookconfigurations"]
          verbs: ["get", "create", "list", "delete", "update", "patch"]
        - nonResourceURLs: ["/metrics"]
          verbs: ["get"]
        - apiGroups: ["*"]
          resources: [ "upgradetasks"]
          verbs: ["*" ]
        ---
        # Bind the Service Account with the Role Privileges.
        # TODO: Check if default account also needs to be there
        kind: ClusterRoleBinding
        apiVersion: rbac.authorization.k8s.io/v1beta1
        metadata:
          name: openebs-maya-operator
        subjects:
        - kind: ServiceAccount
          name: openebs-maya-operator
          namespace: openebs
        roleRef:
          kind: ClusterRole
          name: openebs-maya-operator
          apiGroup: rbac.authorization.k8s.io
        ---
        apiVersion: apps/v1
        kind: Deployment
        metadata:
          name: maya-apiserver
          namespace: openebs
          labels:
            name: maya-apiserver
            openebs.io/component-name: maya-apiserver
            openebs.io/version: 1.5.0
        spec:
          selector:
            matchLabels:
              name: maya-apiserver
              openebs.io/component-name: maya-apiserver
          replicas: 1
          strategy:
            type: Recreate
            rollingUpdate: null
          template:
            metadata:
              labels:
                name: maya-apiserver
                openebs.io/component-name: maya-apiserver
                openebs.io/version: 1.5.0
            spec:
              serviceAccountName: openebs-maya-operator
              containers:
              - name: maya-apiserver
                imagePullPolicy: IfNotPresent
                image: openebs/m-apiserver:1.5.0
                ports:
                - containerPort: 5656
                env:
                # OPENEBS_IO_KUBE_CONFIG enables maya api service to connect to K8s
                # based on this config. This is ignored if empty.
                # This is supported for maya api server version 0.5.2 onwards
                #- name: OPENEBS_IO_KUBE_CONFIG
                #  value: "/home/ubuntu/.kube/config"
                # OPENEBS_IO_K8S_MASTER enables maya api service to connect to K8s
                # based on this address. This is ignored if empty.
                # This is supported for maya api server version 0.5.2 onwards
                #- name: OPENEBS_IO_K8S_MASTER
                #  value: "http://172.28.128.3:8080"
                # OPENEBS_NAMESPACE provides the namespace of this deployment as an
                # environment variable
                - name: OPENEBS_NAMESPACE
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.namespace
                # OPENEBS_SERVICE_ACCOUNT provides the service account of this pod as
                # environment variable
                - name: OPENEBS_SERVICE_ACCOUNT
                  valueFrom:
                    fieldRef:
                      fieldPath: spec.serviceAccountName
                # OPENEBS_MAYA_POD_NAME provides the name of this pod as
                # environment variable
                - name: OPENEBS_MAYA_POD_NAME
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.name
                # If OPENEBS_IO_CREATE_DEFAULT_STORAGE_CONFIG is false then OpenEBS default
                # storageclass and storagepool will not be created.
                - name: OPENEBS_IO_CREATE_DEFAULT_STORAGE_CONFIG
                  value: "true"
                # OPENEBS_IO_INSTALL_DEFAULT_CSTOR_SPARSE_POOL decides whether default cstor sparse pool should be
                # configured as a part of openebs installation.
                # If "true" a default cstor sparse pool will be configured, if "false" it will not be configured.
                # This value takes effect only if OPENEBS_IO_CREATE_DEFAULT_STORAGE_CONFIG
                # is set to true
                - name: OPENEBS_IO_INSTALL_DEFAULT_CSTOR_SPARSE_POOL
                  value: "false"
                # OPENEBS_IO_CSTOR_TARGET_DIR can be used to specify the hostpath
                # to be used for saving the shared content between the side cars
                # of cstor volume pod.
                # The default path used is /var/openebs/sparse
                #- name: OPENEBS_IO_CSTOR_TARGET_DIR
                #  value: "/var/openebs/sparse"
                # OPENEBS_IO_CSTOR_POOL_SPARSE_DIR can be used to specify the hostpath
                # to be used for saving the shared content between the side cars
                # of cstor pool pod. This ENV is also used to indicate the location
                # of the sparse devices.
                # The default path used is /var/openebs/sparse
                #- name: OPENEBS_IO_CSTOR_POOL_SPARSE_DIR
                #  value: "/var/openebs/sparse"
                # OPENEBS_IO_JIVA_POOL_DIR can be used to specify the hostpath
                # to be used for default Jiva StoragePool loaded by OpenEBS
                # The default path used is /var/openebs
                # This value takes effect only if OPENEBS_IO_CREATE_DEFAULT_STORAGE_CONFIG
                # is set to true
                #- name: OPENEBS_IO_JIVA_POOL_DIR
                #  value: "/var/openebs"
                # OPENEBS_IO_LOCALPV_HOSTPATH_DIR can be used to specify the hostpath
                # to be used for default openebs-hostpath storageclass loaded by OpenEBS
                # The default path used is /var/openebs/local
                # This value takes effect only if OPENEBS_IO_CREATE_DEFAULT_STORAGE_CONFIG
                # is set to true
                #- name: OPENEBS_IO_LOCALPV_HOSTPATH_DIR
                #  value: "/var/openebs/local"
                - name: OPENEBS_IO_JIVA_CONTROLLER_IMAGE
                  value: "openebs/jiva:1.5.0"
                - name: OPENEBS_IO_JIVA_REPLICA_IMAGE
                  value: "openebs/jiva:1.5.0"
                - name: OPENEBS_IO_JIVA_REPLICA_COUNT
                  value: "3"
                - name: OPENEBS_IO_CSTOR_TARGET_IMAGE
                  value: "openebs/cstor-istgt:1.5.0"
                - name: OPENEBS_IO_CSTOR_POOL_IMAGE
                  value: "openebs/cstor-pool:1.5.0"
                - name: OPENEBS_IO_CSTOR_POOL_MGMT_IMAGE
                  value: "openebs/cstor-pool-mgmt:1.5.0"
                - name: OPENEBS_IO_CSTOR_VOLUME_MGMT_IMAGE
                  value: "openebs/cstor-volume-mgmt:1.5.0"
                - name: OPENEBS_IO_VOLUME_MONITOR_IMAGE
                  value: "openebs/m-exporter:1.5.0"
                - name: OPENEBS_IO_CSTOR_POOL_EXPORTER_IMAGE
                ###################################################################################################################
                  value: "openebs/m-exporter:1.5.0"
                - name: OPENEBS_IO_HELPER_IMAGE
                  value: "openebs/linux-utils:1.5.0"
                # OPENEBS_IO_ENABLE_ANALYTICS if set to true sends anonymous usage
                # events to Google Analytics
                - name: OPENEBS_IO_ENABLE_ANALYTICS
                  value: "true"
                - name: OPENEBS_IO_INSTALLER_TYPE
                  value: "openebs-operator"
                # OPENEBS_IO_ANALYTICS_PING_INTERVAL can be used to specify the duration (in hours)
                # for periodic ping events sent to Google Analytics.
                # Default is 24h.
                # Minimum is 1h. You can convert this to weekly by setting 168h
                #- name: OPENEBS_IO_ANALYTICS_PING_INTERVAL
                #  value: "24h"
                livenessProbe:
                  exec:
                    command:
                    - /usr/local/bin/mayactl
                    - version
                  initialDelaySeconds: 30
                  periodSeconds: 60
                readinessProbe:
                  exec:
                    command:
                    - /usr/local/bin/mayactl
                    - version
                  initialDelaySeconds: 30
                  periodSeconds: 60
        ---
        apiVersion: v1
        kind: Service
        metadata:
          name: maya-apiserver-service
          namespace: openebs
          labels:
            openebs.io/component-name: maya-apiserver-svc
        spec:
          ports:
          - name: api
            port: 5656
            protocol: TCP
            targetPort: 5656
          selector:
            name: maya-apiserver
          sessionAffinity: None
        ---
        apiVersion: apps/v1
        kind: Deployment
        metadata:
          name: openebs-provisioner
          namespace: openebs
          labels:
            name: openebs-provisioner
            openebs.io/component-name: openebs-provisioner
            openebs.io/version: 1.5.0
        spec:
          selector:
            matchLabels:
              name: openebs-provisioner
              openebs.io/component-name: openebs-provisioner
          replicas: 1
          strategy:
            type: Recreate
            rollingUpdate: null
          template:
            metadata:
              labels:
                name: openebs-provisioner
                openebs.io/component-name: openebs-provisioner
                openebs.io/version: 1.5.0
            spec:
              serviceAccountName: openebs-maya-operator
              containers:
              - name: openebs-provisioner
                imagePullPolicy: IfNotPresent
                image: openebs/openebs-k8s-provisioner:1.5.0
                env:
                # OPENEBS_IO_K8S_MASTER enables openebs provisioner to connect to K8s
                # based on this address. This is ignored if empty.
                # This is supported for openebs provisioner version 0.5.2 onwards
                #- name: OPENEBS_IO_K8S_MASTER
                #  value: "http://10.128.0.12:8080"
                # OPENEBS_IO_KUBE_CONFIG enables openebs provisioner to connect to K8s
                # based on this config. This is ignored if empty.
                # This is supported for openebs provisioner version 0.5.2 onwards
                #- name: OPENEBS_IO_KUBE_CONFIG
                #  value: "/home/ubuntu/.kube/config"
                - name: NODE_NAME
                  valueFrom:
                    fieldRef:
                      fieldPath: spec.nodeName
                - name: OPENEBS_NAMESPACE
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.namespace
                # OPENEBS_MAYA_SERVICE_NAME provides the maya-apiserver K8s service name,
                # that provisioner should forward the volume create/delete requests.
                # If not present, "maya-apiserver-service" will be used for lookup.
                # This is supported for openebs provisioner version 0.5.3-RC1 onwards
                #- name: OPENEBS_MAYA_SERVICE_NAME
                #  value: "maya-apiserver-apiservice"
                livenessProbe:
                  exec:
                    command:
                    - pgrep
                    - ".*openebs"
                  initialDelaySeconds: 30
                  periodSeconds: 60
        ---
        apiVersion: apps/v1
        kind: Deployment
        metadata:
          name: openebs-snapshot-operator
          namespace: openebs
          labels:
            name: openebs-snapshot-operator
            openebs.io/component-name: openebs-snapshot-operator
            openebs.io/version: 1.5.0
        spec:
          selector:
            matchLabels:
              name: openebs-snapshot-operator
              openebs.io/component-name: openebs-snapshot-operator
          replicas: 1
          strategy:
            type: Recreate
          template:
            metadata:
              labels:
                name: openebs-snapshot-operator
                openebs.io/component-name: openebs-snapshot-operator
                openebs.io/version: 1.5.0
            spec:
              serviceAccountName: openebs-maya-operator
              containers:
                - name: snapshot-controller
                  image: openebs/snapshot-controller:1.5.0
                  imagePullPolicy: IfNotPresent
                  env:
                  - name: OPENEBS_NAMESPACE
                    valueFrom:
                      fieldRef:
                        fieldPath: metadata.namespace
                  livenessProbe:
                    exec:
                      command:
                      - pgrep
                      - ".*controller"
                    initialDelaySeconds: 30
                    periodSeconds: 60
                # OPENEBS_MAYA_SERVICE_NAME provides the maya-apiserver K8s service name,
                # that snapshot controller should forward the snapshot create/delete requests.
                # If not present, "maya-apiserver-service" will be used for lookup.
                # This is supported for openebs provisioner version 0.5.3-RC1 onwards
                #- name: OPENEBS_MAYA_SERVICE_NAME
                #  value: "maya-apiserver-apiservice"
                - name: snapshot-provisioner
                  image: openebs/snapshot-provisioner:1.5.0
                  imagePullPolicy: IfNotPresent
                  env:
                  - name: OPENEBS_NAMESPACE
                    valueFrom:
                      fieldRef:
                        fieldPath: metadata.namespace
                # OPENEBS_MAYA_SERVICE_NAME provides the maya-apiserver K8s service name,
                # that snapshot provisioner  should forward the clone create/delete requests.
                # If not present, "maya-apiserver-service" will be used for lookup.
                # This is supported for openebs provisioner version 0.5.3-RC1 onwards
                #- name: OPENEBS_MAYA_SERVICE_NAME
                #  value: "maya-apiserver-apiservice"
                  livenessProbe:
                    exec:
                      command:
                      - pgrep
                      - ".*provisioner"
                    initialDelaySeconds: 30
                    periodSeconds: 60
        ---
        # This is the node-disk-manager related config.
        # It can be used to customize the disks probes and filters
        apiVersion: v1
        kind: ConfigMap
        metadata:
          name: openebs-ndm-config
          namespace: openebs
          labels:
            openebs.io/component-name: ndm-config
        data:
          # udev-probe is default or primary probe which should be enabled to run ndm
          # filterconfigs contails configs of filters - in their form fo include
          # and exclude comma separated strings
          node-disk-manager.config: |
            probeconfigs:
              - key: udev-probe
                name: udev probe
                state: true
              - key: seachest-probe
                name: seachest probe
                state: false
              - key: smart-probe
                name: smart probe
                state: true
            filterconfigs:
              - key: os-disk-exclude-filter
                name: os disk exclude filter
                state: true
                exclude: "/,/etc/hosts,/boot"
              - key: vendor-filter
                name: vendor filter
                state: true
                include: ""
                exclude: "CLOUDBYT,OpenEBS"
              - key: path-filter
                name: path filter
                state: true
                include: ""
                exclude: "loop,/dev/fd0,/dev/sr0,/dev/ram,/dev/dm-,/dev/md"
        ---
        apiVersion: apps/v1
        kind: DaemonSet
        metadata:
          name: openebs-ndm
          namespace: openebs
          labels:
            name: openebs-ndm
            openebs.io/component-name: ndm
            openebs.io/version: 1.5.0
        spec:
          selector:
            matchLabels:
              name: openebs-ndm
              openebs.io/component-name: ndm
          updateStrategy:
            type: RollingUpdate
          template:
            metadata:
              labels:
                name: openebs-ndm
                openebs.io/component-name: ndm
                openebs.io/version: 1.5.0
            spec:
              # By default the node-disk-manager will be run on all kubernetes nodes
              # If you would like to limit this to only some nodes, say the nodes
              # that have storage attached, you could label those node and use
              # nodeSelector.
              #
              # e.g. label the storage nodes with - "openebs.io/nodegroup"="storage-node"
              # kubectl label node <node-name> "openebs.io/nodegroup"="storage-node"
              #nodeSelector:
              #  "openebs.io/nodegroup": "storage-node"
              serviceAccountName: openebs-maya-operator
              hostNetwork: true
              containers:
              - name: node-disk-manager
                image: openebs/node-disk-manager-amd64:v0.4.5
                imagePullPolicy: Always
                securityContext:
                  privileged: true
                volumeMounts:
                - name: config
                  mountPath: /host/node-disk-manager.config
                  subPath: node-disk-manager.config
                  readOnly: true
                - name: udev
                  mountPath: /run/udev
                - name: procmount
                  mountPath: /host/proc
                  readOnly: true
                - name: sparsepath
                  mountPath: /var/openebs/sparse
                env:
                # namespace in which NDM is installed will be passed to NDM Daemonset
                # as environment variable
                - name: NAMESPACE
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.namespace
                # pass hostname as env variable using downward API to the NDM container
                - name: NODE_NAME
                  valueFrom:
                    fieldRef:
                      fieldPath: spec.nodeName
                # specify the directory where the sparse files need to be created.
                # if not specified, then sparse files will not be created.
                - name: SPARSE_FILE_DIR
                  value: "/var/openebs/sparse"
                # Size(bytes) of the sparse file to be created.
                - name: SPARSE_FILE_SIZE
                  value: "10737418240"
                # Specify the number of sparse files to be created
                - name: SPARSE_FILE_COUNT
                  value: "0"
                livenessProbe:
                  exec:
                    command:
                    - pgrep
                    - ".*ndm"
                  initialDelaySeconds: 30
                  periodSeconds: 60
              volumes:
              - name: config
                configMap:
                  name: openebs-ndm-config
              - name: udev
                hostPath:
                  path: /run/udev
                  type: Directory
              # mount /proc (to access mount file of process 1 of host) inside container
              # to read mount-point of disks and partitions
              - name: procmount
                hostPath:
                  path: /proc
                  type: Directory
              - name: sparsepath
                hostPath:
                  path: /var/openebs/sparse
        ---
        apiVersion: apps/v1
        kind: Deployment
        metadata:
          name: openebs-ndm-operator
          namespace: openebs
          labels:
            name: openebs-ndm-operator
            openebs.io/component-name: ndm-operator
            openebs.io/version: 1.5.0
        spec:
          selector:
            matchLabels:
              name: openebs-ndm-operator
              openebs.io/component-name: ndm-operator
          replicas: 1
          strategy:
            type: Recreate
          template:
            metadata:
              labels:
                name: openebs-ndm-operator
                openebs.io/component-name: ndm-operator
                openebs.io/version: 1.5.0
            spec:
              serviceAccountName: openebs-maya-operator
              containers:
                - name: node-disk-operator
                  image: openebs/node-disk-operator-amd64:v0.4.5
                  imagePullPolicy: Always
                  readinessProbe:
                    exec:
                      command:
                        - stat
                        - /tmp/operator-sdk-ready
                    initialDelaySeconds: 4
                    periodSeconds: 10
                    failureThreshold: 1
                  env:
                    - name: WATCH_NAMESPACE
                      valueFrom:
                        fieldRef:
                          fieldPath: metadata.namespace
                    - name: POD_NAME
                      valueFrom:
                        fieldRef:
                          fieldPath: metadata.name
                    # the service account of the ndm-operator pod
                    - name: SERVICE_ACCOUNT
                      valueFrom:
                        fieldRef:
                          fieldPath: spec.serviceAccountName
                    - name: OPERATOR_NAME
                      value: "node-disk-operator"
                    - name: CLEANUP_JOB_IMAGE
                      value: "openebs/linux-utils:1.5.0"
        ---
        apiVersion: apps/v1
        kind: Deployment
        metadata:
          name: openebs-admission-server
          namespace: openebs
          labels:
            app: admission-webhook
            openebs.io/component-name: admission-webhook
            openebs.io/version: 1.5.0
        spec:
          replicas: 1
          strategy:
            type: Recreate
            rollingUpdate: null
          selector:
            matchLabels:
              app: admission-webhook
          template:
            metadata:
              labels:
                app: admission-webhook
                openebs.io/component-name: admission-webhook
                openebs.io/version: 1.5.0
            spec:
              serviceAccountName: openebs-maya-operator
              containers:
                - name: admission-webhook
                  image: openebs/admission-server:1.5.0
                  imagePullPolicy: IfNotPresent
                  args:
                    - -alsologtostderr
                    - -v=2
                    - 2>&1
                  env:
                    - name: OPENEBS_NAMESPACE
                      valueFrom:
                        fieldRef:
                          fieldPath: metadata.namespace
                    - name: ADMISSION_WEBHOOK_NAME
                      value: "openebs-admission-server"
        ---
        apiVersion: apps/v1
        kind: Deployment
        metadata:
          name: openebs-localpv-provisioner
          namespace: openebs
          labels:
            name: openebs-localpv-provisioner
            openebs.io/component-name: openebs-localpv-provisioner
            openebs.io/version: 1.5.0
        spec:
          selector:
            matchLabels:
              name: openebs-localpv-provisioner
              openebs.io/component-name: openebs-localpv-provisioner
          replicas: 1
          strategy:
            type: Recreate
          template:
            metadata:
              labels:
                name: openebs-localpv-provisioner
                openebs.io/component-name: openebs-localpv-provisioner
                openebs.io/version: 1.5.0
            spec:
              serviceAccountName: openebs-maya-operator
              containers:
              - name: openebs-provisioner-hostpath
                imagePullPolicy: Always
                image: openebs/provisioner-localpv:1.5.0
                env:
                # OPENEBS_IO_K8S_MASTER enables openebs provisioner to connect to K8s
                # based on this address. This is ignored if empty.
                # This is supported for openebs provisioner version 0.5.2 onwards
                #- name: OPENEBS_IO_K8S_MASTER
                #  value: "http://10.128.0.12:8080"
                # OPENEBS_IO_KUBE_CONFIG enables openebs provisioner to connect to K8s
                # based on this config. This is ignored if empty.
                # This is supported for openebs provisioner version 0.5.2 onwards
                #- name: OPENEBS_IO_KUBE_CONFIG
                #  value: "/home/ubuntu/.kube/config"
                - name: NODE_NAME
                  valueFrom:
                    fieldRef:
                      fieldPath: spec.nodeName
                - name: OPENEBS_NAMESPACE
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.namespace
                # OPENEBS_SERVICE_ACCOUNT provides the service account of this pod as
                # environment variable
                - name: OPENEBS_SERVICE_ACCOUNT
                  valueFrom:
                    fieldRef:
                      fieldPath: spec.serviceAccountName
                - name: OPENEBS_IO_ENABLE_ANALYTICS
                  value: "true"
                - name: OPENEBS_IO_INSTALLER_TYPE
                  value: "openebs-operator"
                - name: OPENEBS_IO_HELPER_IMAGE
                  value: "openebs/linux-utils:1.5.0"
                livenessProbe:
                  exec:
                    command:
                    - pgrep
                    - ".*localpv"
                  initialDelaySeconds: 30
                  periodSeconds: 60
        ---
        

        后续安装openebs可以参考官方文档,注意!!!!在安装openebs后一定不要加上污点,会导致后续安装kubesphere出现各种pod拉不下来的问题,安装kubesphere后再加上污点,避免让主节点去干活,在安装kubesphere和openebs的过程中,要多使用kubectl describe和kubectl logs命令,检查镜像安装的节点,去指定节点下载镜像

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值