21 kubesphere安装部署

文章目录

      • 一、kubersphere
        • 1、KuberSphere简介
        • 2、 全栈的 Kubernetes 容器云 PaaS 解决方案
        • 3、为什么选择 KubeSphere ?
        • 4、 主要功能
      • 二、kubespshe 安装(KubeKey安装)
        • 1、环境配置
        • 2、配置软件依赖
        • 3、安装KubeSphere和kubernetes
        • 4、安装完成核验
        • 5、登陆系统
      • 三、Kubernetes可视化界面kubesphere
        • 1、kubesphere简介
        • 2、kubesphere安装
        • 3、安装helm
        • 4、部署KubeSphere
          • 1、开始安装
          • 2、检查安装日志
          • 3、查看pod运行状况
          • 4、访问kubesphere
        • 5、故障排查汇总

一、kubersphere

1、KuberSphere简介

1、linux 安装

2、kubernetes安装

官方文档

  • Linux 上的 All-in-one 安装
  • 创建企业空间、项目、帐户和角色
  • [KubeSphere v2.0 使用手册](KubeSphere v2.0 使用手册)

原文链接:KubeSphere v2.0 使用手册

KubeSphere 容器平台面向云原生应用的容器混合云

KubeSphere 愿景是打造一个以 Kubernetes 为内核的云原生分布式操作系统,它的架构可以非常方便地使第三方应用与云原生生态组件进行即插即用(plug-and-play)的集成,支持云原生应用在多云与多集群的统一分发和运维管理。

# 1、KubeSphere 是在目前主流容器调度平台 Kubernetes 之上构建的企业级分布式多租户容器平台(KubeSphere 多租户容器平台),提供简单易用的操作界面以及向导式操作方式。
# 2、解决 Kubernetes 本身存在的存储、网络、安全和易用性等痛点。KubeSphere提供企业级容器应用管理服务,支持更强大的功能和灵活的配置,满足企业复杂的业务需求(比如支持 Master 和 etcd 节点高可用、可视化 CI/CD 流水线、灰度发布等更为复杂的业务场景)。

2、 全栈的 Kubernetes 容器云 PaaS 解决方案

KubeSphere 是在 Kubernetes 之上构建的以应用为中心的多租户容器平台,提供全栈的 IT 自动化运维的能力,简化企业的 DevOps 工作流。
KubeSphere 提供了运维友好的向导式操作界面,帮助企业快速构建一个强大和功能丰富的容器云平台。

3、为什么选择 KubeSphere ?

KubeSphere 为企业用户提供高性能可伸缩的容器应用管理服务,旨在帮助企业完成新一代互联网技术驱动下的数字化转型,加速业务的快速迭代与交付,以满足企业日新月异的业务需求。

1、完全开源: 通过 CNCF 一致性认证的 Kubernetes 平台,100% 开源,由社区驱动与开发

2、简易安装: 支持部署在任何基础设施环境,提供在线与离线安装,支持一键升级与扩容集群

3、功能丰富: 在一个平台统一纳管 DevOps、云原生可观测性、服务网格、应用生命周期、多租户、多集群、存储与网络

4、模块化 & 可插拔: 平台中的所有功能都是可插拔与松耦合,您可以根据业务场景可选安装所需功能组件

  • 不同团队的受益

    实现从云端到数据中心自动化部署、扩容与升级集群

- 1、提高资源利用率,减少内部基础设施的成本支出
- 2、提供安全增强,支持多种存储与网络方案
- 3、为企业交付一个通过 CNCF 认证和可信赖的 Kubernetes 发行版
- 4、支持 Kubernetes 的多云与多集群管理,提供多云与多可用区的高可用
  • 开发者

    从繁琐的 YAML 编辑工作中解放,让开发者只需专注于业务开发

- 1、为开发者提供向导式的用户体验,降低上手云原生技术栈的学习曲线
- 2、内置常用的自动化部署环境,为应用(Java/NodeJs/Python/Go)部署提供定制化的容器运行环境
- 3、提供开箱即用的工具集,帮助开发者将代码快速构建为可运行的容器镜像,提高开发效率
- 4、提供应用商店和应用生命周期管理,缩短应用上线周期
  • 运维团队

    构建一站式企业级的 DevOps 架构与可视化运维能力

    - 1、提供从平台到应用维度的日志、监控、事件、审计、告警与通知,实现集中式与多租户隔离的可观测性
    - 2、简化应用的持续集成、测试、审核、发布、升级与弹性扩缩容
    - 3、为云原生应用提供基于微服务的灰度发布、流量管理、网络拓扑与追踪
    - 4、提供易用的界面命令终端与图形化操作面板,满足不同使用习惯的运维人员
    
  • 用户

    在 Kubernetes 上使用与运维应用变得极其简单

    - 1、通过应用商店一键部署与升级应用至 Kubernetes
    - 2、提供按需容器资源申请,支持设置容器的弹性伸缩(HPA),提升应用的可靠性与灵活性
    - 3、支持导入 Helm 应用仓库可视化编辑与部署应用
    - 4、应用商店将支持运营,提供针对应用的计量与计费(v3.x)
    

