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

320 阅读13分钟

前言  

华为云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实例针对不同的使用场景展现出其独特的优势:

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 的最低硬件要求和推荐硬件配置如下所示:

 

SpecMinimumRecommended
CPU1 core2 cores
RAM512 MB1 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版本操作系统版本kubernetes版本
华为云Flexus云服务器X实例        openEuler192.168.0.1694vCPUs 12GiB26.1.3openEuler 22.03 LTSv1.30.4+k3s1

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

4.1 购买Flexus云服务器X实例  

进入华为云官网: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实例的各项设置,确保无误后点击“立即购买”,完成付款流程即可成功购买。

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            

·关闭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 <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 rancher-mirror.rancher.cn/k3s/k3s-ins… | 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                      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:            
- ""            
- "mirror.ccs.tencentyun.com"            
- "hub-mirror.c.163.com"            
- "mirror.baidubce.com"            
"ccr.ccs.tencentyun.com":            
endpoint:            
- "ccr.ccs.tencentyun.com"            
"registry.cn-hangzhou.aliyuncs.com":            
endpoint:            
- "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镜像进行测试。

crictl pull nginx            

    

八、部署Nginx应用  

7.1 创建部署目录  

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

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

7.2 编辑部署文件  

新建并且编辑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                      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 实例的每一处细节都彰显着华为云对高品质服务的不懈执着。选择华为云,绝非仅仅是技术层面的一次跃升,更是迈向数字化转型征程的关键一步。让我们携手并肩,一同前行,共创辉煌的云端新时代!