如何在 Ubuntu 22.04 上安装 KubeSphere?

简介: 如何在 Ubuntu 22.04 上安装 KubeSphere?

Kubesphere 免费开源 Kubernetes 平台和 CNCF 验证的云原生应用程序管理,它是一个企业级 Kubernetes 容器平台,功能丰富,专为混合多云部署量身定制,默认情况下,Kubesphere 包括全栈自动化 IT 操作,并通过 DevOps 工作流程进行了简化,它可以部署到现有的 Kubernetes 集群或 Linux 发行版,或者也可以通过 KubeKey 使用 Kubesphere 设置 Kubernetes,KubeKey 是 Linux 的命令行工具,用于自动部署、更新和扩展 Kubernetes 集群。

Kubesphere 提供了一个直观的图形化 Web UI 来管理 Kubernetes 集群,它还带有可插入的 CI/CD 工具,如 jenkins,允许自动设置 CI/CD 管道。它还提供 Source-to-Image (S2I),用于从源代码自动构建可重现的容器镜像,以及 Binary-to-Image (B2I),用于从二进制文件(Jar、War、二进制文件)构建可重现的容器镜像。

这篇文章将指导如何在 Ubuntu 22.04 服务器上部署 Kubernetes 和 Kubesphere。我们将使用多个 Ubuntu 服务器进行此部署,并且将使用 Kubesphere 提供的 KubeKey 应用程序来自动部署 Kubernetes 集群和 Kubesphere。

先决条件

要学习并完成本教程,需要满足以下要求:

  • 三台运行 ubuntu 22.04 的 Linux 服务器,将使用一台服务器作为 Kubernetes 控制平面,另外两台服务器用作工作节点。
  • 具有 sudo/root 管理员权限的非 root 用户。

设置主机和用户

在安装 Kubernetes 和 Kubesphere 之前,必须设置/etc/hosts文件并在所有服务器上使用 sudo password-less 创建一个新用户,所以请务必在所有 Ubuntu 服务器上运行以下命令。

打开文件/etc/hosts

sudo nano /etc/hosts

将服务器 IP 地址和主机名的详细信息添加到文件中。

192.168.5.35 master master 
192.168.5.121 node1 node1 
192.168.5.122 node2 node2

保存文件,完成后关闭编辑器。

接下来,输入以下命令创建一个名为ubuntu的新用户,并为新用户ubuntu设置密码。出现提示时,输入您的密码并重复。

sudo useradd -m -s /bin/bash ubuntu 
sudo passwd ubuntu

最后,运行以下命令以允许ubuntu用户在没有密码的情况下执行sudo,这里的ubuntu用户将用于安装包依赖,所以你必须确保用户可以成为root而不需要密码。

cat <<EOF | sudo tee /etc/sudoers.d/ubuntu
Defaults:ubuntu !fqdn
Defaults:ubuntu !requiretty
ubuntu ALL=(ALL) NOPASSWD: ALL
EOF

配置/etc/hosts文件并创建ubuntu用户后,接下来将为用户ubuntu设置无密码 SSH 身份验证。

设置基于 SSH 密钥的身份验证

在本节中,将为用户ubuntu设置无密码 SSH 身份验证,所以安装 Kubernetes 和 Kubesphre 的场景是来自master服务器,并且将自动完成 对node1 和node2的安装。

在master服务器上,输入以下命令以用户ubuntu登录,然后使用ssh-keyge n命令生成一个新的 SSH 密钥对,如下所示,完成后,SSH 公钥和私钥将存储在“ ~/.ssh ”目录中。

su - ubuntu 
ssh-keygen -t ed25519

接下来,输入以下命令将 SSH 公钥从“主”服务器发送到将用于 Kubernetes 和 Kubesphre 安装的所有节点。

ssh-copy-id ubuntu@master 
ssh-copy-id ubuntu@node1 
ssh-copy-id ubuntu@node2

输入yes以接受服务器的 SSH 指纹,然后在出现提示时输入用户ubuntu的密码。

下面是将 SSH 公钥添加到master服务器的本地主机时的输出。

下面是将 SSH 公钥添加到node1服务器时的输出。

下面是将 SSH 公钥添加到node2服务器时的输出。

添加并上传 SSH 公钥后,您现在可以通过ubuntu用户连接到所有服务器,无需密码验证。

在下一节中,您将验证并确保您可以通过无密码的ubuntu用户连接到所有节点/服务器,然后安装一些依赖包。

安装依赖

到这里已经将 SSH 公钥从master服务器上传到node1和node2服务器,现在您将确保您可以通过ubuntu用户使用 SSH 无密码身份验证连接到两台服务器,并为 Kubernetes 和 Kubesphere 安装基本依赖项。