4、 主要功能

https://kubesphere.io/zh/

# 1、安装 Kubernetes 集群
支持在任何基础设施上部署 Kubernetes,提供在线与离线安装,支持添加 GPU 节点

# 2、Kubernetes 资源管理 
提供 Web 控制台对接 Kubernetes 原生 API 快速创建与管理 Kubernetes 资源,内置多维度的可观测性
 
# 3、多租户管理
提供统一的认证鉴权与细粒度的基于角色的授权系统,支持对接 AD/LDAP

# 4、支持多种存储与网络方案
支持 GlusterFS、Ceph、NFS、LocalPV,提供多个 CSI 插件对接公有云与企业级存储;提供面向物理机 Kubernetes 环境的负载均衡器 OpenELB,支持网络策略可视化,支持 Calico、Flannel、Cilium、Kube-OVN 等网络插件

二、kubespshe 安装(KubeKey安装)

1、环境配置

官方支持的操作系统及最低配置

操作系统 最低配置
Ubuntu 16.04, 18.04 2 核 CPU,4 GB 内存,40 GB 磁盘空间
Debian Buster, Stretch 2 核 CPU,4 GB 内存,40 GB 磁盘空间
CentOS 7.x 2 核 CPU,4 GB 内存,40 GB 磁盘空间
Red Hat Enterprise Linux 7 2 核 CPU,4 GB 内存,40 GB 磁盘空间
SUSE Linux Enterprise Server 15/openSUSE Leap 15.2 2 核 CPU,4 GB 内存,40 GB 磁盘空间

安装前最好保证环境是纯净环境,我这里是云服务器,重装了CentOS7.6系统

支持容器

使用KubeKey进行安装会默认安装最新容器,也可以在使用KubeKey进行安装前安装好指定容器
支持的容器 版本
Docker 19.3.8 +
containerd 最新版
CRI-O(试验版,未经充分测试) 最新版
iSula(试验版,未经充分测试) 最新版

Kubernetes依赖

KubeKey可以指定安装Kubernetes 和 KubeSphere ,但是不同版本的Kubernetes有不同的依赖要求
依赖项 Kubernetes 版本 ≥ 1.18 Kubernetes 版本 < 1.18
socat 必须 可选但建议
conntrack 必须 可选但建议
ebtables 可选但建议 可选但建议
ipset 可选但建议 可选但建议

2、配置软件依赖

# 1、第一步: 关闭防火墙
systemctl disable firewalld
systemctl stop firewalld
systemctl status firewalld
# 2、第二步:关闭swap分区
swapoff -a
echo "vm.swappiness=0" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
# 3、第三步:配置epel源
rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
# 4、第四步:更新yum
yum -y update
# 5、第五步:安装依赖组件
也就是上面的Kubernetes依赖里的内容,全部安装
yum install -y ebtables socat ipset conntrack

3、安装KubeSphere和kubernetes

使用KubeKey可以选择安装KubeSphere和kubernetes的其中一个,也可以全部安装

# 1、下载KubeKey
如果网络不好的小伙伴无法下载默认源,执行以下命令设置国内下载
export KKZONE=cn
# 2、下载KubeKey:
curl -sfL https://get-kk.kubesphere.io | VERSION=v2.2.1 sh -
# 3、给KubeKey添加可执行权限
chmod +x kk
# 4、安装KubeSphere和kubernetes
在安装前请先检查hostname,如果不符合规则会报以下错误
error: Pipeline[CreateClusterPipeline] execute failed: Module[InitKubernetesModule] exec failed: 
failed: [VM-20-8-centos] [AddWorkerLabel] exec failed after 5 retires: add worker label failed: Failed to exec command: sudo -E /bin/bash -c "/usr/local/bin/kubectl label --overwrite node VM-20-8-centos node-role.kubernetes.io/worker=" 
Error from server (NotFound): nodes "VM-20-8-centos" not found: Process exited with status 1
这时候就需要修改hostname,因为我们是单机安装就设置为master吧,执行以下命令
hostnamectl --static set-hostname master
设置完成后使用`hostnamectl status`命令进行核验
[root@master01 kubesphere]# hostnamectl status
   Static hostname: master01
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 241ae9d4dc04406abf2a9709f70b2a7f
           Boot ID: 39d25b17fdeb4e3b85a069f452539a9c
    Virtualization: vmware
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 5.4.236-1.el7.elrepo.x86_64
      Architecture: x86-64

