0%

K8s轻量版K3s安装指南

说到云服务和集群,目前较为流行的应该是K8s,过去虽然有尝试意向,但是K8s的需要高配置机器,且搭建流程复杂,以及较高的学习门槛,最后还是作罢. 近期听说了K8s的轻量版实现K3s, 体验了一下后感受到了K8s的美妙之处, 当然在学习的过程难免也踩了不少坑,特此记录下来让后来者少走一点弯路.

K8s是什么,K3s又是什么

K8s全称为Kubernetes,简称为K8s(k,8个字符,s),或者叫Kube. 按照官网描述,它的定位是一个支持分布式的工业级容器编排平台.

K3s是只打包了K8s集群功能的必要的附加组建和服务的一个轻量版实现,它是K8s的一个子集,安装更简单,配置要求更低,并且概念和操作基本与K8s相同,是一个很好的入门方式.

安装

写此文时,我使用的云服务器系统为Ubuntu 20.04 LTS,在安装过程中我参考了K8S 的轻量版 K3S 安装教程 和朋友Gzp的K8s 快速上手(一) 在云主机上部署我的服务 安装教程.

在大多数指南中,应该会提示你使用以下两种方式安装, 一个是国内提供的加速:

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

一个是官方的安装:

1
curl -sfL https://get.k3s.io | sh -

安装加速(可选)

如果尝试以上方式都卡在下载文件中,则前往Github下载页面下载最新的K3s二进制文件,然后上传到服务器中,接着执行以下命令,之后再次尝试上方到安装方式即可.

1
2
sudo cp k3s /usr/local/bin/
sudo chmod +x /usr/local/bin/k3s

验证安装和修改配置

安装完毕后输入sudo kubectl get nodes,检测输出,如果安装成功了,应该会有以下信息

1
2
3
➜  ~ sudo kubectl get nodes
NAME STATUS ROLES AGE VERSION
vm-0-3-ubuntu Ready master 6d6h v1.19.3+k3s3

此时虽然安装成功了,但是我们需要修改一下K3s的启动参数, 使我们可以在本地也可以使用kubectl操作K3s.
执行以下命令打开配置文件:

1
sudo vim /etc/systemd/system/multi-user.target.wants/k3s.service

然后修改最后一行ExecStart的值,在后方加入几个参数,当修改完毕时,应该类似如下:
这里假设服务器的IP为 12.34.56.78,读者自行替换为自己的服务器ip

1
/usr/local/bin/k3s server --tls-san 12.34.56.78 --write-kubeconfig-mode 664

这里加入了俩个参数:
--tls-san 是指tls证书中加入对应的ip
--write-kubeconfig-mode 664 可以让我们不用root权限来执行kubectl命令

然后再重启服务验证一下

1
2
3
sudo systemctl daemon-reload
sudo systemctl restart k3s
kubectl get nodes

本地操作 kubectl(可选)

如果觉得每次登陆服务器麻烦,也可以通过本地安装kubectl工具和增加配置文件来操作服务器上的K3s.
首先本地电脑建立一个~/.kube/config文件,然后复制服务器/etc/rancher/k3s/k3s.yaml的内容到刚建立的文件中.然后把其中server: https://127.0.0.1:6443127.0.0.1部分换成服务器的IP.

然后安装kubectl,这里读者可以根据自己机器情况选择

Mac

1
brew install kubectl

Ubuntu

1
2
3
4
5
sudo apt-get update && sudo apt-get install -y apt-transport-https gnupg2 curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl

CentOS

1
2
3
4
5
6
7
8
9
10
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubectl

安装完毕后可以通过kubectl get nodes检查是否与服务器输出一致即可.如果提示无法链接到服务器,那么可能是因为以下两个原因:

  1. 服务器的安全组中未开放6443端口,读者需要自行进入服务器的后台配置安全组策略.
  2. 检查以下服务器的防火墙是否允许6443端口的流量

到这里K3s的安装就完成了,再下一篇文章中我会讲讲K3s的基本概念和一个部署应用的示例.