1、linux 安装
2、kubernetes安装
官方文档
原文链接:KubeSphere v2.0 使用手册
KubeSphere 容器平台面向云原生应用的容器混合云
KubeSphere 愿景是打造一个以 Kubernetes 为内核的云原生分布式操作系统,它的架构可以非常方便地使第三方应用与云原生生态组件进行即插即用(plug-and-play)的集成,支持云原生应用在多云与多集群的统一分发和运维管理。
# 1、KubeSphere 是在目前主流容器调度平台 Kubernetes 之上构建的企业级分布式多租户容器平台(KubeSphere 多租户容器平台),提供简单易用的操作界面以及向导式操作方式。
# 2、解决 Kubernetes 本身存在的存储、网络、安全和易用性等痛点。KubeSphere提供企业级容器应用管理服务,支持更强大的功能和灵活的配置,满足企业复杂的业务需求(比如支持 Master 和 etcd 节点高可用、可视化 CI/CD 流水线、灰度发布等更为复杂的业务场景)。
KubeSphere 是在 Kubernetes 之上构建的以应用为中心的多租户容器平台,提供全栈的 IT 自动化运维的能力,简化企业的 DevOps 工作流。
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)
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 等网络插件
官方支持的操作系统及最低配置
操作系统 | 最低配置 |
---|---|
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 | 可选但建议 | 可选但建议 |
# 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
使用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的另一个就可以
安装完成后执行以下命令查看安装结果
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
访问控制台。
在浏览器上访问ip+30880的地址出现以下页面
使用默认的帐户和密码 (admin/P@88w0rd
)进行登陆,登陆后就可以探索KubeSphere了
但是真正使用k8s集群单机是不可以的,下篇文章是多节点集群的配置
【kubesphere官网】:集群要求高
【kubesphere安装教程】 :开源kuboard也不错,集群要求不高【轻量级】
KubeSphere是一款面向云原生设计的开源项目,在目前主流容器调度平台Kubernetes之上构建的分布式多租户容器管理平台,提供简单易用的操作界面以及向导式操作方式,在降低用户使用容器调度平台学习成本的同时,极大降低开发、测试、运维的日常工作的复杂度
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文档]
下面我们需要在 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
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
官网: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
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-installer -o jsonpath='{.items[0].metadata.name}') -f
[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
ip:30880
# 一、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恢复就可以了