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

非常适用于

  • Edge
  • IoT
  • CI
  • ARM

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

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

2. K3s架构说明

单机
K3s - 安装部署_第1张图片

高可用
K3s - 安装部署_第2张图片

3. K3s安装部署

3.1 脚本快速在线安装

Server安装

curl -sfL https://get.k3s.io | sh -
  • 会作为一个systemd服务运行, 支持开机自启动
  • 会安装额外的工具,包括kubectl, crictl, ctr, k3s-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上

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

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模式部署(外部数据库)

主要步骤

  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

你可能感兴趣的:(Kubernetes,docker,k3s)