文章目录

 

1. K3s简介

K3s是一个轻量级Kubernetes,它易于安装,二进制文件包小于40mb,内存只需要512MB即可运行。

5 less than k8s
  •  

非常适用于

  • Edge
  • IoT
  • CI
  • ARM

K3s旨在成为完全兼容的Kubernetes发行版,相比K8s主要更改如下:

  • 旧的、Alpha 版本的、非默认功能都已经删除。
  • 删除了大多数内部云提供商和存储插件,可以用插件替换。
  • 新增 SQLite3 作为默认存储机制,etcd3 仍然有效,但是不再是默认项。
  • 封装在简单的启动器中,可以处理大量 LTS 复杂性和选项。
  • 最小化到没有操作系统依赖,只需要一个内核和 cgroup 挂载。

2. K3s架构说明

单机
K3s Architecture with a Single Server

高可用
k3s-architecture-ha-server

3. K3s安装部署

3.1 脚本快速在线安装

Server安装

curl -sfL https://get.k3s.io | sh -
  •  
  • 会作为一个systemd服务运行, 支持开机自启动
  • 会安装额外的工具,包括kubectlcrictlctrk3s-killall.shk3s-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地址, 默认端口是6443
  • K3S_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上

网络
需要监听和开放的默认端口如下

PROTOCOLPORTSOURCEDESCRIPTION
TCP6443K3s agent nodesKubernetes API
UCP8472K3s server and agent nodesRequired only for Flannel VXLAN
TCP10250K3s server and agent nodeskubelet

安装参数
执行install.sh脚本安装时支持传入额外的参数,参考< K3s安装参数 >

网络配置
K3s使用Flannel vxlan作为默认的CNI提供容器网络,如果需要修改的话,可以通过如下参数指定:

CLI FLAG AND VALUEDESCRIPTION
–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模式部署(外部数据库)

主要步骤

  1. 部署一个外部数据库
  2. 启动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"
    
    •  
    使用PG数据库
    curl -sfL https://get.k3s.io | sh -s - server \
     --datastore-endpoint="postgres://username:password@hostname:port/database-name"
    
    •  
    使用etcd数据库
    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
  3. 配置固定IP(VIP)
    K3s Agent注册时需要指定一个K3s Server的URL,对于HA模式,指定任意一个Server的IP都可以,但是建议是使用一个固定的IP(可以使用负载均衡,DNS,VIP)
  4. 启动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
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