华为云 Flexus 云服务器 X 实例之 openEuler 系统下搭建 k3s 轻量级 kubernetes 环境

博主:旭日财富者旭日财富者 2025-02-23 5013

前言

华为云 Flexus 云服务器 X 实例以其出色的性能和高度的灵活性,成为中小企业及开发者构建云基础设施的理想选择。鉴于其卓越的计算能力和广泛的适应性,本文将指导如何在基于 openEuler 操作系统的 Flexus X 实例上部署 k3s——由 Rancher Labs 打造的一款轻量级 Kubernetes 发行版,以此来增强服务器的可扩展性和自动化管理能力,满足更加多元化的应用需求。通过这一部署,不仅能够充分发挥 Flexus X 实例的强大功能,还能为用户提供一个高效、稳定且易于管理的容器化应用运行环境。

一、Flexus 云服务器 X 实例介绍

1.1 Flexus 云服务器 X 实例简介

·官网地址:华为云Flexus云服务器X实例

华为云 Flexus 云服务器 X 实例是新一代面向中小企业和开发者的柔性算力云服务器。它能够智能感知业务负载的变化,自动调整资源配置。这款服务器特别适用于中低负载的应用场景,例如电商直播、企业网站建设、开发测试环境、游戏服务器以及音视频服务等。X 实例的设计理念旨在为用户提供更加灵活和高效的计算资源管理方式。通过智能调整,它可以更好地满足不同业务的需求,提高资源利用率。

wKgZPGdtLGeAThi6AACZ1u9eklg664.png

1.2 Flexus 云服务器 X 实例特点

·提供丰富的公共镜像:Flexus 云服务器 X 实例提供多种公共镜像供用户选择,方便快速部署各种应用和服务。

·可灵活自定义 vCPU 内存配比:用户可以根据自己的需要灵活调整虚拟 CPU 和内存的配比,以满足不同场景的需求。

·智能感知业务动态升降配:Flexus 云服务器 X 实例能够智能感知业务的负载情况,并根据需要自动升降配,以满足业务的需求,提高系统的稳定性和性能。

·负载范围更高:相对于 Flexus 应用服务器 L 实例,Flexus 云服务器 X 实例能够处理更高的负载,适用于更复杂和繁忙的场景。

1.3 Flexus 云服务器 X 实例使用场景

Flexus 云服务器 X 实例针对不同的使用场景展现出其独特的优势:

1.电商直播:利用 X 实例搭建电商交易平台,可以有效应对电商市场的瞬息万变,从容处理业务压力波动,确保交易过程顺畅无阻。

2.企业建站:面向博客、论坛和企业门户等应用场景,X 实例帮助企业高效传播价值信息,促进信息共享与交流,支持构建多功能传播和交互平台。

3.个人开发测试:开发者在开发和测试过程中所需的环境资源可以通过 X 实例便捷获取,不仅提高了搭建效率,而且降低了成本。

4.游戏服务器:适用于搭建游戏后台服务器,强大的计算能力可以轻松应对大量玩家同时在线的情况,同时支持平滑扩容,快速应对玩家数量增长的需求,以及提供出色的网络加速能力以提升用户体验。

二、K3s 介绍

2.1 K3s 简介

K3s 是 Rancher Labs 推出的一个轻量级的 Kubernetes 发行版。它被设计用于在资源有限的环境中部署和运行 Kubernetes,如边缘计算设备、嵌入式系统物联网设备等。

2.2 K3s 主要特点

·轻量级:K3s 的二进制文件只有不到 100 MB 的大小,内存占用量仅为正常 Kubernetes 的一半。它适用于资源有限的设备和环境。

·简化安装:K3s 的安装过程非常简单,只需运行一个 shell 脚本即可将 Kubernetes 集群部署在任何机器上,而无需额外配置和复杂的设置。

·自包含:K3s 所有的组件都打包在一个二进制文件中,包括 Kubernetes 控制平面、容器运行时和存储插件等。这样可以简化部署和管理的流程,并降低系统的复杂性。

·兼容性:尽管 K3s 是一个精简版的 Kubernetes,但它仍然与标准的 Kubernetes API 兼容。这意味着你可以使用标准的 Kubernetes 工具和命令行界面与 K3s 进行交互。

·支持多种应用场景:K3s 可以用于各种不同的应用场景,包括边缘计算、物联网设备、持续集成和开发环境等。它的轻巧性和易用性使得部署和管理 Kubernetes 集群变得更加简单和灵活。

2.3 k3s 的硬件要求

