作者:SRE运维博客

博客地址: https://www.cnsre.cn/

文章地址:https://www.cnsre.cn/posts/211109907029/

相关话题:https://www.cnsre.cn/tags/k3s/


双十一各大云厂商纷纷撒种子种韭菜(抢用户),良心云 也是一如既往的良心,新用户更是通过某宝 148 就可以买到三年 2C4G8M 的轻量应用服务器。于是我也出售薅了羊毛入手了一台。
但是对于各种组件本身就对资源消耗比较大的 k8s 来说,跑起来还是有点费力的,于是我打算将这台实例部署一台轻量级的 Kubernetes: k3s

k8s VS k3s

k3s 是 Rancher 推出的轻量级 k8s。k3s 本身包含了 k8s 的源码,而二进制包却只有 60M 但是本质上和 k8s 没有区别。但为了降低资源占用,k3s 和 k8s 还是有一些区别的,主要是:

  • 使用了相比 Docker 更轻量的 containerd 作为容器运行时(Docker 并不是唯一的容器选择)。
  • 去掉了 k8s 的 Legacy, alpha, non-default features。
  • 用 sqlite3 作为默认的存储,而不是 etcd。
  • 其他的一些优化,最终 k3s 只是一个 binary 文件,非常易于部署。、

所以 k3s 适用于边缘计算,IoT 等资源紧张的场景。同时 k3s 也是非常容易部署的,官网上提供了一键部署的脚本。

k3s的优点

  • k3s将安装Kubernetes所需的一切打包进仅有60MB大小的二进制文件中,并且完全实现了Kubernetes API。为了减少运行Kubernetes所需的内存,Rancher删除了很多不必要的驱动程序,并用附加组件对其进行替换。
  • k3s是一款完全通过CNCF认证的Kubernetes发行版,这意味着你可以编写YAML来对完整版的Kubernetes进行操作,并且它们也将适用于k3s集群。
  • 由于它只需要极低的资源就可以运行,因此它能够在任何512MB RAM以上的设备上运行集群,换言之,我们可以让pod在master和节点上运行。

k3s的缺点

  • 首先,当前k3s的版本(k3s v0.8.1)仅能运行单个master,这意味着如果你的master宕机,那么你就无法管理你的集群,即便已有集群要继续运行。但是在k3s v0.10的版本中,多主模式已经是实验性功能,也许在下一个版本中能够GA。
  • 其次,在单个master的k3s中,默认的数据存储是SQLite,这对于小型数据库十分友好,但是如果遭受重击,那么SQLite将成为主要痛点。但是,Kubernetes控制平面中发生的更改更多是与频繁更新部署、调度Pod等有关,因此对于小型开发/测试集群而言,数据库不会造成太大负载。

结论

K8s和k3s各有优劣,使用场景也有所区别,因此不能一概而论。如果你要进行大型的集群部署,那么我建议你选择使用K8s;

如果你像我一样只是为了开发或者测试,那么选择k3s则是性价比更高的选择。

安装 k3s

确保你是一台干净的 CentOS7 服务器。
按照惯例先更新,更新前顺便把源换为国内的yum源。

# 改国内yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
# 更新
yum update -y

修改主机名

hostnamectl  set-hostname  k3s-master

修改完毕后,断开重连一下。
{{< alert theme=“warning” dir=“ltr” >}}
⚠️ 注意
K3s 默认将使用 containerd 作为容器环境,请在下边选择 使用Docker安装 或者使用Containerd安装
{{< /alert >}}
{{< tabs 使用docker安装 使用containerd安装>}}
{{< tab >}}

使用 docker 安装