在master服务器上,输入以下命令来更新和刷新 Ubuntu 包索引,并通过下面的apt install命令安装一些包依赖项。

sudo apt update 
sudo apt install curl socat conntrack ebtables ipset 

ssh-keyscan -H master >> ~/.ssh/known_hosts

出现提示时,输入 y 确认并按 ENTER 继续。

接下来,通过下面的ssh命令连接到node1服务器,执行该命令后,应该无需密码验证即可登录到node1。

ssh ubuntu@node1

现在输入以下 apt 命令来更新和刷新 Ubuntu 包索引,然后,安装一些基本的包依赖项,出现提示时输入 y,然后按 ENTER 继续。

sudo apt update 
sudo apt install curl socat conntrack ebtables ipset

最后,通过下面的ssh命令连接到node2服务器。

ssh ubuntu@node2

连接后,输入以下命令更新存储库包索引,然后,通过apt install命令安装一些依赖包。

sudo apt update 
sudo apt install curl socat conntrack ebtables ipset

出现提示时输入 y,然后按 ENTER 继续。

此时,您已经为 Kubernetes 和 Kubesphre 安装配置了服务器,在下一节中,将下载用于初始化 Kubernetes 集群和安装 Kubesphere 的 KubeKey 二进制文件。

在主节点上下载 KubeKey

在本节中,将把 KubeKey 二进制文件下载到“主”服务器。KubeKey 是一个单一的二进制文件,允许您部署 Kubernetes 集群,和/或使用 KubeSphere 管理仪表板。它还支持云原生附加组件、多节点和 HA(高可用性)。

输入以下命令将 KubeKey 的二进制文件下载到您当前的工作目录。该过程完成后,您应该会在目录中看到文件“kk”。

curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.2 sh -

现在运行以下命令使文件kk可执行。

chmod +x kk

然后,执行二进制文件kk以验证当前版本和列表在 KubeKey 上的可用参数。

./kk version
./kk help

下面是一个类似的输出,将打印在您的终端屏幕上。

KubeKey 下载完成后,接下来您将通过 KubeKey 开始配置 Kubernetes 和 Kubesphere 部署。

创建 Kubernetes 和 Kubesphere 部署配置

KubeKey 可用于部署 Kubernetes-only 部署或与 KubeSphere 一起部署。它还支持单 Kubernetes 部署和多节点部署。

对于多节点 Kubernetes 和 Kubesphre 部署,您需要生成一个 YAML 脚本来定义服务器的配置。

执行以下kk命令以生成新的 YAML 配置。在此示例中,您将生成一个新的 YAML 脚本deployment-kubesphre.yml并将 Kubernetes 版本指定为 v1.24.2 和 Kubesphere v3.3.1。

./kk create config -f deployment-kubesphre.yml --with-kubernetes v1.24.2 --with-kubesphere v3.3.1

您应该会看到诸如“成功生成 KubeKey 配置文件之类的输出。

现在使用以下 nano 编辑器命令 打开 YAML 文件deployment-kubesphre.yml.

nano deployment-kubesphre.yml

更改参数metadata: testdeployment中的集群名称,并更改详细主机的 IP 地址、用户和用于登录到目标服务器的私钥。最后,在roleGroup上,指定将用作控制平面和工作节点的主机。

apiVersion: kubekey.kubesphere.io/v1alpha2 
kind: Cluster 
metadata: 
  name: testdeployment 
spec: 
  hosts: 
  - {name: master, address: 192.168.5.35, internalAddress: 192.168.5.35, user: ubuntu, privateKeyPath: "~/.ssh /id_ed25519"} 
  - {name: node1, address: 192.168.5.121, internalAddress: 192.168.5.121, user: ubuntu, privateKeyPath: "~/.ssh/id_ed25519"} - {name: node2, address: 192.168.5.122, 
  internalAddress : 192.168.5.122, user: ubuntu, privateKeyPath: "~/.ssh/id_ed25519"} 
  roleGroups: 
    etcd: 
    - master 
    control-plane: 
    - master 
    worker: 
    - node1 
    - node2

完成后保存文件并退出编辑器。

对于此示例,您将使用三个不同的 Ubuntu 服务器创建一个名为“testdeployment”的新 Kubernetes 集群。

  • master作为 etcd 和控制平面。
  • node1node2将用作工作节点。

要将所有要求安装到目标服务器,您将使用 SSH 并以用户ubuntu的身份使用私钥~/.ssh/id_ed25519登录。此用户在 visudo 中配置为无密码。

