侧边栏壁纸
  • 累计撰写 123 篇文章
  • 累计创建 48 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录
k8s

kubesphere之-安装

田小晖
2020-06-02 / 0 评论 / 0 点赞 / 451 阅读 / 0 字 / 正在检测是否收录...

kubesphere之-安装

kubersphere官网 版本2.1.1

1.前提条件

KubeSphere 支持离线和在线的方式部署至现有的 Kubernetes 集群,部署之前请确保您的 Kubernetes 环境满足以下 4 个前提条件:

2.安装Helm(master节点)

Helm是Kubernetes 的包管理器。包管理器类似于我们在Ubuntu中使用的apt、CentOS中使用的yum或者Python中的pip一样,能快速查找、下载和安装软件包。Helm由客户端组件helm和服务端组件Tiller组成,能够将一组K8S资源打包统一管理,是查找、共享和使用为Kubernetes构建的软件的最佳方式。

  1. 验证版本

    helm version
    
  2. 安装

    curl -L https://git.io/get_helm.sh | bash
    
    # 或者
    wget http://oss.tianch.xyz/k8s/get_helm.sh
    
  3. 创建权限

    下载helm-rbac.yaml

    wget http://oss.tianch.xyz/k8s/helm-rbac.yaml
    
    kubectl apply -f helm-rbac.yaml
    
  4. 安装tiller(master上)

    • 初始化

      helm init --service-account=tiller --tiller-image=sapcc/tiller:v2.16.3 --history-max 300
      
    • 验证是否安装完成

      helm
      tiller
      kubectl get pods --all-namespaces
      

      1591003917623

  5. 安装 OpenEBS 创建 LocalPV 存储类型

    • 确认 k8s-node1节点是否有 Taint
    kubectl describe node k8s-node1 | grep Taint
    
    • 去掉 k8s-node1节点的 Taint
    kubectl taint nodes k8s-node1 node-role.kubernetes.io/master:NoSchedule-
    
    • 创建 OpenEBS 的 namespace
    kubectl create ns openebs
    
    • 若集群已安装了 Helm,可通过 Helm 命令来安装 OpenEBS
    helm install --namespace openebs --name openebs stable/openebs --version 1.5.0
    
    • 通过 kubectl 命令安装
    kubectl apply -f https://openebs.github.io/charts/openebs-operator-1.5.0.yaml
    
    • 查看创建的 StorageClass
    kubectl get sc
    
    • openebs-hostpath设置为 默认的 StorageClass
    kubectl patch storageclass openebs-hostpath -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
    
    • 重新给k8s-node1加上 Taint (安装kubesphere时不要有污点 有的话去掉再装 需要让master也参与调度)

      kubectl taint nodes k8s-node1 node-role.kubernetes.io/master=:NoSchedule
      
  6. 测试 StorageClass

    • 创建一个 demo-openebs-hostpath.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: percona
      labels:
        name: percona
    spec:
      replicas: 1
      selector:
        matchLabels:
          name: percona
      template:
        metadata:
          labels:
            name: percona
        spec:
          securityContext:
            fsGroup: 999
          tolerations:
          - key: "ak"
            value: "av"
            operator: "Equal"
            effect: "NoSchedule"
          containers:
            - resources:
                limits:
                  cpu: 0.5
              name: percona
              image: percona
              args:
                - "--ignore-db-dir"
                - "lost+found"
              env:
                - name: MYSQL_ROOT_PASSWORD
                  value: k8sDem0
              ports:
                - containerPort: 3306
                  name: percona
              volumeMounts:
                - mountPath: /var/lib/mysql
                  name: demo-vol1
          volumes:
            - name: demo-vol1
              persistentVolumeClaim:
                claimName: demo-vol1-claim
    ---
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: demo-vol1-claim
    spec:
      storageClassName: openebs-hostpath
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 5G
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: percona-mysql
      labels:
        name: percona-mysql
    spec:
      ports:
        - port: 3306
          targetPort: 3306
      selector:
          name: percona
    
    • 使用 kubectl 命令创建相关资源
    kubectl apply -f demo-openebs-hostpath.yaml -n openebs
    
    • 如果 PVC 的状态为 Bound 并且 Pod 状态为 running,则说明已经成功挂载,证明了默认的 StorageClass(openebs-hostpath)是正常工作的

      kubectl get pvc -n openebs
      

      1591008238267

3.最小化安装kubesphere

kubesphere-minimal.yaml

  • 应用

    wget http://oss.tianch.xyz/k8s/kubesphere-minimal.yaml
    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
  • 安装完成后 重新给k8s-node1加上 Taint

    kubectl taint nodes k8s-node1 node-role.kubernetes.io/master=:NoSchedule
    

4.最小化安装后的定制化安装

  • 通过修改 ks-installer 的 configmap 可以选装组件 将False改成True wq保存退出就会开始安装了 花费时间有点长
kubectl edit cm -n kubesphere-system ks-installer
博主关闭了所有页面的评论