828华为云征文|华为云Flexus云服务器X实例之openEuler系统下搭建k3s轻量级kubernetes环境
- 前言
- 一、Flexus云服务器X实例介绍
- 1.1 Flexus云服务器X实例简介
- 1.2 Flexus云服务器X实例特点
- 1.3 Flexus云服务器X实例使用场景
- 二、K3s介绍
- 2.1 K3s简介
- 2.2 K3s主要特点
- 2.3 k3s的硬件要求
- 2.4 单节点k3s-server架构
- 三、本次实践介绍
- 3.1 本次实践简介
- 3.2 本次环境规划
- 四、远程连接华为云Flexus云服务器X实例
- 4.1 购买Flexus云服务器X实例
- 4.2 查看Flexus云服务器X实例状态
- 4.3 使用Xshell远程连接
- 4.4 检查操作系统版本
- 4.5 检查内核版本
- 五、环境准备工作
- 5.1 关闭防火墙与selinux
- 5.2 关闭Swap
- 5.3 启用IPv4数据包转发
- 5.4 时钟同步(可选)
- 六、部署k3s环境
- 6.1 安装k3s
- 6.2 检查kubectl等工具版本
- 6.3 查看k3s配置文件
- 6.4 检查节点状态
- 6.5 检查系统pod状态
- 七、配置镜像源
- 7.1 配置镜像源
- 7.2 重启k3s
- 7.3 拉取测试镜像
- 八、部署Nginx应用
- 7.1 创建部署目录
- 7.2 编辑部署文件
- 7.3 部署nginx
- 7.4 查看pod状态
- 7.5 查看service状态
- 八、访问Nginx服务
- 8.1 Flexus云服务器X实例安全组配置
- 8.2 访问Nginx服务
- 九、使用体验与总结
前言
华为云Flexus云服务器X实例
以其出色的性能和高度的灵活性,成为中小企业及开发者构建云基础设施的理想选择。鉴于其卓越的计算能力和广泛的适应性,本文将指导如何在基于openEuler操作系统的Flexus X实例上部署k3s——由Rancher Labs打造的一款轻量级Kubernetes发行版,以此来增强服务器的可扩展性和自动化管理能力,满足更加多元化的应用需求。通过这一部署,不仅能够充分发挥Flexus X实例的强大功能,还能为用户提供一个高效、稳定且易于管理的容器化应用运行环境。
一、Flexus云服务器X实例介绍
1.1 Flexus云服务器X实例简介
- 官网地址: 华为云Flexus云服务器X实例
华为云
Flexus云服务器X实例
是新一代面向中小企业和开发者的柔性算力云服务器。它能够智能感知业务负载的变化,自动调整资源配置。这款服务器特别适用于中低负载的应用场景,例如电商直播、企业网站建设、开发测试环境、游戏服务器以及音视频服务等。X实例的设计理念旨在为用户提供更加灵活和高效的计算资源管理方式。通过智能调整,它可以更好地满足不同业务的需求,提高资源利用率。
1.2 Flexus云服务器X实例特点
-
提供丰富的公共镜像
:Flexus云服务器X实例提供多种公共镜像供用户选择,方便快速部署各种应用和服务。 -
可灵活自定义vCPU内存配比
:用户可以根据自己的需要灵活调整虚拟CPU和内存的配比,以满足不同场景的需求。 -
智能感知业务动态升降配
:Flexus云服务器X实例能够智能感知业务的负载情况,并根据需要自动升降配,以满足业务的需求,提高系统的稳定性和性能。 -
负载范围更高
:相对于Flexus应用服务器L实例,Flexus云服务器X实例能够处理更高的负载,适用于更复杂和繁忙的场景。
1.3 Flexus云服务器X实例使用场景
Flexus云服务器X实例针对不同的使用场景展现出其独特的优势:
-
电商直播:利用X实例搭建电商交易平台,可以有效应对电商市场的瞬息万变,从容处理业务压力波动,确保交易过程顺畅无阻。
-
企业建站:面向博客、论坛和企业门户等应用场景,X实例帮助企业高效传播价值信息,促进信息共享与交流,支持构建多功能传播和交互平台。
-
个人开发测试:开发者在开发和测试过程中所需的环境资源可以通过X实例便捷获取,不仅提高了搭建效率,而且降低了成本。
-
游戏服务器:适用于搭建游戏后台服务器,强大的计算能力可以轻松应对大量玩家同时在线的情况,同时支持平滑扩容,快速应对玩家数量增长的需求,以及提供出色的网络加速能力以提升用户体验。
二、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 的最低硬件要求和推荐硬件配置如下所示:
Spec | Minimum | Recommended |
---|---|---|
CPU | 1 core | 2 cores |
RAM | 512 MB | 1 GB |
2.4 单节点k3s-server架构
以下为单节点k3s-server架构,本次实践为部署单机k3s环境。
三、本次实践介绍
3.1 本次实践简介
1.本次实践为个人测试学习环境,旨在快速部署应用,生产环境请谨慎;
2.本次实践环境为云华为云Flexus云服务器X实例,使用的操作系统为openEuler 22.03 LTS;
3.本次实践在openEuler系统环境下搭建k3s轻量级kubernetes单机环境。
3.2 本次环境规划
服务器类别 | 公共镜像选择 | 内网IP地址 | 云服务器规格 | Docker版本 | 操作系统版本 |
---|---|---|---|---|---|
华为云Flexus云服务器X实例 | openEuler | 192.168.0.169 | 4vCPUs 12GiB | 26.1.3 | openEuler 22.03 LTS |
四、远程连接华为云Flexus云服务器X实例
4.1 购买Flexus云服务器X实例
进入华为云官网:https://activity.huaweicloud.com/,登录自己的华为云账号,进入华为云首页。
- 可参考以下基础配置,进行购买:
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实例的各项配置是否正确。检查完毕后,点击“立即购买”。付款完毕后,华为云Flexus云服务器X实例购买成功。
4.2 查看Flexus云服务器X实例状态
进入华为云Flexus云服务的控制台,选择Flexus云服务器X实例,可以看到已经正在运行的Flexus云服务器X实例。
4.3 使用Xshell远程连接
- 复制Flexus云服务器X实例的弹性公网IP地址
- 主要填写Flexus云服务器X实例的弹性公网IP地址,输入其登录用户和密码,连接即可。
4.4 检查操作系统版本
检查Flexus云服务器X实例的操作系统版本,本次实践选择的版本为
openEuler 22.03 LTS
[root@flexusx-51a1 ~]# cat /etc/os-release
NAME="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 -r
5.10.0-60.109.0.136.oe2203.x86_64
五、环境准备工作
5.1 关闭防火墙与selinux
- 执行以下命令,关闭防火墙。
systemctl stop firewalld && systemctl disable firewalld
- 如果想要开启防火墙,则需要在防火墙上放行cockpit服务。
sudo firewall-cmd --permanent --zone=public --add-service=cockpit
sudo firewall-cmd --reload
- 关闭selinux
setenforce 0
sed -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_forward
net.ipv4.ip_forward = 1
如果未启用,则需要手动启用 IPv4 数据包转发。
cat <<EOF | sudo tee /etc/sysctl.d/k3s.conf
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
5.4 时钟同步(可选)
我们使用华为云Flexus云服务器X实例的openEuler镜像,系统自动为我们配置了时间同步,
systemctl status chronyd
如果未安装chronyd服务,使用以下命令安装。
yum install chrony -y
systemctl start chronyd
systemctl enable chronyd
六、部署k3s环境
6.1 安装k3s
直接使用国内镜像源方式,一键安装k3s环境。
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s -
6.2 检查kubectl等工具版本
k3s一键安装完毕后,将安装其他实用程序,包括 kubectl、crictl、ctr、k3s-killall.sh 和 k3s-uninstall.sh。
- 检查kubectl版本,当前安装的版本为
v1.30.4+k3s1
[root@flexusx-51a1 k3s]# kubectl version
Client Version: v1.30.4+k3s1
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Server Version: v1.30.4+k3s1
- 检查crictl版本,当前安装的版本为
0.1.0
。
[root@flexusx-51a1 k3s]# crictl version
Version: 0.1.0
RuntimeName: containerd
RuntimeVersion: v1.7.20-k3s1
RuntimeApiVersion: v1
- 检查ctr版本,当前安装的版本为
1.6.32
[root@flexusx-51a1 k3s]# ctr version
Client:
Version: 1.6.32
Revision: 8b3b7ca2e5ce38e8f31a34f35b2b68ceb8470d89
Go version: go1.21.10
Server:
Version: 1.6.32
Revision: 8b3b7ca2e5ce38e8f31a34f35b2b68ceb8470d89
UUID: 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 -owide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
flexusx-51a1 Ready control-plane,master 11m v1.30.4+k3s1 192.168.0.169 <none> 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 -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-576bfc4dc7-qslbt 1/1 Running 0 10h
kube-system helm-install-traefik-crd-mttv8 0/1 Completed 0 10h
kube-system helm-install-traefik-pj458 0/1 Completed 1 10h
kube-system local-path-provisioner-6795b5f9d8-ncz9c 1/1 Running 0 10h
kube-system metrics-server-557ff575fb-6ld6f 1/1 Running 0 10h
kube-system svclb-traefik-36590967-z5zlr 2/2 Running 0 10h
kube-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: xxx
password: xxxx
"xx.tencentyun.com":
auth:
username: xx
password: xxxx
7.2 重启k3s
执行以下命令,重启k3s。
systemctl restart k3s
7.3 拉取测试镜像
尝试拉取一个docker hub公共镜像仓库的镜像,例如nginx镜像进行测试。
docker.io/library/nginx
八、部署Nginx应用
7.1 创建部署目录
创建部署目录/data/k3s
mkdir -p /data/k3s/ && cd /data/k3s/
7.2 编辑部署文件
创建k3s的部署文件nginx.yaml,内容如下:
vim nginx.yaml
---
apiVersion: v1
kind: Namespace #资源对象类型
metadata: # 元信息
name: web # 空间名称
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-web
namespace: web #
spec:
replicas: 2
selector:
matchLabels:
erpselector: nginx-test #标签
template:
metadata:
labels:
erpselector: nginx-test #标签
spec:
containers: # 容器信息
- name: nginx
image: nginx:latest # 指定拉取的镜像
ports:
- containerPort: 80 # 指定容器的端口
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
namespace: web
spec:
type: NodePort
selector:
erpselector: nginx-test # 转发到指定标签的pods
ports:
- port: 80
targetPort: 80
protocol: TCP
nodePort: 30033
7.3 部署nginx
执行以下命令,部署nginx应用。
[root@flexusx-51a1 k3s]# kubectl apply -f nginx.yaml
namespace/web created
deployment.apps/nginx-web created
service/nginx-service created
7.4 查看pod状态
查看nginx应用的pod状态,确保pod正常运行。
[root@flexusx-51a1 k3s]# kubectl get pods -n web
NAME READY STATUS RESTARTS AGE
nginx-web-5b44bff8b8-8xxd7 1/1 Running 0 37s
nginx-web-5b44bff8b8-ctwxq 1/1 Running 0 37s
7.5 查看service状态
查看service状态,可以看到外部访问端口为
30033
。
[root@flexusx-51a1 k3s]# kubectl get service -n web
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-service NodePort 10.43.12.77 <none> 80:30033/TCP 101s
八、访问Nginx服务
8.1 Flexus云服务器X实例安全组配置
进入Flexus云服务器X实例控制台,进行安全组规则配置。在安全组入方向规则上,放行30033端口。
8.2 访问Nginx服务
浏览器:http://弹性公网IP:30033,将IP替换为自己华为云Flexus云服务器X实例的弹性公网IP地址,即可访问到Nginx的初始网页。
九、使用体验与总结
在本次实践中,我们顺利地在
华为云 Flexus 云服务器 X 实
例上成功搭建了 k3s 轻量级 Kubernetes 环境。整个过程如行云流水,毫无阻碍,其使用体验令人赞叹不已。华为云 Flexus 云服务器 X 实例在众多云服务中可谓鹤立鸡群,它具备卓越的性价比,强大的计算性能令人瞩目,稳定可靠的特性为工作提供坚实保障,高标准的安全保障更是让人安心无忧。稳定的网络连接和零延迟的操作,有力地确保了高效的工作流程。依托华为云的强大后盾,该实例展现出了无与伦比的优势。其中,K3s 作为 Rancher Labs 推出的轻量级 Kubernetes 发行版,在华为云 Flexus 云服务器 X 实例的 openEuler 系统下得以完美运行,进一步彰显了其强大的兼容性和出色的性能。
抓住华为云 828 B2B 企业节这一难得机遇,即刻感受 Flexus X 实例带来的震撼超值优惠。在这里,你能领略到前沿技术与创新理念的精妙融合。无论是对高性能计算有着极致需求,还是追求智能化监控的精准高效,Flexus X 实例的每一处细节都彰显着华为云对高品质服务的不懈执着。选择华为云,绝非仅仅是技术层面的一次跃升,更是迈向数字化转型征程的关键一步。让我们携手并肩,一同前行,共创辉煌的云端新时代!