kubeSphere install doc
关于LInux安装KubeSphere说明
1. KubeSphere 是什么
1.1. 官方解释
KubeSphere是一个分布式操作系统,提供以Kubernetes为核心的云原生堆栈,旨在成为第三方应用程序的即插即用架构,以促进其生态系统的发展。 KubeSphere还是一个多租户企业级容器平台,具有全栈自动IT操作和简化的DevOps工作流程。它提供了开发人员友好的向导Web UI,可帮助企业构建更健壮且功能丰富的平台,其中包括企业Kubernetes战略所需的最常用功能,例如Kubernetes资源管理,DevOps(CI / CD),应用程序生命周期管理、监控、日志记录、服务网格、多租户、报警和通知,存储和网络、自动定量、访问控制、GPU的支持等,以及多集群管理、网络策略、注册表管理,更多即将发布的安全增强特性。
KubeSphere提供了整合的视图,同时围绕Kubernetes集成了广泛的生态系统工具,并提供一致的用户体验以降低复杂性,并开发了上游Kubernetes中尚不可用的新功能,以减轻Kubernetes的痛苦之处,包括存储,网络 ,安全性和易用性。 KubeSphere不仅允许开发人员和DevOps团队在统一控制台中使用他们喜欢的工具,而且最重要的是,由于这些功能是可插拔和可选的,因此它们与平台松散地结合在一起。
Kubernetes平台,专为DevOps团队量身定制
KubeSphere,以应用为中心的容器平台
极简、易用、灵活、高效
1.2. 个人理解
KubeSphere,这是国内唯一一个开源的Kubernetes(k8s)发行版,它的开源不涉及任何商业意图,它不属于青云而属于社区,它极大地降低了使用Kubernetes的门槛,它的出现将加速中国企业向云原生迈进的步伐。 “发行版”的说法常用于Linux操作系统。比如,虽有Linux内核,而Ubuntu、CentOS等等叫做Linux发行版,对应的,Kubernetes就相当于内核,KubeSphere就是Kubernetes的发行版,正常人类是很难使用Linux内核和Kubenetes的,为了让大家用起来,要基于Linux内核和Kubernetes做很多周边配套,Linux和Kubenetes就好像一台光秃秃的汽车发动机,为了把它当车开,你起码得有车架子、轮胎、方向盘、刹车、……等等。 所以,开源KubeSphere的青云就像一个汽车厂,负责KubeSphere牌汽车各个组件的组装搭配,不过,这个汽车不需要花钱就能获取到,这就是青云开源KubeSphere的实质。它的意义在于加快了大家使用k8s发动机的进程,让大家都能开上KubeSphere牌汽车。 云原生能帮助企业做数字化转型,帮助企业用数字化转型获取竞争力。而KubeSphere可以让企业更快地上原生,开上汽车。
我觉得,读完以后,醍醐灌顶,茅塞顿开
我们使用Linux的各种发行版(比如:CentOS、Ubuntu等)与Linux内核交互,极大地降低了使用Linux的门槛,而且像Ubuntu还提供了特别漂亮的桌面版,图像界面式的操作使用起来更方便。
我们当然可以使用CMD命令行窗口同Windows系统交互,所有在图形界面上完成的操作都可以通过命令行完成,但是这种操作方式的门槛极高,不利于微软推行Windows桌面操作系统。
同样的,Kubenetes就相当于内核,而KubeSphere就相当于是Kubernetes的发行版。KubeSphere提供极简体验,向导式UI,极大的降低了使用Kubenetes的门槛。
记不住Kubenetes命令不要紧,不会写Dockerfile也没关系,使用KubeSphere图像界面以后一起都变得简单了,而且它是以应用为中心的,极大地解放了运维和开发人员的生产力。
KubeSphere就是Java编程界的Spring。想想看,用了Spring以后你不需要关心各种数据库的连接,各种各样的组件都帮你集成好了,拿来就用。KubeSphere也是一样,开箱即用。
2. 安装
话不多说,官方文档(中/英文版)都写的非常清楚,开始安装
2.1 资源准备
2.1.1硬件推荐配置
操作系统 | 最低要求 |
---|---|
Ubuntu 16.04, 18.04 | CPU:2 核,内存:4 G,磁盘空间:40 G |
CentOS 7.x | CPU:2 核,内存:4 G,磁盘空间:40 G |
Red Hat Enterprise Linux 7 | CPU:2 核,内存:4 G,磁盘空间:40 G |
SUSE Linux Enterprise Server 15/openSUSE Leap 15.2 | CPU:2 核,内存:4 G,磁盘空间:40 G |
以上的系统要求和以下的说明适用于没有启用任何可选组件的默认最小化安装。如果您的机器至少有 8 核 CPU 和 16 G 内存,则建议启用所有组件。有关更多信息,请参见启用可插拔组件。
2.1.2 节点要求
- 节点必须能够通过
SSH
连接。 - 节点上可以使用
sudo/curl/openssl
命令。
2.2 下载 KubeKey
代码语言:javascript复制curl -sfL https://get-kk.kubesphere.io | VERSION=v1.1.0 sh -
安装完成
执行以上命令会下载最新版 KubeKey (v1.1.0),您可以修改命令中的版本号下载指定版本。
如果您访问 GitHub/Googleapis 受限,先执行以下命令以确保您从正确的区域下载 KubeKey。
代码语言:javascript复制export KKZONE=cn
2.2.2 为 kk 添加可执行权限:
代码语言:javascript复制chmod x kk
2.3 开始安装
在本快速入门教程中,您只需执行一个命令即可进行安装,其模板如下所示:
代码语言:javascript复制./kk create cluster [--with-kubernetes version] [--with-kubesphere version]
若要同时安装 Kubernetes 和 KubeSphere,可参考以下示例命令:
代码语言:javascript复制./kk create cluster --with-kubernetes v1.20.4 --with-kubesphere v3.1.0
安装 KubeSphere v3.1.0 的建议 Kubernetes 版本:v1.17.9,v1.18.8,v1.19.8 以及 v1.20.4。如果不指定 Kubernetes 版本,KubeKey 将默认安装 Kubernetes v1.19.8。有关受支持的 Kubernetes 版本的更多信息,请参见支持矩阵。 一般来说,对于 All-in-One 安装,您无需更改任何配置。 如果您在这一步的命令中不添加标志
--with-kubesphere
,则不会部署 KubeSphere,KubeKey 将只安装 Kubernetes。 如果您添加标志--with-kubesphere
时不指定 KubeSphere 版本,则会安装最新版本的 KubeSphere。 KubeKey 会默认安装 OpenEBS 为开发和测试环境提供 LocalPV 以方便新用户。对于其他存储类型,请参见持久化存储配置。
执行该命令后,KubeKey 将检查您的安装环境,结果显示在一张表格中。有关详细信息,请参见节点要求和依赖项要求。输入 yes 继续安装流程。
2.4 安装完成
输入以下命令以检查安装结果。
代码语言:javascript复制kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f
输出信息会显示 Web 控制台的 IP 地址和端口号,默认的 NodePort 是 30880
。现在,您可以使用默认的帐户和密码
(admin/P@88w0rd
) 通过 :30880 访问控制台。
2.4.1 重设密码
登录至控制台后,您可以在服务组件中查看各个组件的状态。如果要使用相关服务,您可能需要等待部分组件启动并运行。您也可以使用kubectl get pod --all-namespaces
来检查 KubeSphere 相关组件的运行状况。
3. 在 Kubernetes 上最小化安装 KubeSphere
在 Kubernetes 上安装 KubeSphere 确保您的机器满足安装的前提条件之后,可以按照以下步骤安装 KubeSphere。
- 执行以下命令:
kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.1.0/kubesphere-installer.yaml
kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.1.0/cluster-configuration.yaml
- 检查安装日志:
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f
4. 遇到的问题
4.1 container in pod is not available
代码语言:javascript复制Error from server (BadRequest): container "installer" in pod "ks-installer-7d9fb945c7-6tnl9" is not available
检查安装日志~/kubesphere-all-v2.1.1/logs
有一个非常好用的命令是 journalctl -xefu kubelet
4.2 如何重启
代码语言:javascript复制kubectl rollout restart deploy -n kubeshere-system ks-installer
4.3 如何重启Kubernetes集群
我一直有个疑问,如果物理机或者Kubernetes的宿主机宕机或重启以后Kubernetes集群会自动重启吗?如果挂的是master所在的机器,很显然是不会的, 但如果是非master的节点的话不知道没试过。所以,Kubernetes集群的高可用就非常重要了。 ReplicationController确保在任何时候都运行指定数量的pod副本。换句话说,ReplicationController确保一个pod或一组同类的pod总是处于可用状态。
我忽略了Kubernetes有很强的自愈能力
自愈(自我修复):重新启动失败的容器,在节点死亡时替换和重新调度容器,杀死那些不响应用户定义的健康检查的容器,并且在它们准备好提供服务之前不会向客户端通知它们。
在后面安装KubeSphere可插拔的功能组件时,更改common.yaml配置文件后,不需要做什么操作,过一会儿会自动更新容器以应用这些改变。
代码语言:javascript复制kubectl get pods --all-namespaces
kubectl get pod -n <namespace>
kubectl logs <pod_name> -n <namespace>
kubectl delete pod <pod_name> -n <namespace>
# 查询systemd日志
journalctl -xefu kubelet
kubectl get services
kubectl get deployments
kubectl cluster-info
4.4 localhost.localdomain: conntrack is required.
解决方案:
代码语言:javascript复制yum install conntrack-tools