如何在 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 和服务。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
16天前
|
JSON Ubuntu 开发者
ubuntu 22安装lua环境&&编译lua cjson模块
通过上述步骤,可以在 Ubuntu 22.04 系统上成功安装 Lua 环境,并使用 LuaRocks 或手动编译的方式安装 lua-cjson 模块。本文详细介绍了每一步的命令和操作,确保每一步都能顺利完成,适合需要在 Ubuntu 系统上配置 Lua 开发环境的开发者参考和使用。
76 13
|
12天前
|
监控 关系型数据库 MySQL
Ubuntu24.04安装Librenms
此指南介绍了在Linux系统上安装和配置LibreNMS网络监控系统的步骤。主要内容包括:安装所需软件包、创建用户、克隆LibreNMS仓库、设置文件权限、安装PHP依赖、配置时区、设置MariaDB数据库、调整PHP-FPM与Nginx配置、配置SNMP及防火墙、启用命令补全、设置Cron任务和日志配置,最后通过网页完成安装。整个过程确保LibreNMS能稳定运行并提供有效的网络监控功能。
|
23天前
|
Ubuntu Linux Docker
Ubuntu22.04上Docker的安装
通过以上详细的安装步骤和命令,您可以在Ubuntu 22.04系统上顺利安装
390 12
|
2月前
|
Ubuntu 开发工具 git
Ubuntu安装homebrew的完整教程
本文介绍了如何在没有公网的情况下安装 Homebrew。首先访问 Homebrew 官网,然后通过阿里云的镜像克隆安装脚本,并创建普通用户进行安装。接着修改 `install.sh` 文件指向国内镜像,执行安装命令。最后配置环境变量并更换 Homebrew 源为国内镜像,确保安装顺利。
437 50
|
2月前
|
Ubuntu
ubuntu和debian 的安装包dpkg管理命令对安装包进行安装,查询,卸载
Ubuntu dpkg 软件包管理命令概览:安装、卸载、查看和配置软件包。包括解决依赖、强制卸载、列出及过滤已安装包、查看包详情等操作。
74 10
|
2月前
|
Ubuntu API 开发工具
PSOPT在Ubuntu22.04下的安装
通过上述步骤,可以在Ubuntu 22.04下成功安装并配置PSOPT。PSOPT是一个功能强大的工具,适用于解决各种最优控制问题。确保在安装前满足系统要求,并仔细按照步骤操作,可以避免大多数常见问题。通过MATLAB与PSOPT的结合,您可以更高效地处理复杂的控制问题,并获得准确的解决方案。
38 5
|
2月前
|
Ubuntu 网络协议 关系型数据库
超聚变服务器2288H V6使用 iBMC 安装 Ubuntu Server 24.04 LTS及后续系统配置
【11月更文挑战第15天】本文档详细介绍了如何使用iBMC在超聚变服务器2288H V6上安装Ubuntu Server 24.04 LTS,包括连接iBMC管理口、登录iBMC管理界面、配置RAID、安装系统以及后续系统配置等步骤。
242 4
|
3月前
|
Ubuntu Linux 测试技术
Linux系统之Ubuntu安装cockpit管理工具
【10月更文挑战第13天】Linux系统之Ubuntu安装cockpit管理工具
276 4
Linux系统之Ubuntu安装cockpit管理工具
|
2月前
|
消息中间件 Ubuntu Java
Ubuntu系统上安装Apache Kafka
Ubuntu系统上安装Apache Kafka
|
3月前
|
Ubuntu Linux
Ubuntu 16.04下无法安装.deb的解决方法
希望以上策略能有效协助您克服在Ubuntu 16.04中安装.deb文件时遇到的挑战。
82 0