k3sup-集群-K3s-经常使用-一分钟极速搭建
背景
在往常的上班中,为了繁难在污浊的环境中启动测试,我经常须要在本地或许私有云环境中频繁地搭建和销毁集群。有时是在我的HomeLab环境中,只管CPU不强但胜在内存够大;起初有了微软MVP赠送的Azure额度之后,我也会经常在Azure的虚构机中搭建,由于没有拉取镜像的网络疑问。
在两个环境中我经过Terraform成功了虚构机的极速创立和销毁,而后在虚构机上创立K3s集群。K3s集群足够轻量级,并允许对组件的定制。联合AlfredSnippets[1],我只有要ssh到虚构机上并键入k3si就可以极速输入定制好的命令,而后再失掉虚构机上的kubeconfig文件并交流其中的api-server地址(这些也经过snippet)处置:
exportMASTER_IP=${MASTER_IP:-$(ipaddrshoweth0|grep''|awk'{print$2}'|cut-d/-f1)}exportINSTALL_K3S_VERSION=v1.23.8+k3s1curl-sfL|sh-s---disabletraefik--disablelocal-storage--disablemetrics-server--advertise-address=$MASTER_IP--disableservicelb--write-kubeconfig-mode644--write-kubeconfig~/.kube/config
单节点的集群操作起来还算方便,但须要多节点的集群时也还要ssh到一切主机上启动操作,当然少不了复制master节点的token。未免还是有些繁琐。
起初就发现了更快捷的工具,由AlexEllis创立的k3sup[2](发音‘ketchup’)。
k3sup简介
k3sup是一个轻量级工具,用于极速搭建K3s集群。
k3sup的特点是易于经常使用,只有单个命令即可在不同的平台上装置K3s。它经常使用户可以极速创立Kubernetes集群,并可以轻松地将新节点添加到现有集群中。
k3sup经过SSH衔接到指标主机,而后智能装置和性能K3s。这象征着咱们可以在任何可以经过SSH访问的机器上装置和运转Kubernetes,包括本地机器、云主机或树莓派等设施。
繁难了解就是经常使用k3sup成功了ssh到主机、装置K3sserver、复制token、ssh到agent主机、装置K3sagent...等一系列的操作。
接上去咱们看下如何经常使用k3sup。
装置k3sup
k3sup是一个命令行工具,经常使用前要下载装置CLI。
curl-sLS|shsudoinstallk3sup/usr/local/bin/
brewinstallk3sup
经常使用
k3sup允许如下命令:
创立集群会用到install和join两个命令。
install命令
install命令用于在主机上装置K3s,经常使用上方的命令即可在远程主机上装置k3s。
其中--ip指向远程主机的地址,--user为登录远程主机的用户名,--k3s-channel这是要装置的版本,--local-path集群kubeconf的本地保留地址。更多的选项可以经过k3suphelpinstall来检查。
exportMASTER_IP=192.168.1.11k3supinstall--ip$MASTER_IP--useraddo--k3s-channelv1.24--local-path/tmp/config
口头命令会打印装置环节中的日志。
Running:k3supinstall2023/10/2609:04:35192.168.1.11PublicIP:192.168.1.11[INFO]Findingreleaseforchannelv1.24[INFO]Usingv1.24.17+k3s1asrelease...Savingfileto:/tmp/config#Testyourclusterwith:exportKUBECONFIG=/tmp/configkubectlconfiguse-contextdefaultkubectlgetnode-owide
口头命令,检查节点的消息。
exportKUBECONFIG=/tmp/configkubectlgetnode-owideNAMESTATUSROLESAGEVERSIONINTERNAL-IPEXTERNAL-IPOS-IMAGEKERNEL-VERSIONCONTAINER-RUNTIMEmasterReadycontrol-plane,master1mv1.24.17+k3s110.0.2.4<none>Ubuntu20.04.6LTS5.15.0-1047-azurecontainerd://1.7.3-k3s1
假设是装置单节点集群,install命令就足够了。假设是多节点集群,就还须要用到join命令。
join命令
经常使用join命令可以初始化agent节点,并将其添加到以后的集群中,须要经常使用--server-ip指定server节点的IP地址,雷同须要--k3s-channel指定装置的版本,剧烈倡导装置于server节点雷同的版本。
exportAGENT_IP=192.168.1.12k3supjoin--ip$AGENT_IP--useraddo--server-ip$MASTER_IP--k3s-channelv1.24
Running:k3supjoinAgent:192.168.1.11Server:192.168.1.12Receivednode-tokenfrom192.168.1.11..ok.[INFO]Findingreleaseforchannelv1.24[INFO]Usingv1.24.17+k3s1asrelease...
检查节点:
kubectlgetnoNAMESTATUSROLESAGEVERSIONnode-1Ready<none>43sv1.24.17+k3s1masterReadycontrol-plane,master2m58sv1.24.17+k3s1
完整脚本
让生成了脚本一键创立集群,有兴味的小同伴可以试试创立个双节点的集群须要多久。我试了下,耗时32s左右。
#DefineIPaddressesexport
搭建集群
#!/bin/bash#ReadthelistofIPaddressesfromtheenvironmentvariableIP_ADDRESSES=($HOSTS)#Definethek3sversionK3S_VERSION="v1.24"#CheckifthereisatleastoneIPaddressif[${#IP_ADDRESSES[@]}-eq0];thenecho"NoIPaddressesfound.PleaseensuretheHOSTSenvironmentvariableiscorrectlyset."exit1fi#InstallthemasternodeMASTER_IP=${IP_ADDRESSES[0]}echo"Installingmasternode:$MASTER_IP"k3supinstall--ip$MASTER_IP--useraddo--k3s-channel$K3S_VERSION--k3s-extra-args'--write-kubeconfig-mode644--write-kubeconfig~/.kube/config--disabletraefik--disablemetrics-server--disablelocal-storage--disableservicelb'--local-path/tmp/config#Installtheotheragentnodesforiin"${!IP_ADDRESSES[@]}";doif[$i-ne0];thenAGENT_IP=${IP_ADDRESSES[$i]}echo"Installingagentnode:$AGENT_IP"k3supjoin--ip$AGENT_IP--server-ip$MASTER_IP--useraddo--k3s-channel$K3S_VERSIONfidoneecho"k3sclusterinstallationcomplete."
卸载集群
#!/bin/bash#ReadthelistofIPaddressesfromtheenvironmentvariableIP_ADDRESSES=($HOSTS)#CheckifthereisatleastoneIPaddressif[${#IP_ADDRESSES[@]}-eq0];thenecho"NoIPaddressesfound.PleaseensuretheHOSTSenvironmentvariableiscorrectlyset."exit1fi#CleanupthemasternodeMASTER_IP=${IP_ADDRESSES[0]}echo"Cleaningupmasternode:$MASTER_IP"ssh-i~/.ssh/id_rsa$MASTER_IPk3s-uninstall.sh#Cleanuptheotheragentnodesforiin"${!IP_ADDRESSES[@]}";doif[$i-ne0];thenAGENT_IP=${IP_ADDRESSES[$i]}echo"Cleaningupagentnode:$AGENT_IP"ssh-i~/.ssh/id_rsa$AGENT_IPk3s-agent-uninstall.shfidoneecho"k3sclustercleanupcomplete."
参考资料
[1]AlfredSnippets:
[2]k3sup:
rancher2.x + k3s 单机搭建
先给系统换换源,编辑 将文件内容替换为一下内容
更新现有的包列表:
接下来,安装一些允许apt使用包通过HTTPS的必备软件包:
然后将官方Docker存储库的GPG密钥添加到您的系统:
再更新一下
安装我们的主角 docker
启动它,并设置开机启动
装完就没了?还有,我们给 docker 换换源,编辑 文件
替换为如下内容,阿里云的源是我自己的
配置自己的阿里云加速镜像,登录阿里云,搜索 容器镜像服务 => 控制台 => 镜像加速器
下面是我的安装方法:(不要问,撸就是了)
等个几分钟,rancher 安装完成后,就用你的服务器ip 加端口去访问吧 例如:初始化密码就不用我教了吧
我们看到的首页如下,现在配置下k3s需要的命令吧
点击添加集群
然后,选择导入
随便输入一个名字,我们就创建吧
保存最后一个命令,看提示都知道问什么啦。(还不知道的不要问,撸就对了)
跟着我,就直接撸
静静等待他安装完成吧
安装完成后,我们简单配置下,编辑 文件
在这里我们需要修改ExecStart的值,将其修改为:
修改后如下:
然后,重启下 k3s,执行以下两条命令
我们看看 k3s 的状态先
等他的状态是 Ready,我们的k3s 就配置好了
接下来,我们执行下,刚才保存的命令。 请执行自己保存的命令!!! 请执行自己保存的命令!!! 请执行自己保存的命令!!! 命令找不到了,回到rancher 的控制面板,点击编辑即可看到了
执行完可以看到下面这个,如果不是这个,那就多执行几次
Nextcloud 提前生成图片缩略图
nextcloud默认并不会为存储的图片提前生成缩略图,只有当我们在网页或者客户端,访问到相应的图片时,才会在服务器上进行生成。 这种按需生成的策略,一定程度上节省了服务器空间,但是带来的问题就是,如果当前目录下图片较多,比如有个几百张照片之类的,而且 cpu 的性能不行,比如我的老旧笔记本,你就会发现图片的缩略图加载的特别慢,比如像下面这样: 这时候的慢,并不是因为网络原因,打开服务器上的netdata页面,可以看到,cpu 已经爆表了。 虽然说只要加载一次之后,缩略图就会缓存在服务器上,下次就不需要重新生成了,但是如果照片特别多,总是会有很多从上传之后第一次访问的目录。 如果偶尔需要在nextcloud上翻找翻找旧照片,回忆一下的话,这种时候,缩率图加载太慢的话,肯定影响回忆的心情。 经过一番检索,发现nextcloud有一个预先生成缩率图的插件: Preview Generator 应用商店里的简介并没有描述如何使用,可以去github里查看具体的文档:。 安装方法其实也很简单,按照文档来: 第一步在应用市场中安装插件。 第二步启用插件。 第三步的意思是,这个插件安装完成之后,手动触发一下给所有图片生成缩率图。 这里需要注意一下,因为我是在k3s集群里用docker部署的nextcloud ,如果需要执行occ命令的话,选择进入容器内部听着好像是个不错的选择,但是这个命令是需要以www-data这个用户身份执行的,而www-data又被设置成了禁止登陆的用户,所以如果直接在容器内部执行su -l www-data php occ preview:generate-all命令的话,会报错。 解决方式就是直接ssh登陆上宿主机,然后执行docker exec --user www-data Container_ID php occ preview:generate-all就行了,正在扫描的目录,会被打印到标准输出中。 同时缩率图会被存在/var/www/html/data/appdata_occ3eu1bw2q6#/preview目录下。 通过watch -n 1 du -m -d 1命令,我们可以看到, preview目录的大小一直在增长,说明缩略图在持续的生成中。 同时我们可以看到,cpu 占用稳定在 50% 左右,相对于默认的按需生成时,直接 cpu 满载来说,这个插件只是利用闲时 cpu 计算能力,还是比较合适的,就算服务器上有其他服务,也不用太担心受到影响。 当有新的图片上传的时候,这个插件并不会自动触发,说白了就是这个插件仅仅提供了一个命令给我们,需要我们自己去调用,那么可以将这个命令加入到定时任务中,每隔一段时间就自动运行一次。 之前加定时任务的时候,一直失败不触发,还没有看看是为啥。 理论上讲就是加上一条/usr/local/bin/php occ preview:pre-generate即可。
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。