K3s 的最低硬件要求和推荐硬件配置如下所示:

2.4 单节点 k3s-server 架构

以下为单节点 k3s-server 架构,本次实践环境为部署单机 k3s 环境。

三、本次实践介绍

3.1 本次实践简介

1.本次实践为个人测试学习环境,旨在快速部署应用,生产环境请谨慎;2.本次实践环境为华为云 Flexus 云服务器 X 实例,使用的操作系统为 openEuler 22.03 LTS;3.本次实践在 openEuler 系统环境下搭建 k3s 轻量级 kubernetes 单机环境。

3.2 本次环境规划

四、远程连接华为云 Flexus 云服务器 X 实例

4.1 购买 Flexus 云服务器 X 实例

进入华为云官网:https://activity.huaweicloud.com/,登录自己的华为云账号,进入华为云首页。

·镜像选择:本次实践使用 openEuler 作为公共镜像,请根据实际需求自定义选择合适的操作系统镜像。

·镜像切换说明:参考的公共镜像原为 Huawei Cloud EulerOS,但本次实践中已切换至 openEuler。

·基础配置参考:购买时可参考以下基础配置进行选择。

1.计费模式:包年/包月,这里选择此模式;2.区域:华北—北京四,可用区:随机即可;3.实例规格:关闭性能模式,选择自定义,4vCPUs | 12GiB;4.镜像:公共镜像,Huawei Cloud EulerOS,版本,Huawei Cloud EulerOS 2.0 Standard 64 bit(10GiB);5.应用加速:这里选择不加速;6.存储:系统盘,通用型 SSD100G;7.网络:选择默认即可;8.安全组:选择默认即可;9.弹性公网 IP:选择“现在购买”,全动态 BGP,带宽 3Mbit/s;10.云服务器名称:可自定义设置,这里选择默认的名称;11.登录凭证:自定义设置密码;12.云备份:暂不购买;其余配置默认即可。

·确认配置及购买:在确认配置页面仔细检查 Flexus 云服务器 X 实例的各项设置,确保无误后点击“立即购买”,完成付款流程即可成功购买。

wKgZPGdtLGiAKPaYAACSv3dTTQg364.png

4.2 查看 Flexus 云服务器 X 实例状态

进入华为云 Flexus 云服务的控制台,选择 Flexus 云服务器 X 实例,可以看到已经正在运行的 Flexus 云服务器 X 实例。

wKgZO2dtLGmAVkRlAACUwX4ATBs482.png

4.3 使用 Xshell 远程连接

·复制 Flexus 云服务器 X 实例的弹性公网 IP 地址

wKgZPGdtLGmAVOWLAACUXjIeuf4287.png

·主要填写 Flexus 云服务器 X 实例的弹性公网 IP 地址,输入其登录用户和密码,连接即可。

wKgZO2dtLGqAMlVsAAFCkzHErbE638.png

wKgZPGdtLGqAF2MvAAAjJk3vwy8470.png

4.4 检查操作系统版本

检查 Flexus 云服务器 X 实例的操作系统版本,本次实践选择的版本为 openEuler 22.03 LTS

[root@flexusx-51a1 ~]# cat /etc/os-releaseNAME="openEuler"VERSION="22.03 LTS"ID="openEuler"VERSION_ID="22.03"PRETTY_NAME="openEuler 22.03 LTS"ANSI_COLOR="0;31"

4.5 检查内核版本

检查当前操作系统的内核版本,当前内核版本为 5.10.0-60.109.0.136.oe2203.x86_64。

[root@flexusx-51a1 ~]# uname -r5.10.0-60.109.0.136.oe2203.x86_64

五、环境准备工作

5.1 关闭防火墙与 selinux

·执行以下命令,关闭防火墙。

systemctl stop firewalld && systemctl disable firewalld

·关闭 selinux

setenforce 0sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

5.2 关闭 Swap

在部署 k3 之前,我们需要关闭 swap(交换分区或交换文件)。

·临时关闭 swap

swapoff -a

·永久关闭 swap

sed -ri 's/.*swap.*/#&/' /etc/fstab

5.3 启用 IPv4 数据包转发

执行以下命令,查看 net.ipv4.ip_forward 的值是否设置为1。

[root@flexusx-51a1 ~]# sysctl net.ipv4.ip_forwardnet.ipv4.ip_forward = 1

如果未启用,则需要手动启用 IPv4 数据包转发。

cat <

sudo sysctl --system

5.4 时钟同步(可选)

