K3s - 安装部署
文章目录1. K3s简介2. K3s架构说明3. K3s安装部署3.1 脚本快速在线安装3.2 安装说明3.3 HA模式部署(外部数据库)3.4 HA模式部署(内置数据库)3.5 离线部署1. K3s简介K3s是一个轻量级Kubernetes,它易于安装,二进制文件包小于40mb,内存只需要512MB即可运行。5 less than k8s非常适用于EdgeIoTCIARMK3s旨在成为完全兼容的
文章目录
1. K3s简介
K3s
是一个轻量级Kubernetes
,它易于安装,二进制文件包小于40mb
,内存只需要512MB
即可运行。
5 less than k8s
非常适用于
- Edge
- IoT
- CI
- ARM
K3s
旨在成为完全兼容的Kubernetes
发行版,相比K8s主要更改如下:
- 旧的、Alpha 版本的、非默认功能都已经删除。
- 删除了大多数内部云提供商和存储插件,可以用插件替换。
- 新增 SQLite3 作为默认存储机制,etcd3 仍然有效,但是不再是默认项。
- 封装在简单的启动器中,可以处理大量 LTS 复杂性和选项。
- 最小化到没有操作系统依赖,只需要一个内核和 cgroup 挂载。
2. K3s架构说明
单机
高可用
3. K3s安装部署
3.1 脚本快速在线安装
Server安装
curl -sfL https://get.k3s.io | sh -
- 会作为一个systemd服务运行, 支持开机自启动
- 会安装额外的工具,包括
kubectl
,crictl
,ctr
,k3s-killall.sh
和k3s-uninstall.sh
- 会生成kubeconfig配置文件
/etc/rancher/k3s/k3s.yaml
Agent安装
Agent安装需要传入额外的K3S_URL和K3S_TOKEN参数
curl -sfL https://get.k3s.io | K3S_URL=https://myserver:6443 K3S_TOKEN=mynodetoken sh -
K3S_URL
是Server节点的IP地址, 默认端口是6443K3S_TOKEN
存储在Server节点的/var/lib/rancher/k3s/server/node-token
文件中
查看节点
[root@k3smaster ~]# k3s kubectl get node
NAME STATUS ROLES AGE VERSION
k3smaster Ready master 6h34m v1.18.8+k3s1
k3snode Ready <none> 19h v1.18.8+k3s1
3.2 安装说明
主机名
要求主机名不能一样,如果主机名一样,可以通过参数--with-node-id
添加一个随机后缀, 或者通过参数--node-name
或者环境变量$K3S_NODE_NAME
指定主机名
操作系统
基本上可以跑在所有的Linux系统上,官方支持并测试的系统包括
- Ubuntu 16.04 (amd64)
- Ubuntu 18.04 (amd64)
- Raspbian Buster*
硬件资源
- CPU:1
- 内存:512MB(建议至少1G)
- 磁盘:
K3s
性能依赖数据库的性能,建议跑在SSD上
网络
需要监听和开放的默认端口如下
PROTOCOL | PORT | SOURCE | DESCRIPTION |
---|---|---|---|
TCP | 6443 | K3s agent nodes | Kubernetes API |
UCP | 8472 | K3s server and agent nodes | Required only for Flannel VXLAN |
TCP | 10250 | K3s server and agent nodes | kubelet |
安装参数
执行install.sh脚本安装时支持传入额外的参数,参考< K3s安装参数 >
网络配置
K3s使用Flannel vxlan作为默认的CNI提供容器网络,如果需要修改的话,可以通过如下参数指定:
CLI FLAG AND VALUE | DESCRIPTION |
---|---|
–flannel-backend=vxlan | 使用vxlan(默认). |
–flannel-backend=ipsec | 使用IPSEC后端对网络流量进行加密. |
–flannel-backend=host-gw | 使用host_gw模式. |
–flannel-backend=wireguard | 使用WireGuard后端对网络流量进行加密。 可能需要其他内核模块和配置. |
如果用独立的CNI可以在安装时指定参数--flannel-backend=none
, 然后单独安装自己的CNI
3.3 HA模式部署(外部数据库)
主要步骤
- 部署一个外部数据库
- 启动Server节点
使用外部数据库时需要指定datastore-endpoint,支持MySQL,PostgreSQL,etcd等
使用MySQL数据库curl -sfL https://get.k3s.io | sh -s - server \ --datastore-endpoint="mysql://username:password@tcp(hostname:3306)/database-name"
curl -sfL https://get.k3s.io | sh -s - server \ --datastore-endpoint="postgres://username:password@hostname:port/database-name"
curl -sfL https://get.k3s.io | sh -s - server \ --datastore-endpoint="https://etcd-host-1:2379,https://etcd-host-2:2379,https://etcd-host-3:2379"
--datastore-cafile
K3S_DATASTORE_CAFILE
--datastore-certfile
K3S_DATASTORE_CERTFILE
--datastore-keyfile
K3S_DATASTORE_KEYFILE
- 配置固定IP(VIP)
K3s Agent注册时需要指定一个K3s Server的URL,对于HA模式,指定任意一个Server的IP都可以,但是建议是使用一个固定的IP(可以使用负载均衡,DNS,VIP) - 启动Agent节点
K3S_TOKEN=SECRET k3s agent --server https://fixed-registration-address:6443
3.4 HA模式部署(内置数据库)
这种模式下,Server节点个数必须是奇数个,推荐是三个Server节点
启动第一个Server节点的时候需要携带--cluster-init
参数,以及K3S_TOKEN
K3S_TOKEN=SECRET k3s server --cluster-init
然后在启动其他Server节点
K3S_TOKEN=SECRET k3s server --server https://<ip or hostname of server1>:6443
3.5 离线部署
下载软件包
https://github.com/rancher/k3s/releases
包括镜像文件k3s-airgap-images-$ARCH.tar
,K3s执行文件k3s-$ARCH
拷贝包
mkdir -p /var/lib/rancher/k3s/agent/images/
cp ./k3s-airgap-images-$ARCH.tar /var/lib/rancher/k3s/agent/images/
cp ./k3s-$ARCH /usr/local/bin/k3s
安装
安装时指定环境变量
# INSTALL_K3S_SKIP_DOWNLOAD=true表示安装时跳过下载
INSTALL_K3S_SKIP_DOWNLOAD=true ./install.sh
更多推荐
所有评论(0)