# 5、安装KubeSphere和kubernetes:
./kk create cluster --with-kubernetes v1.22.10 --with-kubesphere v3.3.0

如果只需要安装KubeSphere或者kubernetes其中一个去掉–with的另一个就可以

4、安装完成核验

安装完成后执行以下命令查看安装结果

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

输出信息会显示 Web 控制台的 IP 地址和端口号,默认的 NodePort 是 30880。现在可以使用默认的帐户和密码 (admin/P@88w0rd) 通过 :30880 访问控制台。

5、登陆系统

在浏览器上访问ip+30880的地址出现以下页面

21 kubesphere安装部署_第1张图片

使用默认的帐户和密码 (admin/P@88w0rd)进行登陆,登陆后就可以探索KubeSphere了

21 kubesphere安装部署_第2张图片


但是真正使用k8s集群单机是不可以的,下篇文章是多节点集群的配置 

21 kubesphere安装部署_第3张图片

三、Kubernetes可视化界面kubesphere

【kubesphere官网】:集群要求高
【kubesphere安装教程】 :开源kuboard也不错,集群要求不高【轻量级】

1、kubesphere简介

KubeSphere是一款面向云原生设计的开源项目,在目前主流容器调度平台Kubernetes之上构建的分布式多租户容器管理平台,提供简单易用的操作界面以及向导式操作方式,在降低用户使用容器调度平台学习成本的同时,极大降低开发、测试、运维的日常工作的复杂度

2、kubesphere安装

kubesphere文档 : https://kubesphere.io/zh/

环境准备

# 1、Kubernetes 版本必须为 “1.15.x,1.16.x,1.17.x 或 1.18.x”;

# 2、确保您的计算机满足最低硬件要求:CPU > 1 核,内存 > 2 G;

# 3、在安装之前,需要配置 Kubernetes 集群中的默认存储类;

# 4、当使用 `--cluster-signing-cert-file` 和 `--cluster-signing-key-file` 参数启动时,在 kube-apiserver 中会激活 CSR 签名功能

# 5、有关在 Kubernetes 上安装 KubeSphere 的前提条件的详细信息,请参阅[kubesphere文档]

3、安装helm

下面我们需要在 master 节点安装 helm

Helm是Kubernetes的包管理器。包管理器类似于我们在 **Ubuntu** 中使用的 **apt**。**Centos** 中使用的 **yum** 或者**Python** 中的 **pip** 一样,能快速查找、下载和安装软件包。Helm由客户端组件helm和服务端组件Tiller组成,能够将一组K8S资源打包统一管理,是查找、共享和使用为Kubernetes构建的软件的最佳方式。
# 1、下载
[root@k8s-m-01 ~]# wget https://get.helm.sh/helm-v3.6.3-linux-amd64.tar.gz

# 2、解压并分发其他给机器 (如果没有做高可用则不需要分发)
[root@k8s-m-01 ~]# tar -xf helm-v3.3.4-linux-amd64.tar.gz 
[root@k8s-m-01 ~]# cd linux-amd64/
[root@k8s-m-01 ~]# for i in m1 m2 m3;do scp helm root@$i:/usr/local/bin/; done 
[root@k8s-m-01 ~]# mv linux-amd64/helm /usr/local/bin/ (如果不指定到/usr/local/bin/下会报错)
# 3、测试安装
[root@k8s-m-01 ~]# helm version
version.BuildInfo{Version:"v3.6.3", GitCommit:"d506314abfb5d21419df8c7e7e68012379db2354", GitTreeState:"clean", GoVersion:"go1.16.5"}
# 4、测试安装
[root@k8s-m-01 .config]# helm # 有内容输出即成功
| Operating System | Cache Path                | Configuration Path             | Data Path               |
|------------------|---------------------------|--------------------------------|-------------------------|
| Linux            | $HOME/.cache/helm         | $HOME/.config/helm             | $HOME/.local/share/helm |
| macOS            | $HOME/Library/Caches/helm | $HOME/Library/Preferences/helm | $HOME/Library/helm      |
| Windows          | %TEMP%\helm               | %APPDATA%\helm                 | %APPDATA%\helm          |
# 5、创建目录
[root@k8s-m-01 ~]# mkdir -p $HOME/.cache/helm
[root@k8s-m-01 ~]# mkdir -p  $HOME/.config/helm
[root@k8s-m-01 ~]# mkdir -p $HOME/.local/share/helm