我们使用华为云 Flexus 云服务器 X 实例的 openEuler 镜像,系统自动为我们配置了时间同步,

systemctl status chronyd

wKgZO2dtLGqACY6YAAAvzQBf4gg139.png

如果未安装 chronyd 服务,使用以下命令安装。

yum install chrony -ysystemctl start chronydsystemctl enable chronyd

六、部署 k3s 环境

6.1 安装 k3s

直接使用国内镜像源方式,一键安装 k3s 环境。

curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s -

wKgZPGdtLGqARQnyAAAyBjXH1DY685.png

6.2 检查 kubectl 等工具版本

k3s 一键安装完毕后,将安装其他实用程序,包括 kubectl、crictl、ctr、k3s-killall.sh 和 k3s-uninstall.sh。

·检查 kubectl 版本,当前安装的版本为 v1.30.4+k3s1

[root@flexusx-51a1 k3s]# kubectl versionClient Version: v1.30.4+k3s1Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3Server Version: v1.30.4+k3s1

·检查 crictl 版本,当前安装的版本为 0.1.0。

[root@flexusx-51a1 k3s]# crictl versionVersion: 0.1.0RuntimeName: containerdRuntimeVersion: v1.7.20-k3s1RuntimeApiVersion: v1

·检查 ctr 版本,当前安装的版本为 1.6.32

[root@flexusx-51a1 k3s]# ctr versionClient:Version: 1.6.32Revision: 8b3b7ca2e5ce38e8f31a34f35b2b68ceb8470d89Go version: go1.21.10Server:Version: 1.6.32Revision: 8b3b7ca2e5ce38e8f31a34f35b2b68ceb8470d89UUID: c735387d-12b0-40fb-a0ae-60ca5a3a3c59

·查看 K3S 卸载脚本位置

[root@flexusx-51a1 k3s]# which k3s-killall.sh/usr/local/bin/k3s-killall.sh[root@flexusx-51a1 k3s]# which k3s-uninstall.sh/usr/local/bin/k3s-uninstall.sh

6.3 查看 k3s 配置文件

默认 k3s 集群的配置文件位置在:/etc/rancher/k3s/k3s.yaml,由 K3s 安装的 kubectl 将自动使用该文件。

[root@flexusx-51a1 k3s]# ls /etc/rancher/k3s/k3s.yaml/etc/rancher/k3s/k3s.yaml

6.4 检查节点状态

由于是单机部署 k3s 集群,当前只有 k8s-server 节点,可以看到当前使用的容器运行时为 containerd。

[root@flexusx-51a1 k3s]# kubectl get nodes -owideNAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIMEflexusx-51a1 Ready control-plane,master 11m v1.30.4+k3s1 192.168.0.169 openEuler 22.03 LTS 5.10.0-60.109.0.136.oe2203.x86_64 containerd://1.7.20-k3s1

6.5 检查系统 pod 状态

执行以下命令,检查系统 pod 状态。

[root@flexusx-51a1 ~]# kubectl get pods -ANAMESPACE NAME READY STATUS RESTARTS AGEkube-system coredns-576bfc4dc7-qslbt 1/1 Running 0 10hkube-system helm-install-traefik-crd-mttv8 0/1 Completed 0 10hkube-system helm-install-traefik-pj458 0/1 Completed 1 10hkube-system local-path-provisioner-6795b5f9d8-ncz9c 1/1 Running 0 10hkube-system metrics-server-557ff575fb-6ld6f 1/1 Running 0 10hkube-system svclb-traefik-36590967-z5zlr 2/2 Running 0 10hkube-system traefik-5fb479b77-rllb5 1/1 Running 0 10h

七、配置镜像源

7.1 配置镜像源

在/etc/rancher/k3s/registries.yaml 文件中,修改镜像源。

vim /etc/rancher/k3s/registries.yaml

我们配置 Docker 的公共仓库镜像源,私有镜像仓库可自行配置。

mirrors:"docker.io":endpoint:- ""- "https://mirror.ccs.tencentyun.com"- "https://hub-mirror.c.163.com"- "https://mirror.baidubce.com""ccr.ccs.tencentyun.com":endpoint:- "https://ccr.ccs.tencentyun.com""registry.cn-hangzhou.aliyuncs.com":endpoint:- "https://registry.cn-hangzhou.aliyuncs.com"configs:"registry.cn-hangzhou.aliyuncs.com":auth:username: xxxpassword: xxxx"xx.tencentyun.com":auth:username: xxpassword: xxxx