生成和配置 YAML 文件并构建 Kubernetes 和 Kubesphre 部署后,转到以下步骤开始部署。

部署 Kubernetes 和 Kubesphere

在本节中,您将通过 KubeKey 和 YAML 脚本deployment-kubesphre.yml部署具有多节点架构的 Kubernetes 和 Kubesphre 。

执行下面的 Kubekey kk 二进制文件以使用 YAML 文件deployment-kubesphre.yml启动 Kubernetes 和 Kubesphere 部署。

./kk create cluster -f deployment-kubesphre.yml

首先,KubeKey 将检查 Kubernetes 安装的详细要求。成功后,系统将提示您确认安装。输入 yes 并按 ENTER 继续。

完成部署需要大约 5-10 分钟的时间。完成后,您应该会在终端上看到类似于此的输出。此外,您将获得可用于登录 Kubesphere 的默认管理员用户和密码。

现在打开您的网络浏览器并访问“主”服务器 IP 地址和端口“30880”,您应该会看到 Kubepshre 登录页面。

键入用户admin和默认密码P@88w0rd,然后单击“登录”。

登录后,系统会要求您更改 Kubepshre 用户admin的默认密码。输入您的新密码并点击提交。

完成后,您应该会看到 Kubesphere 管理仪表板。在仪表板页面上,您应该可以看到当前版本的 Kubesphere v3.3.1,可用的 Kubernetes 集群为 1。

接下来,单击左上角的平台菜单,然后选择集群管理。

以下是您安装了多个 Ubuntu 服务器、服务器master、node1和node2的 Kubernetes 集群的详细信息。

现在单击“节点”菜单以获取有关 Kubernetes 集群上可用节点的详细信息。下面你可以看到 Kubernetes 集群上有三个不同的节点。主服务器同时用作控制平面和工作节点。

现在单击“系统组件”以获取 Kubernetes 和 Kubesphere 部署中已安装组件的详细信息。您可以看到组件的三个不同类别,即Kubesphere、Kubernetes和Monitoring。

接下来,返回“主”服务器的终端会话并运行下面的kubectl命令以获取 Kubernetes 集群上的可用节点列表。

kubectl get nodes

您应该会收到类似这样的输出 - Kubernetes 集群上有三个可用节点,用作控制平面的主节点,以及用作工作节点的 node1 和 node2。

输入以下命令以获取有关 Kubernetes 集群上每个节点的详细信息。

kubectl describe node

您可以在下面看到主服务器上 Kubernetes 控制平面的详细信息。

以下是node1服务器上工作节点的详细信息。

下面是node2服务器上工作节点的详细信息。

最后,输入以下命令以获取在 Kubernetes 集群上运行的 pod 列表。

kubectl get pods --all-namespaces

在以下输出中,您可以看到Kubernetes 集群上可用的多个命名空间kube-system、kubesphere-system、kubesphere-control-system和kubesphere-monitoring-system,所有 pod 都在运行.

至此,您已经部署了具有多个 Ubuntu 服务器节点的 Kubernetes 集群和 Kubesphere。您还访问了 Kubesphere 管理仪表板并更改了默认管理员密码。

考虑到这一点,您现在可以将应用程序部署到 Kubernetes 和 Kubesphere。在下一步中,您会将简单的 Nginx Web 服务器部署到 Kubernetes 以确保您的 Kubernetes 和 Kubesphere 安装成功。

将 Pod 部署到 Kubernetes 和 Kubesphere

在此示例中,您将把 Nginx pod 部署到 Kubernetes 集群和 Kubesphere。

运行以下命令为 Nginx Web 服务器创建新的部署。在此示例中,我们将基于具有两个副本的 图像nginx:alpine创建新的 Nginx Pod。

kubectl create deployment nginx --image=nginx:alpine --replicas=2

现在创建一个新的服务类型“NodePort”,它将使用以下 kubectl 命令公开 Nginx 部署。此命令将创建一个名为nginx的新 Kubernetes 服务,类型为NodePort,并为 Pod 公开端口80

kubectl create service nodeport nginx --tcp=80:80

接下来,运行以下 kubectl 命令来检查 Kubernetes 集群上正在运行的 pod 列表。您应该会看到两个 Nginx pod 正在运行。

kubectl get pods

现在使用以下命令检查 Kubernetes 上的可用服务列表。您应该看到nginx服务类型 NodePort在 Kubernetes 主机上公开了端口80和端口32241。服务 NodePort 将始终公开 Kubernetes 主机(工作节点)上 xxx-xxxx 范围之间的端口。

kubectl get svc

