安装KubeSphere

发布时间:2020-08-10 14:38:17编辑:admin阅读(268)

    一、概述

    官方中文文档:https://kubesphere.io/docs/zh-CN/introduction/what-is-kubesphere/

    KubeSphere 是什么

    KubeSphere 是在 Kubernetes 之上构建的以应用为中心的企业级分布式容器平台,提供简单易用的操作界面以及向导式操作方式,在降低用户使用容器调度平台学习成本的同时,极大减轻开发、测试、运维的日常工作的复杂度,旨在解决 Kubernetes 本身存在的存储、网络、安全和易用性等痛点。除此之外,平台已经整合并优化了多个适用于容器场景的功能模块,以完整的解决方案帮助企业轻松应对敏捷开发与自动化运维、DevOps、微服务治理、灰度发布、多租户管理、工作负载和集群管理、监控告警、日志查询与收集、服务与网络、应用商店、镜像构建与镜像仓库管理和存储管理等多种业务场景。后续版本还将提供和支持多集群管理、大数据、人工智能等更为复杂的业务场景。

    KubeSphere 从项目初始阶段就采用开源的方式来进行项目的良性发展,相关的项目源代码和文档都在 GitHub 可见。KubeSphere 支持部署和运行在包括公有云、私有云、VM、BM 和 Kubernetes 等任何基础设施之上,并且支持在线安装与离线安装,目前已在 阿里云、腾讯云、华为云、青云、AWS、Kubernetes 上进行过部署测试

    功能架构

    1.png

     

    关于KubeSphere,最好最全面最通俗易懂的一篇文章是《一文说清 KubeSphere 容器平台的价值》,链接如下:

    https://www.kubernetes.org.cn/7962.html

     

    个人理解

    KubeSphere,这是国内唯一一个开源的Kubernetes(k8s)发行版,它的开源不涉及任何商业意图,它不属于青云而属于社区,它极大地降低了使用Kubernetes的门槛,它的出现将加速中国企业向云原生迈进的步伐。

    “发行版”的说法常用于Linux操作系统。比如,虽有Linux内核,而Ubuntu、CentOS等等叫做Linux发行版,对应的,Kubernetes就相当于内核,KubeSphere就是Kubernetes的发行版,正常人类是很难使用Linux内核和Kubenetes的,为了让大家用起来,要基于Linux内核和Kubernetes做很多周边配套,Linux和Kubenetes就好像一台光秃秃的汽车发动机,为了把它当车开,你起码得有车架子、轮胎、方向盘、刹车、……等等。 

    所以,开源KubeSphere的青云就像一个汽车厂,负责KubeSphere牌汽车各个组件的组装搭配,不过,这个汽车不需要花钱就能获取到,这就是青云开源KubeSphere的实质。它的意义在于加快了大家使用k8s发动机的进程,让大家都能开上KubeSphere牌汽车。

    云原生能帮助企业做数字化转型,帮助企业用数字化转型获取竞争力。而KubeSphere可以让企业更快地上原生,开上汽车。

     

    以上摘抄自https://tech.ifeng.com/c/7u6tUXwXbJU

    我觉得,读完以后,醍醐灌顶,茅塞顿开

    我们使用Linux的各种发行版(比如:CentOS、Ubuntu等)与Linux内核交互,极大地降低了使用Linux的门槛,而且像Ubuntu还提供了特别漂亮的桌面版,图像界面式的操作使用起来更方便。

    我们当然可以使用CMD命令行窗口同Windows系统交互,所有在图形界面上完成的操作都可以通过命令行完成,但是这种操作方式的门槛极高,不利于微软推行Windows桌面操作系统。

    同样的,Kubenetes就相当于内核,而KubeSphere就相当于是Kubernetes的发行版。KubeSphere提供极简体验,向导式UI,极大的降低了使用Kubenetes的门槛。

    记不住Kubenetes命令不要紧,不会写Dockerfile也没关系,使用KubeSphere图像界面以后一起都变得简单了,而且它是以应用为中心的,极大地解放了运维和开发人员的生产力。

    KubeSphere就是Java编程界的Spring。想想看,用了Spring以后你不需要关心各种数据库的连接,各种各样的组件都帮你集成好了,拿来就用。KubeSphere也是一样,开箱即用。

     

    二、最小化安装

    配置要求

    官方配置要求:k8s集群可用 CPU > 1 Core 且可用内存 > 2 G

     

    环境说明

    系统k8s版本dockerip主机名配置
    centos 7.61.16.319.03.5192.168.31.148k8s-master2核4G
    centos 7.61.16.319.03.5192.168.31.179k8s-node012核4G

     

     

     

     

    安装要求

    KubeSphere 支持直接在 Linux 上部署集群,也支持在 Kubernetes 上部署,我这里选择后者,基本的要求如下:

     

    注意:KubeSphere要求k8s版本 小于v1.18.0。否则会出现错误:

    fatal: [localhost]: FAILED! => {
        "assertion": "kubernetes_version.stdout is version('v1.18.0', '<')", 
        "changed": false, 
        "evaluated_to": false, 
        "msg": "The current k8s version is not supported"
    }

     

    关于Kubernetes1.16.3安装,请参考链接:

    https://www.cnblogs.com/xiao987334176/p/11899321.html

     

    安装helm

    KubeSphere依赖于helm,关于helm安装,请参考链接:

    https://www.cnblogs.com/xiao987334176/p/12752783.html

     

    安装nfs

    为了方便演示,这里我直接在主机k8s-node01上面安装。

     

    创建共享目录

    mkdir -p /data/kubernetes

     

    安装组件

    yum -y install nfs-utils rpcbind

     

    编辑配置文件

    vi /etc/exports

    内容如下:

    /data/kubernetes 192.168.31.0/24(rw,sync,no_root_squash)

    注意:这里的192.168.31.0/24,表示客户端访问白名单。只有符合的ip,才能访问。

     

    启动nfs服务

    service nfs start
    service rpcbind start

     

    设置开机自启动

    systemctl enable nfs
    systemctl enable rpcbind

     

    登录主机k8s-master,安装客户端组件

    yum -y install nfs-utils rpcbind

     

    测试nfs

    # showmount -e 192.168.31.179
    Export list for 192.168.31.179:
    /data/kubernetes 192.168.31.0/24

    出现列表,表示nfs工作正常。

     

    安装 StorageClass

    Kubernetes 支持多种 StorageClass,我这选择 NFS 作为集群的 StorageClass。

    参考地址:https://github.com/kubernetes-incubator/external-storage/tree/master/nfs-client

     

    登录主机k8s-master,创建目录

    mkdir nfsvolume

     

    下载yaml文件

    https://raw.githubusercontent.com/kubernetes-incubator/external-storage/master/nfs-client/deploy/rbac.yaml
    https://raw.githubusercontent.com/kubernetes-incubator/external-storage/master/nfs-client/deploy/class.yaml
    https://raw.githubusercontent.com/kubernetes-incubator/external-storage/master/nfs-client/deploy/deployment.yaml
    注意:以上链接,无法直接用wget下载。只能手动打开网页,复制粘贴到本地。

     

    修改 deployment.yaml 中的两处 NFS 服务器 IP 和目录

    ...
              env:
                - name: PROVISIONER_NAME
                  value: fuseim.pri/ifs
                - name: NFS_SERVER
                  value: 192.168.31.179
                - name: NFS_PATH
                  value: /data/kubernetes
          volumes:
            - name: nfs-client-root
              nfs:
                server: 192.168.31.179
                path: /data/kubernetes

     

    部署创建

    具体的说明可以去官网查看

    kubectl create -f rbac.yaml
    kubectl create -f class.yaml
    kubectl create -f deployment.yaml

     

    注意:请确保每一个k8s node节点,安装了nfs-utils

    yum -y install nfs-utils

     

    查看storageclass

    # kubectl get storageclass
    NAME                            PROVISIONER      AGE
    managed-nfs-storage    fuseim.pri/ifs   139m

     

    查看nfs pod

    # kubectl get pods
    NAME                                      READY   STATUS    RESTARTS   AGE
    nfs-client-provisioner-59777fb457-dkf87   1/1     Running   0          153m

    确保状态正常

     

    标记一个默认的 StorageClass

    操作命令

    kubectl patch storageclass managed-nfs-storage -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

    请注意,最多只能有一个 StorageClass 能够被标记为默认。

     

    验证标记是否成功

    # kubectl get storageclass
    NAME                            PROVISIONER      AGE
    managed-nfs-storage (default)   fuseim.pri/ifs   139m

    出现了一个default,表示成功了。

     

    部署 KubeSphere

    过程很简单,如果你的机器资源足够,集群可用 CPU > 8 Core 且可用内存 > 16 G。建议你进行完整安装,参考链接:

    https://kubesphere.io/docs/zh-CN/installation/install-on-k8s/

     

    由于我的是在一台i7 16g内存的笔记本运行,只能最小化安装。完整版真心带不动!!!

    创建目录

    mkdir kubesphere

     

    下载yaml文件

    https://raw.githubusercontent.com/kubesphere/ks-installer/master/kubesphere-minimal.yaml

    注意:以上链接,无法直接用wget下载。只能手动打开网页,复制粘贴到本地。

     

    部署 KubeSphere

    kubectl apply -f kubesphere-minimal.yaml

     

    这个过程根据你实际网速,实际使用时间长度有所不同。

    等待1分钟,你可以通过如下命令查看实时的日志输出。

     

    kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f

    当你看到如下日志输出,证明你的 KubeSphere 部署成功

    #####################################################
    ###              Welcome to KubeSphere!           ###
    #####################################################
    
    Console: http://192.168.31.148:30880
    Account: admin
    Password: P@88w0rd
    
    NOTES:
      1. After logging into the console, please check the
         monitoring status of service components in
         the "Cluster Status". If the service is not
         ready, please wait patiently. You can start
         to use when all components are ready.
      2. Please modify the default password after login.
    
    #####################################################

     

    确认 Pod 都正常运行

    [root@k8s-master kubesphere]# kubectl get pods -A
    NAMESPACE                      NAME                                       READY   STATUS    RESTARTS   AGE
    default                        nfs-client-provisioner-59777fb457-dkf87    1/1     Running   0          156m
    kube-system                    calico-kube-controllers-7489ff5b7c-4vs7c   1/1     Running   0          154m
    kube-system                    calico-node-5qzhg                          1/1     Running   0          154m
    kube-system                    calico-node-wrpq4                          1/1     Running   0          154m
    kube-system                    coredns-58cc8c89f4-jhkzr                   1/1     Running   0          159m
    kube-system                    coredns-58cc8c89f4-wmdqk                   1/1     Running   0          159m
    kube-system                    etcd-k8s-master                            1/1     Running   0          158m
    kube-system                    kube-apiserver-k8s-master                  1/1     Running   0          158m
    kube-system                    kube-controller-manager-k8s-master         1/1     Running   0          159m
    kube-system                    kube-proxy-8rmvg                           1/1     Running   0          159m
    kube-system                    kube-proxy-r9pnm                           1/1     Running   0          159m
    kube-system                    kube-scheduler-k8s-master                  1/1     Running   0          159m
    kube-system                    tiller-deploy-6588db4955-wsxdt             1/1     Running   0          140m
    kubesphere-controls-system     default-http-backend-5d464dd566-vd8pr      1/1     Running   0          137m
    kubesphere-controls-system     kubectl-admin-6c664db975-95dbr             1/1     Running   0          137m
    kubesphere-monitoring-system   kube-state-metrics-566cdbcb48-69gqx        4/4     Running   0          136m
    kubesphere-monitoring-system   node-exporter-ntdbs                        2/2     Running   0          136m
    kubesphere-monitoring-system   node-exporter-sz5rb                        2/2     Running   0          136m
    kubesphere-monitoring-system   prometheus-k8s-0                           3/3     Running   1          135m
    kubesphere-monitoring-system   prometheus-k8s-system-0                    3/3     Running   1          135m
    kubesphere-monitoring-system   prometheus-operator-6b97679cfd-rfj48       1/1     Running   0          136m
    kubesphere-system              ks-account-596657f8c6-f6nfn                1/1     Running   0          137m
    kubesphere-system              ks-apigateway-78bcdc8ffc-95g9n             1/1     Running   0          137m
    kubesphere-system              ks-apiserver-5b548d7c5c-gkh5g              1/1     Running   0          137m
    kubesphere-system              ks-console-78bcf96dbf-kvfq5                1/1     Running   0          137m
    kubesphere-system              ks-controller-manager-696986f8d9-59fhp     1/1     Running   0          137m
    kubesphere-system              ks-installer-75b8d89dff-l855b              1/1     Running   0          139m
    kubesphere-system              openldap-0                                 1/1     Running   0          137m
    kubesphere-system              redis-6fd6c6d6f9-d5tn9                     1/1     Running   0          138m


     

    三、访问KubeSphere UI 

    使用IP:30880访问 KubeSphere UI 界面,默认的集群管理员账号为:admin,密码:P@88w0rd

    1.png

     

     

    登录成功后,效果如下:

    1.png

     

     

    点击平台管理-->监控中心

    1.png

     

     

     

     

    本文参考链接:

    https://www.cnblogs.com/cjsblog/p/12828639.html

    https://www.kubernetes.org.cn/7315.html


关键字