# 安装 docker-ce
yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
yum install -y yum-utils
yum-config-manager --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
# 解决内核检查问题 重启生效
grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"
systemctl enable docker
systemctl start docker
# 修改 docker 源
cat << EOF > /etc/docker/daemon.json
{"registry-mirrors":["https://3laho3y3.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
# 安装 docker 结束
# 关 firewalld 防火墙
systemctl stop firewalld
systemctl disable firewalld
# 安装 k3s
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - --docker

{{< /tab >}}
{{< tab >}}

使用 containerd 安装

curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -

{{< /tab >}}
{{< /tabs >}}

安装完检查

安装完成后,可以执行以下命令进行主机检查。

# 运行配置检查
k3s check-config
# 查看节点状态以及 k3s 版本
[root@k3s-master ~]# kubectl get node
NAME             STATUS   ROLES                  AGE   VERSION
vm-16-8-centos   Ready    control-plane,master   52m   v1.21.5+k3s2
# 查看所有 pod 信息
[root@k3s-master ~]# kubectl get pods -A
NAMESPACE     NAME                                      READY   STATUS      RESTARTS   AGE
kube-system   local-path-provisioner-5ff76fc89d-bbps4   1/1     Running     0          52m
kube-system   coredns-7448499f4d-42v9x                  1/1     Running     0          52m
kube-system   metrics-server-86cbb8457f-xqlrg           1/1     Running     0          52m
kube-system   helm-install-traefik-crd-9wk9v            0/1     Completed   0          52m
kube-system   helm-install-traefik-d8llf                0/1     Completed   3          52m
kube-system   svclb-traefik-jqxvf                       2/2     Running     0          49m
kube-system   traefik-97b44b794-wv6zv                   1/1     Running     0          49m

截止到这里 k3s 已经安装完毕。

安装 nfs

安装 nfs 服务

yum -y install nfs-utils
systemctl start nfs && systemctl enable nfs

创建nfs目录

mkdir -p /home/k8s/nfs

修改权限

chmod -R 755 /home/k8s/nfs

编辑export文件

cat >>/etc/exports << EOF
/home/k8s/nfs *(rw,no_root_squash,sync)
EOF

配置生效

exportfs -r

启动rpcbind、nfs服务

systemctl restart rpcbind && systemctl enable rpcbind
systemctl restart nfs && systemctl enable nfs

到这里 k3s 以及 nfs 已经安装完成,下面就可以去体验了。
如果想以上都比较麻烦,你可以用下面的一键安装脚本来执行

一键安装 k3s 脚本

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
LANG=en_US.UTF-8RD="\033[31m"      # 错误消息
GR="\033[32m"      # 成功消息
YL="\033[33m"      # 告警消息
BL="\033[36m"      # 日志消息
PL='\033[0m'clear
echo -e "${YL}##################################################${PL}"
echo -e "${YL}#${PL} ${GR}脚本名称${PL}: 一键安装 k3s 脚本                    ${YL}#${PL}"
echo -e "${YL}#${PL} ${GR}作    者${PL}: sre运维博客                          ${YL}#${PL}"
echo -e "${YL}#${PL} ${GR}网    址${PL}: https:www.cnsre.cn                   ${YL}#${PL}"
echo -e "${YL}#${PL} ${GR}文章地址${PL}: https://cnsre.cn/posts/211109907029/ ${YL}#${PL}"
echo -e "${YL}##################################################${PL}"
sleep 0.5set -e
echo
echo
echo
echo -e "${RD}是否确定安装 dockerb版本的 k3s? ${PL}"
read -r -p "确定请按 y 任意键则退出!请选择:[y/n]" inputif [[ $input != "y" ]]; thenexit 1else echo -e "$GR正在开始安装 dockerb版本的 k3s$PL"fiif [ `command -v docker` ];thenecho -e "${YL}docker 已经安装,正在添加docker加速源${PL}"
elseecho -e "${GR}install docker${PL}"curl https://download.daocloud.io/docker/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repoyum -y install https://download.daocloud.io/docker/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpmcurl -fsSL https://get.daocloud.io/docker | bash -s docker --mirror Aliyun
fisudo mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["http://f1361db2.m.daocloud.io"]
}
EOF
grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable dockerif [ `command -v k3s` ];thenecho -e "${YL}k3s 已经安装${PL}"exit 1
elseexport K3S_NODE_NAME=${HOSTNAME//_/-}export INSTALL_K3S_EXEC="--docker --kube-apiserver-arg service-node-port-range=1-65000 --no-deploy traefik --write-kubeconfig ~/.kube/config --write-kubeconfig-mode 666"curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
fiecho -e "${GR}export K3S_TOKEN=$(cat /var/lib/rancher/k3s/server/node-token)${PL}"
echo -e "${GR}export K3S_URL=https://$(ip addr | grep -E -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | grep -E -v "^127\.|^255\.|^0\." | head -n 1):6443${PL}"
echo -e "${GR}安装结束,请重启服务器${PL}"
read -r -p "确定请按 y 任意键则退出!请选择:[y/n]" inputif [[ $input != "y" ]]; thenrebootelse exit 1fi

作者:SRE运维博客

博客地址: https://www.cnsre.cn/

文章地址:https://www.cnsre.cn/posts/211109907029/

相关话题:https://www.cnsre.cn/tags/k3s/


k3s单机版安装部署 附一键安装脚本相关推荐

  1. Hive环境的安装部署(完美安装)(集群内或集群外都适用)(含卸载自带mysql安装指定版本)...

    Hive环境的安装部署(完美安装)(集群内或集群外都适用)(含卸载自带mysql安装指定版本) Hive 安装依赖 Hadoop 的集群,它是运行在 Hadoop 的基础上. 所以在安装 Hive 之 ...

  2. office web apps安装部署 Win 2008 安装

    office web apps安装部署 Win 2008 安装 https://blog.csdn.net/qq_36267404/article/details/100657304office we ...

  3. nginx服务安装 附一键安装脚本

    一.手动安装 yLinux(CentOS7.X)安装Nginx 二.一键安装脚本 #!/bin/bash#关闭firewalld防火墙 systemctl stop firewalld systemc ...

  4. 一键编译php,编译安装php 附加一键安装php5.6.30脚本

    安装php需要的软件.yum -y install gcc gcc-c++ libzip-devel libxml2-devel libiconv libjpeg-devel libpng-devel ...

  5. 自动化运维saltstack 安装部署以及一键部署实现负载均衡

    saltstack介绍 SaltStack是一个服务器基础架构集中化管理平台,SaltStack基于Python语言实现,也是基于C/S架构,结合轻量级消息队列(ZeroMQ)与Python第三方模块 ...

  6. Supervise安装2020(内含一键安装脚本)

    一键安装supervise脚本 #!/bin/bash wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz tar -zxf daemon ...

  7. python一键安装神器_一键安装python

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 去年有出一个python整的lamp自动安装,不过比较傻,直接调用的yum 去安 ...

  8. mysql数据实时同步:Canal安装部署、kafka安装、zk安装、mysql安装、Canal Server+Canal Client HA,Canal+mysql+Kafka,相关验证(学习笔记)

    目录 Canal安装部署 1.1. 服务器准备 1.2. 设置主机名并配置hosts 1.3. 免密设置 1.4. 设置ntp时间 1.5. 关闭防火墙 1.6. 关闭selinux 1.7. 安装J ...

  9. Linux上安装oracle19c客户端,Oracle 19c的下载和安装部署(图形安装和静默安装)

    Oracle 19C的下载和安装部署(图形安装和静默安装) Oracle Database 19c ,也就是12.2.0.3,最初在livesql.oracle.com上发布,是Oracle Data ...

最新文章

  1. docker load 出错 open /var/lib/docker/tmp/docker-import-837327978/bin/json: no such file or directory
  2. C语言之free函数及野指针
  3. python gzipped source tarball,下载及安装Python详细步骤
  4. 【云音乐】从手游APP到云音乐视频标签分类,时隔3个月再次面对多标签任务,终于摸索出了一些小经验。附自定义评估函数代码
  5. mysql数据库1067错误
  6. C# Console.ReadLine()方法的使用 以及利用其返回值null终止输入
  7. “约见”面试官系列之常见面试题第三十九篇之异步更新队列-$nextTick(建议收藏)
  8. Parcel(打包)
  9. c++中的模板_C ++中的模板
  10. java程序设计比赛心得体会_对Java程序设计的感想.doc
  11. python对文件的读取
  12. AIO 理论 与 编程
  13. SDD-FIQA基于人脸相似度分布距离的无监督质量评估方法
  14. 基于Android的办公自动化系统APP设计与实现
  15. Ubuntu18.04美化桌面
  16. linux docker 软路由,OpenWrt软路由使用docker安装jellyfin影音中心
  17. 这套监控系统让打工人颤抖:离职倾向、摸鱼通通都能被监测!
  18. html引入css文件和js文件方式
  19. 未来计算机网络在医学上的发展,论述计算机网络技术在医学技术中的发展和作用.doc...
  20. 深度产教融合的“山东经验”

热门文章

  1. 阿里巴巴藏经阁,快来学习起来
  2. Canvas网页涂鸦板再次增强版
  3. 【electron】自制思维导图软件
  4. EtherCAT主站开发“利器”——EC-Master软件协议栈
  5. 原子操作、信号量、读写信号量和自旋锁
  6. 惊呆了!一个App有50+的功能,赶紧收藏好评点赞三连击
  7. SAP学习日志--在配置上踩坑--强制帐户设置
  8. 四位直读表PCB设计
  9. 关于聚类(Clustering)
  10. NOIP 2014 生活大爆炸版石头剪刀布