运行下面的 curl 命令以访问您的 Nginx 部署。

curl 10.233.14.102
curl node1:32241
curl node2:32241

下面是在master服务器上公开的 Nginx pod index.html 页面的输出。

下面是来自node1的 index.html 源代码的输出。

下面是来自node2的 index.html 代码。

现在回到 Kubesphere 管理仪表板。单击应用程序工作负载,然后单击工作负载。您会看到名为nginx的部署可用于两个正在运行的 pod。

单击nginx部署以获取有关您的部署的详细信息。您应该看到nginx部署带有两个副本,并且这两个 pod 的副本正在运行。

接下来,单击服务菜单以获取 Kubernetes 集群上可用的服务列表。您应该会在集群上 看到名为nginx和Kubernetes的服务可用。

单击服务nginx以获取有关该服务的详细信息。下面是一个类似的页面,将显示在您的 Kubesphere 仪表板上。

这样,您现在已经完成了将 Nginx pod 部署到 Kubernetes 集群并从 kubesphere 管理仪表板验证了部署的详细信息。

结论

在本教程中,主要介绍了在多个 Ubuntu 22.04 服务器上部署了 Kubernetes 集群和 Kubesphre,使用 Kubesphere 开发的名为“KubeKey”的自动化工具部署了 Kubernetes。

我们还介绍了如何安装 Kubesphere 并将其配置为 Kubernets Web 管理仪表板,以及Kubesphere 的基本用法,用于查看 Kubernetes 集群和部署、pod 和服务。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
30天前
|
Ubuntu 安全 iOS开发
Nessus Professional 10.10 Auto Installer for Ubuntu 24.04 - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for Ubuntu 24.04 - Nessus 自动化安装程序
113 5
|
1月前
|
NoSQL Ubuntu MongoDB
在Ubuntu 22.04上安装MongoDB 6.0的步骤
这些步骤应该可以在Ubuntu 22.04系统上安装MongoDB 6.0。安装过程中,如果遇到任何问题,可以查阅MongoDB的官方文档或者Ubuntu的相关帮助文档,这些资源通常提供了解决特定问题的详细指导。
191 18
|
2月前
|
Ubuntu 安全 关系型数据库
安装MariaDB服务器流程介绍在Ubuntu 22.04系统上
至此, 您已经在 Ubuntu 22.04 系统上成功地完成了 MariadB 的标准部署流程,并且对其进行基础但重要地初步配置加固工作。通过以上简洁明快且实用性强大地操作流程, 您现在拥有一个待定制与使用地强大 SQL 数据库管理系统。
201 18
|
2月前
|
Ubuntu 安全 关系型数据库
安装MariaDB服务器流程介绍在Ubuntu 22.04系统上
至此, 您已经在 Ubuntu 22.04 系统上成功地完成了 MariadB 的标准部署流程,并且对其进行基础但重要地初步配置加固工作。通过以上简洁明快且实用性强大地操作流程, 您现在拥有一个待定制与使用地强大 SQL 数据库管理系统。
215 15
|
2月前
|
存储 Ubuntu iOS开发
在Ubuntu 22.04系统上安装libimobiledevice的步骤
为了获取更多功能或者解决可能出现问题,请参考官方文档或者社区提供支持。
146 14
|
2月前
|
Ubuntu 安全 关系型数据库
安装与配置MySQL 8 on Ubuntu,包括权限授予、数据库备份及远程连接指南
以上步骤提供了在Ubuntu上从头开始设置、配置、授权、备份及恢复一个基础但完整的MySQL环境所需知识点。
374 7
|
2月前
|
消息中间件 人工智能 运维
Ubuntu环境下的 RabbitMQ 安装与配置详细教程
本文聚焦在Ubuntu下RabbitMQ安装与配置教程,旨在帮助读者快速构建稳定可用的消息队列服务。
|
3月前
|
XML Ubuntu Java
如何在Ubuntu系统上安装和配置JMeter和Ant进行性能测试
进入包含 build.xml 的目录并执行:
186 13
|
3月前
|
Ubuntu 关系型数据库 MySQL
Ubuntu 22.04.1上安装MySQL 8.0及设置root密码的注意事项
这些是在Ubuntu 22.04.1 系统上安装MySQL 8.0 及设置root密码过程中必须考虑的关键点。正确的遵循这些步骤可确保MySQL的安装过程既顺利又安全。
690 20
|
3月前
|
Ubuntu Linux
如何在 Ubuntu 服务器上安装桌面环境(GUI)
如果你有任何问题,请在评论区留言。你会在服务器上使用 GUI 吗?参照本文后你遇到了什么问题吗?
400 0