7.2 重启 k3s

执行以下命令,重启 k3s 服务。

systemctl restart k3s

7.3 拉取测试镜像

尝试从 Docker Hub 公共仓库拉取一个镜像,例如 nginx 镜像进行测试。

crictl pull nginx

wKgZO2dtLGuAajhEAAArOCXxk6g942.png

八、部署 Nginx 应用

7.1 创建部署目录

创建部署目录/data/k3s,并且进入该部署目录。

mkdir -p /data/k3s/ && cd /data/k3s/

7.2 编辑部署文件

新建并且编辑 nginx.yaml 部署文件,内容参考如下:

vim nginx.yaml

---apiVersion: v1kind: Namespace #资源对象类型 metadata: # 元信息name: web # 空间名称---apiVersion: apps/v1kind: Deploymentmetadata:name: nginx-webnamespace: web #spec:replicas: 2selector:matchLabels:erpselector: nginx-test #标签template:metadata:labels:erpselector: nginx-test #标签spec:containers: # 容器信息- name: nginximage: nginx:latest # 指定拉取的镜像ports:- containerPort: 80 # 指定容器的端口---apiVersion: v1kind: Servicemetadata:name: nginx-servicenamespace: webspec:type: NodePortselector:erpselector: nginx-test # 转发到指定标签的 podsports:- port: 80targetPort: 80protocol: TCPnodePort: 30033

7.3 部署 Nginx 应用

执行以下命令,部署 Nginx 应用。

[root@flexusx-51a1 k3s]# kubectl apply -f nginx.yamlnamespace/web createddeployment.apps/nginx-web createdservice/nginx-service created

7.4 查看 pod 状态

查看 nginx 应用的 pod 状态,确保 pod 正常运行。

[root@flexusx-51a1 k3s]# kubectl get pods -n webNAME READY STATUS RESTARTS AGEnginx-web-5b44bff8b8-8xxd7 1/1 Running 0 37snginx-web-5b44bff8b8-ctwxq 1/1 Running 0 37s

7.5 查看 service 状态

查看 service 状态,可以看到外部访问端口为 30033。

[root@flexusx-51a1 k3s]# kubectl get service -n webNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEnginx-service NodePort 10.43.12.77 80:30033/TCP 101s

八、访问 Nginx 服务

8.1 Flexus 云服务器 X 实例安全组配置

进入 Flexus 云服务器 X 实例控制台,进行安全组规则配置。在安全组入方向规则上,放行 30033 端口。

wKgZPGdtLGuAdaDXAAC9kTeSqx4301.png

8.2 访问 Nginx 服务

浏览器:http://弹性公网 IP:30033,将 IP 替换为自己华为云 Flexus 云服务器 X 实例的弹性公网 IP 地址,即可访问到 Nginx 的初始网页。

wKgZO2dtLGuAY6vkAABOEFlNMCE658.png

九、使用体验与总结

在本次实践中,我们顺利地在华为云 Flexus 云服务器 X 实例上成功搭建了 k3s 轻量级 Kubernetes 环境。整个过程如行云流水,毫无阻碍,其使用体验令人赞叹不已。华为云 Flexus 云服务器 X 实例在众多云服务中可谓鹤立鸡群,它具备卓越的性价比,强大的计算性能令人瞩目,稳定可靠的特性为工作提供坚实保障,高标准的安全保障更是让人安心无忧。稳定的网络连接和零延迟的操作,有力地确保了高效的工作流程。依托华为云的强大后盾,该实例展现出了无与伦比的优势。其中,K3s 作为 Rancher Labs 推出的轻量级 Kubernetes 发行版,在华为云 Flexus 云服务器 X 实例的 openEuler 系统下得以完美运行,进一步彰显了其强大的兼容性和出色的性能。

抓住华为云 828 B2B 企业节这一难得机遇,即刻感受 Flexus X 实例带来的震撼超值优惠。在这里,你能领略到前沿技术与创新理念的精妙融合。无论是对高性能计算有着极致需求,还是追求智能化监控的精准高效,Flexus X 实例的每一处细节都彰显着华为云对高品质服务的不懈执着。选择华为云,绝非仅仅是技术层面的一次跃升,更是迈向数字化转型征程的关键一步。让我们携手并肩,一同前行,共创辉煌的云端新时代!

wKgZPGdtLGuAO2sFAALwQe1M_Pc562.png

审核编辑 黄宇

The End

发布于:2025-02-23,除非注明,否则均为旭日财经网原创文章,转载请注明出处。