阿尼樱奈奈
deepin
2023-06-05 21:47 不错。我记得你昨天发过这个文章,但是删了。
Reply Like 1 View the author
不错。我记得你昨天发过这个文章,但是删了。
不错。我记得你昨天发过这个文章,但是删了。
感谢支持
昨天的情况是因为当时其实还没写好,晚上有点累了就一时点错了【发布文章】,所以立即回收掉了继续编辑;今天中午终于写好了就正式发布了












感谢支持
楼主写的很好,支持
楼主写的很好,支持
感谢支持
大赞!学习了

大赞!学习了

感谢支持
这是k8s安装吗?
Popular Ranking
ChangePopular Events
More
本教程将简单介绍 统信服务器操作系统 V20 、K3s 并演示如何透过两者轻松搭建生产规格的 Kubernetes(俗称 K8s)集群
教程对象
动手意愿强,熟悉 Linux 、容器技术原理与应用,对云技术有兴趣的坛友们
容器技术介绍可参考我前期的文章:Podman 及容器技术介绍
此后假设您对 K8s 已有基本的认知,K8s 初学者可参考以下资源自行学习:
硬件与系统需求
您的电脑必须有 256G 以上的存储空间、8G 或以上内存、建议 16G 或以上内存
操作系统不限;本教程所有操作在 统信 UOS 家庭版 22.0 上通过验证(未启用开发者模式),但在 deepin 20 、deepin 23 甚至在 Windows 上也应该能如常操作
产品介绍
统信服务器操作系统 V20
统信服务器操作系统 V20 是 deepin 团队母公司 统信软件 针对 B 端市场发布的基于 Linux 内核开发的自主可控服务器操作系统,其特点包括:
dnf包管理器而非apt包管理器;K3s
K3s 是德国 SUSE 公司于 2020 年捐赠给 云原生计算基金会 (CNCF) 的轻量 K8s 发行版,其特点包括:
实战环节
我们在实战环节中将在 VirtualBox 中创建一个双节点 K3s 集群,一共 1 个 server 、1 个 agent ,也会另外再创建一台服务器作为
kubectl客户端供连接、操作集群使用,一共 3 台虚拟机,详情如下:cube-control.cluster.localkubectl客户端10.0.2.12server0.cluster.local10.0.2.13agent0.cluster.local10.0.2.14您的虚拟机 NAT 网络 IP 地址或许不同,请根据实际情况调整 IP 操作,不要盲目复制黏贴教程里所示的命令
三台虚拟机同在一个虚拟网络,采用 VirtualBox 的 NAT Network 模式,稍后会有仔细的操作说明
至于为何创建 cube-control 虚拟机安装
kubectl客户端操作集群而不直接在宿主上操作,主要有两个原因:kubectl客户端可绕过统信 UOS 家庭版 22.0 未启用开发者模式下禁止运行第三方程序的问题VirtualBox NAT 网络配置
创建虚拟机前首先创建 NAT 网络,具体操作如下:
首先点选 "工具 > 网络",如下图:
选择 "NAT Networks > 创建":
创建后如下图:
创建虚拟机
创建 cube-control、server0、agent0 三台虚拟机过程一致,只需要适当修改 VirtualBox 虚拟机名称、安装操作系统时修改主机名称以及安装后把每台虚拟机的 IP 地址作记录即可;这里就以 cube-control 虚拟机为例吧
相信大家都熟悉 VirtualBox 虚拟机安装过程,这里就只列出注意事项了
首先,新建虚拟机的首页记住勾选 "Skip unattended installation":
然后配置选择 1 vCPU、2G (= 2048 MB) 内存,如果宿主有 16G 以上内存则可选择把 server0、agent0 两个节点升级为 4G(= 4096 MB)以上内存
接着虚拟机存储 server0、agent0 两个节点建议分配 32G 以上,cube-control 客户端则 16G 应该足够
创建虚拟机后到虚拟机的 "设置 > 网络 > 网卡 1" 点选 "NAT 网络" 连接方式及刚才创建的 NAT 网络,再点 "OK" 保存:
接着启动虚拟机安装操作系统,需要注意的事项如下:
首先在 "系统" 栏下点选 "安装目的地 (D)",接受默认值并按 "完成" 即可:
接着点选 "网络和主机名 (N)",分别为 cube-control、server0、agent0 虚拟机设置相应的主机名称,点选 "应用" 后再点选 "完成":
然后点选 "软件选择 (S)" 进行配置,选择 "最小安装" 后点 "完成":
之后鼠标往下滚动,选择 "创建用户 (U)",创建一个名为
uos的管理员账户,设置好密码后点 "完成":现在所有安装配置弄好了,可以点 "开始安装 (B)":
稍等片刻,看到 "完成!" 后点 "重启系统 (R)":
重启系统后稍等片刻,然后输入以下字符同意许可协议并退出初始化配置,输入每行字符后回车一下:
示图如下:
之后会显示命令行登录界面,这里输入
uos用户名及密码后输入ip addr show命令查询虚拟机的 IP 地址作记录,然后输入exit命令退出:最后建议关掉虚拟机后以 "无界面启动" 形式再次启动,该启动模式不会弹出虚拟机视窗,能节省宿主资源,让宿主运行更流畅:
现在就 server0、agent0 两个节点把虚拟机安装步骤再重复两遍,这里就不重复展示了
cube-control 初始化配置
在 宿主上 导出
K3S_CLIENT变量,请把以下命令的x.x.x.x以 cube-control 虚拟机的 IP 地址取代:现在 NAT 网络里需要添加端口转发策略供我们 SSH 登录 cube-control 虚拟机,主机端口可选 1122/tcp、虚拟机地址为 cube-control IP 地址,虚拟机端口 22/tcp:
回到 宿主上 的命令行填写 SSH 配置文档,配置如下:
cube-control主机cube-control主机使用uos用户登录cube-control主机实质为localhost的1122/tcp端口倘若您之前没配置过 SSH 密钥,可使用
ssh-keygen命令生成密钥,重复按回车接受默认选项即可然后把 SSH 公钥拷到
cube-control虚拟机上,实现 SSH 免密登录,事后需要重启终端生效:重启终端后,输入
ssh命令登录cube-control虚拟机:接着的命令在 cube-control 虚拟机内 执行
安装 Vim 文本编辑器、Bash 自动填写功能:
在 cube-control 虚拟机内 生成 SSH 密钥,接受默认值即可:
接着到 K8s 官网下载安装 1.26.5 版本
kubectl客户端:然后到
k3supGitHub 仓库 下载安装k3sup命令行工具,该工具能使我们快速部署 K8s 集群:最后创建
$HOME/.kube/目录,避免之后可能出现的问题:cube-control 免密登录 server0 、agent0
使用
k3sup部署集群前,必须确保所有节点能免密 SSH 登录,而且 SSH 登录的用户必须能免密sudo提权首先在 cube-control 虚拟机上 导出环境变量
K3S_SERVER0、K3S_AGENT0并写到$HOME/.bashrc文档里,分别为 server0 、agent0 虚拟机的 IP 地址:然后填写 SSH 配置文档并设置好文档权限:
再分别把 cube-control 的 SSH 公钥拷到 server0 、agent0 上:
退出 cube-control 再登录后生效
server0 、agent0 初始化配置
部署 K3s 前需要对每个节点分别进行以下配置:
sudo提权;firewalld.servicesystemd 服务;INSTALL_K3S_SKIP_SELINUX_RPM=true环境变量,让 K3s 跳过 SELinux 配置;统信服务器操作系统 V20 上默认禁用 SELinux,而 K3s 若尝试配置 SELinux 只会遇到问题,不会有任何好处以下将以
server0作为例子,配置好server0后请自行配置agent0;两个节点配置步骤完全一致,故不重复展示首先在 cube-control 上 SSH 登录
server0:然后透过
visudo修改/etc/sudoers文档:寻找以下几行配置:
把以上的第二行注释掉,第五行去掉注释,修改后如下:
输入
:wq回车退出 Vim退出节点再登录,免密
sudo提权即时生效禁用防火墙:
导出
INSTALL_K3S_SKIP_SELINUX_RPM=true环境变量到$HOME/.bashrc中并即时生效:节点配置完毕,退出节点回到 cube-control 即可:
现在以上操作在 agent0 虚拟机上重复一遍,这里就不重复展示了
调用
k3sup部署 K3s server 、agent现在终于可以调用
k3sup部署我们的 K3s server 、agent 两个节点了以下操作全部在 cube-control 虚拟机上 执行
首先看看部署 K3s server 的命令:
简单解释一下:
--context hello-k3s选项大概可理解成把集群名称设置为hello-k3s--ip "${K3S_SERVER0}"选项告诉k3sup我们server0节点的 IP 地址,k3sup将自动 SSH 登录server0节点进行配置--local-path "$HOME/.kube/config"选项使k3sup把kubectl客户端用的KUBECONFIG配置文档写到$HOME/.kube/config路径下--merge选项让k3sup保存原有KUBECONFIG配置(如有),并把hello-k3s的配置与之合并--user uos选项让k3sup以uos用户 SSH 登录节点进行相关配置然后启用
kubectl的 Bash 自动填充功能,这能大幅提升以后透过kubectl操作集群的效率:现在用
kubectl命令查看 server 节点状态,应该为 Ready :输出:
再看看部署 K3s agent 的命令:
这里选项比部署 server 要简单一点,只需提供节点 IP、server IP 及 SSH 登录用户即可
再用
kubectl查看节点状态,现在应该有两个节点,状态均为 Ready :输出:
在集群上部署 NGINX APP
创建一个
nginxDeployment ,使用 2 个 Pod 实例实现高可用,并透过 Service 把nginxDeployment 暴露到8080/tcp端口:查看我们的 Deployment ,应该有
2/2个实例状态均为 Ready :输出:
倘若这时出现问题,例如
1/2实例为 Ready 状态,可以尝试重启每个节点等会儿再试查看我们的 Service ,看看
nginxService 的负载均衡EXTERNAL-IPIP 地址,应该为两个节点的 IP 地址:输出:
现在回到 VirtualBox 的 NAT 网络配置,添加一个端口转发策略:
详情如下图所示:
接着到宿主浏览器上输入 http://localhost:8080/ 地址回车,若成功则能看到 NGINX 网页:
结语
统信服务器操作系统 V20 是一个高性能、安全、可靠、自主可控的红帽系 Linux 发行版,适用于本地或云端生产环境上的部署,而且统信软件为了帮助业界顺利完成从 CentOS 的迁移,对外承诺永久开放免费使用授权,用户只需要接受 EULA 即可,需要售后服务的用户则可以选择购买许可证激活系统
而 K3s 作为一个与上游 K8s 完全兼容的轻量 K8s 发行版,能使用户简单快速本地或云上部署生产规格的 K8s 集群,大大降低部署、升级、维护 K8s 集群的人力与成本;而且 K3s 由于资源消耗非常低,每个节点只需要 1、2G 或更少内存,因此也适用于 IoT 及个人技术爱好者的应用场景
最后希望您喜欢这篇文章,您的支持是我创作最大的动力