4、部署KubeSphere

k8s集群的默认存储类部署

安装前

如果您的服务器无法访问 GitHub,则可以分别复制 kubesphere-installer.yaml 和 cluster-configuration.yaml 中的内容并将其粘贴到本地文件中。然后,您可以对本地文件使用 kubectl apply -f 来安装 KubeSphere。

同时查看k8s集群的默认存储类

[root@master01 ~]# kubectl get storageclass

如果没有默认存储类,那么就需要安装默认的存储类

因为我安装的是 nfs,所以在安装了 nfs 服务器启动

[root@master01 ~]# systemctl start nfs
1、开始安装

官网:https://github.com/kubesphere/ks-installer

如果您的服务器无法访问 GitHub,则可以分别复制 kubesphere-installer.yaml 和 cluster-configuration.yaml 中的内容并将其粘贴到本地文件中。然后,您可以对本地文件使用 kubectl apply -f 来安装 KubeSphere。
[root@master01 ~]# kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.3.0/kubesphere-installer.yaml
[root@master01 ~]# kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.3.0/cluster-configuration.yaml
2、检查安装日志
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-installer -o jsonpath='{.items[0].metadata.name}') -f
3、查看pod运行状况
[root@master01 ~]# kubectl get po -n kubesphere-system 
ks-console-5c5676fb55-5ffgb              1/1     Running            0               41m
ks-console-5c5676fb55-96fwx              1/1     Running            0               41m
ks-console-5c5676fb55-nkpvn              1/1     Running            0               41m
[root@master01 ~]# kubectl get svc/ks-console -n kubesphere-system
NAME         TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
ks-console   NodePort   10.98.135.216   <none>        80:30880/TCP   42m
4、访问kubesphere

ip:30880

5、故障排查汇总

# 一、kubesphere报这个错误
TASK [preinstall : KubeSphere | Stopping if StorageClass was not found] ********
ok: [localhost] => {
    "changed": false,
    "msg": "All assertions passed"
}
`解决`
# 1、修改sc为默认标识
 kubectl patch sc local -p '{"metadata": {"annotations": {"storageclass.beta.kubernetes.io/is-default-class": "true"}}}'
其中local为我的sc名称
或者在创建class时添加注解:
  metadata:
    annotations:
      storageclass.beta.kubernetes.io/is-default-class: "true"
# 二、无kubesphere svc服务
[root@master01 ~]# kubectl get svc/ks-console -n kubesphere-system
Error from server (NotFound): services "ks-console" not foun
`解决`
安装Kubernetes配置默认存储类
# 三、Error response from daemon: Get "https://quay.io/v2/": dial tcp: lookup quay
`解决`
[root@master01 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 114.114.114.114
nameserver 8.8.8.8  # 也配置dns可以只有8.8.8.8
# 四、当安装完成后遇到默认账户无法登录,看到account is not active相关错误提示时,需要检查ks-controller-manager的运行状态和日志。
`常见问题及解决方式如下`
[root@master01 ~]# kubectl -n kubesphere-system get ValidatingWebhookConfiguration users.iam.kubesphere.io -o yaml >> users.iam.kubesphere.io.yaml
[root@master01 ~]# kubectl -n kubesphere-system get secret ks-controller-manager-webhook-cert -o yaml >> ks-controller-manager-webhook-cert.yaml
# edit ca as pr
[root@master01 ~]# kubectl -n kubesphere-system apply -f ks-controller-manager-webhook-cert.yaml
[root@master01 ~]# kubectl -n kubesphere-system apply -f users.iam.kubesphere.io.yaml
# restart
[root@master01 ~]# kubectl -n kubesphere-system rollout restart deploy ks-controller-manager
# 五、request to http://ks-apiserver/oauth/token failed, reason: connect ECONNREFUSED 10.101.39.218:80
`解决`
[root@master01 kubesphere]# kubectl get po -n kubesphere-system
NAME                                     READY   STATUS             RESTARTS         AGE
ks-apiserver-6c6b5b9486-ptbg4            0/1     CrashLoopBackOff   10 (4m31s ago)   36m
ks-apiserver-6c6b5b9486-rnxkg            0/1     CrashLoopBackOff   10 (3m43s ago)   35m
ks-apiserver-6c6b5b9486-rt4px            0/1     CrashLoopBackOff   10 (3m59s ago)   36

# 把ks-apiserver的pod恢复就可以了

你可能感兴趣的:(运维,kubernetes,kubesphere)