🗒️k3s

type
status
date
slug
summary
tags
category
icon
password
文章来源说明

🤔 一个简单的开头

K3s 是一个轻量级的 Kubernetes 发行版,它针对边缘计算、物联网等场景进行了高度优化

📝主旨内容

K3s - 轻量级 Kubernetes | Rancher文档
K3s 是一个轻量级的 Kubernetes 发行版,它针对边缘计算、物联网等场景进行了高度优化。K3s 有以下增强功能: 打包为单个二进制文件。 使用基于 sqlite3 的轻量级存储后端作为默认存储机制。同时支持使用 etcd3、MySQL 和 PostgreSQL 作为存储机制。 封装在简单的启动程序中,通过该启动程序处理很多复杂的 TLS 和选项。 默认情况下是安全的,对轻量级环境有合理的默认值。 添加了简单但功能强大的batteries-included功能,例如:本地存储提供程序,服务负载均衡器,Helm controller 和 Traefik Ingress controller。 所有 Kubernetes control-plane 组件的操作都封装在单个二进制文件和进程中,使 K3s 具有自动化和管理包括证书分发在内的复杂集群操作的能力。 最大程度减轻了外部依赖性,K3s 仅需要 kernel 和 cgroup 挂载。 K3s 软件包需要的依赖项包括: containerd Flannel CoreDNS CNI 主机实用程序(iptables、socat 等) Ingress controller(Traefik) 嵌入式服务负载均衡器(service load balancer) 嵌入式网络策略控制器(network policy controller) 我们希望安装的 Kubernetes 在内存占用方面只是一半的大小。Kubernetes 是一个 10 个字母的单词,简写为 K8s。所以,有 Kubernetes 一半大的东西就是一个 5 个字母的单词,简写为 K3s。K3s 没有全称,也没有官方的发音。 K3s 适用于以下场景: 由于运行 K3s 所需的资源相对较少,所以 K3s 也适用于开发和测试场景。在这些场景中,如果开发或测试人员需要对某些功能进行验证,或对某些问题进行重现,那么使用 K3s 不仅能够缩短启动集群的时间,还能够减少集群需要消耗的资源。与此同时,Rancher 中国团队推出了一款针对 K3s 的效率提升工具: AutoK3s。只需要输入一行命令,即可快速创建 K3s 集群并添加指定数量的 master 节点和 worker 节点。如需详细了解 AutoK3s,请参考 AutoK3s 功能介绍 。
k3s-tutorial/01-课程介绍及K3s介绍 at main · kingsd041/k3s-tutorial
本教程是 K3s 的系列教程,会按照 K3s 官网 的目录顺序来针对 K3s 的每个功能做讲解和操作,以便大家更深入了解 K3s。 当 K3s 新版本发布时,会针对每个版本做详细的介绍。 K3s - 轻量级 Kubernetes: CNCF认证的Kubernetes发行版 支持 X86_64, ARM64, ARMv7平台 单一进程包含Kubernetes master,kubelet,和 containerd 生命周期: K3s 会同时支持 3 个 K8s 版本,支持的生命周期与 K8s 相同,参考: Kubernetes 版本及版本偏差支持策略 v1.20.4+k3s1: v1.20.4 为 K8s 版本, k3s1 为补丁版本 更新周期: 当 K8s 更新新版本后,一般情况下,K3s 在一周内同步更新。 latest/stable/testing: https://update.k3s.io/v1-release/channels 中文官网文档: https://docs.rancher.cn/k3s 国内 K3s 资源: http://mirror.cnrancher.com/ k3os: k3OS是一个完全基于Kubernetes管理的轻量级操作系统,能大大简化在低资源环境中的Kubernetes操作,快速安装,秒级启动。 k3d: k3d创建容器化的k3s集群。这意味着,您可以使用docker在单台计算机上启动多节点k3s集群。 autok3s: AutoK3s 是用于简化 K3s 集群管理的轻量级工具,您可以使用 AutoK3s 在任何地方运行 K3s,Run K3s Everywhere。 octopus: Octopus是用于Kubernetes和k3s的轻量级云原生设备管理系统,它不需要替换Kubernetes集群的任何基本组件。部署octopus后,集群可以将边缘设备作为自定义k8s资源进行管理。 harvester: Harvester是基于Kubernetes构建的开源超融合基础架构(HCI)软件。它是vSphere和Nutanix的开源替代方案。 k3s github issue: https://github.com/k3s-io/k3s/issues 在此repo中创建issue 中文论坛: https://forums.cnrancher.com/ Rancher 社区:
k3s-tutorial/01-课程介绍及K3s介绍 at main · kingsd041/k3s-tutorial
生命周期: K3s 会同时支持 3 个 K8s 版本,支持的生命周期与 K8s 相同,参考: Kubernetes 版本及版本偏斜支持策略
v1.20.4+k3s1 :v1.20.4为K8s版本,k3s1为补丁版本

配置镜像加速

 

国内用户安装 server脚本

 

安装worker节点

 
注意:在K3S集群中 每一台主机的HOSTNAME不能相同 也可以传递K3S_NODE_NAME环境变量为每个节点提供一个有效且唯一的主机名
 

注册过程

连接K3S SERVER 创建一个WEBSOCKER连接 创建完之后 会生成一组随机的password
 
两个节点不能有相同的主机名
master和worker节点密码不匹配
 
若主机名相同,在不修改主机名的情况下
 

硬件要求

内存 最低512MB 建议于少1GB
CPU 最低1核心
磁盘生产建议尽可能使用SSD硬盘
端口 TCP 6448 10250 2379-2380
UDP 8472 只对 Flannel VXLAN 需要
 
INSTALL_K3S_SKIP_DOWNLOAD--(用于离线安装)如果设置为“真”将不会下载K3s的哈希值或二次制作
 
K3S下载及版本号查询
 
INSTALL_K3S_VERSION-- K3S安装指定的版本
 
INSTALL_K3S_BIN_DIR--安装K3s二次制作文件、链接和加载脚本的目录,或者使用/usr/local/bin作为默认目录
 
INSTALL_K3S_EXEC-- 带有标志的命令,用于在服务中启动K3s。如果未指定命令,并设置了K3S_URL,它将默认为“agent”。如果未设置K3S_URL,它会默认为“server”
 
INSTALL_K3S_SKIP_SELINUX_RPM-- 如果设置为“真”将跳过 k3s RPM 的自动安装
 
K3S_CONFIG_FILE-- 指定配置文件的位置。默认目录为/etc/rancher/k3s/config.yaml
 
K3S_TOKEN-- 使用将服务器或代理加入群的共享秘密
 
K3S_TOKEN_FILE-- 指定cluster-secret,token的文件目录
 

针对多网卡主机安装 K3s 集群

 
修改kube-apiserverkube-scheduler 、kube-controller-manager、 kube-cloud-controller-manager、 kubelet、 kube-proxy 参数
kubelet-arg
kube-apiserver
kube-proxy-arg
 
--data-dir -- K3s 数据存储目录,默认为 /var/lib/rancher/k3s 或 ${HOME}/.rancher/k3s(如果不是 root 用户)
 
禁用组件 --disable
 
添加 label 和 taint
 
卸载清理残留目录
 
默认情况下,K3s将以flannel作为CNI运行,使用VXLAN作为默认后端。CNI和默认后端都可以通过参数修改
Flannel 的默认后端是 VXLAN。要启用加密,请使用下面的 IPSec(Internet Protocol Security)或 WireGuard 选项
CLI 标志和值
描述
--flannel-backend=vxlan
(默认) 使用 VXLAN 后端。
--flannel-backend=ipsec
使用IPSEC后端,对网络流量进行加密。
--flannel-backend=host-gw
使用 host-gw 后端。
--flannel-backend=wireguard
使用WireGuard后端,对网络流量进行加密。可能需要额外的内核模块和配置。

flannel-backend 使用host-gw

 

启动直接路由

当主机在同一个子网上时,启用直接路由(如host-gw)。vxlan只用将数据包封装到不同子网上的主机上,同子网的主机之间使用host-gw。默认值为false
 

自定义CNI

使用运行K3s --flannel-backend=none,然后在安装你选择的CNI
 
使用外部数据库实现高级可用安装
 

嵌入式 DB 的高可用安装

要在这种模式下运行 K3s,你必须有奇数的服务器节点。我们建议从三个节点开始。
要开始运行,首先启动一个服务器节点,使用 cluster-init 标志来启用集群,并使用一个标记作为共享的密钥来加入其他服务器到集群中
 

私有镜像仓配置

可以配置 Containerd 连接到私有镜像仓库,并使用它们在节点上拉取私有镜像。
启动时,K3s 会检查/etc/rancher/k3s/中是否存在registries.yaml文件,并指示 containerd 使用文件中定义的镜像仓库。如果你想使用一个私有的镜像仓库,那么你需要在每个使用镜像仓库的节点上以 root 身份创建这个文件。
请注意,server 节点默认是可以调度的。如果你没有在 server 节点上设置污点,那么将在它们上运行工作负载,请确保在每个 server 节点上创建registries.yaml文件。
Containerd 中的配置可以用于通过 TLS 连接到私有镜像仓库,也可以与启用验证的镜像仓库连接
简单来说使用root创建这个,在可调度的节点添加此文件,反之可暂不添加
镜像库配置文件
Mirrors 是一个用于定义专用镜像仓库的名称和 endpoint 的指令
Configs 部分定义了每个 mirror 的 TLS 和凭证配置。对于每个 mirror,你可以定义auth和/或tls
 
K3s 将会在/var/lib/rancher/k3s/agent/etc/containerd/config.toml中为 containerd 生成config.toml
简单来说是通过k3s配置文件转换过来的
如果要对这个文件进行高级设置,你可以在同一个目录中创建另一个名为config.toml.tmpl的文件,这个文件将代替默认设置。
可以不通过k3s配置文件来决定,直接通过containerd配置文件指定
需要在此目录新建一个文件名为config.toml.tmpl
若直接修改config.toml文件,每次重新K3S时,文件会被K3S重新覆盖
K3S官方推荐还是尽量不要直接修改containerd配置文件,通过K3S来修改
 

离线安装

步骤1:部属镜像,本文提供了两种部属方式,分别是部属私有有镜像仓库和手动部属镜像。请在这两种方式中选择一种。
步骤2:安装K3s,本文提供了两种安装方式,分别是单节点安装和高可用安装。完成镜像部配置后,请在这两种安装方式
K3s镜像列表可以从https://github.com/k3s-io/ k3s/releases获取
 
 
离线升级K3S
 

k3s 仪表盘

 
获取token
本地访问仪表板
 
kube-exploer
 

升级K3S集群

手动升级时注意: 升级时,先逐个升级server节点,然后再升级其他agent节点
CHANNEL
描 述
stable
(默认)稳定版建议用于生产环境。这些版本已经过一段时间的社区强化。
latest
推荐使用最新版本尝试最新的功能。 这些版本还没有经过社区强化。
v1.19 (例子)
每一个支持的 Kubernetes 次要版本都有一个发布 channel,它们分别是v1.19v1.20v1.21。这些 channel 会选择最新的可用补丁版本,不一定是稳定版本。
对于详细的最新 channels 列表,您可以访问k3s channel 服务 API。关于 channels 工作的更多技术细节,请参见channelserver 项目
升级时注意,若之前安装使用docker运行容器,那么升级也需要添加INSTALL_K3S_EXEC="--docker"
升级到最新 stable 版本
curl -sfL https://get.k3s.io | sh -
升级到 latest 版本
curl -sfL https://get.k3s.io | INSTALL_K3S_CHANNEL=latest sh -
升级到 v1.20 的最新版本
curl -sfL https://get.k3s.io | INSTALL_K3S_CHANNEL="v1.20" sh -
升级到指定版本
curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=vX.Y.Z-rc1 sh -
 

使用二进制文件手动升级 K3s

  1. 发布下载所需版本的 K3s 二进制文件
  1. 将下载的二进制文件复制到/usr/local/bin/k3s(或您所需的位置)
  1. 停止旧的 K3s 二进制文件
  1. 启动新的 K3s 二进制文件
 
自动升级
关于 system-upgrade-controller 的设计和架构或其与 K3s 集成的更多细节,请参见以下 Git 仓库:
要以这种方式进行自动升级,你必须:
  1. 将 system-upgrade-controller 安装到您的集群中
  1. 配置计划
建议您最少创建两个计划:升级 server(master)节点的计划和升级 agent(worker)节点的计划。根据需要,您可以创建其他计划来控制跨节点的滚动升级。以下两个示例计划将把您的集群升级到 K3s v1.20.4+k3s1。创建计划后,控制器将接收这些计划并开始升级您的集群
 
 

备份和恢复

K3s 的备份和恢复方式取决于使用的数据存储类型:
  • 使用嵌入式 SQLite 数据存储进行备份和恢复
  • 使用外部数据存储进行备份和恢复
  • 使用嵌入式 etcd 数据存储进行备份和恢复
 
使用嵌入式 SQLite 数据存储进行备份和恢复
 
使用外部数据存储进行备份和恢复
当使用外部数据存储时,备份和恢复操作是在 K3s 之外处理的。数据库管理员需要对外部数据库进行备份,或者从快照或转储中进行恢复。我们建议将数据库配置为执行定期快照
 
使用嵌入式 etcd 数据存储进行备份和恢复
K3s 默认启用快照。快照目录默认为 /var/lib/rancher/k3s/server/db/snapshots。要配置快照间隔或保留的快照数量
参数
描述
--etcd-disable-snapshots
禁用自动 etcd 快照
--etcd-snapshot-schedule-cron
以 Cron 表达式的形式配置触发定时快照的时间点,例如:每 5 小时触发一次* */5 * * *,默认值为每 12 小时触发一次:0 */12 * * *
--etcd-snapshot-retention
保留的快照数量,默认值为 5。
--etcd-snapshot-dir
保存数据库快照的目录路径。(默认位置:${data-dir}/db/snapshots)
--cluster-reset
忘记所有的对等体,成为新集群的唯一成员,也可以通过环境变量[$K3S_CLUSTER_RESET]进行设置。
--cluster-reset-restore-path
要恢复的快照文件的路径
 

卷和存储器

设置 Local Storage Provider
K3s 自带 Rancher 的 Local Path Provisioner,这使得能够使用各自节点上的本地存储来开箱即用地创建 pvc。
Local Path Provisioner 为 Kubernetes/K3s 用户提供了一种利用每个节点中的本地存储的方法。根据用户配置,Local Path Provisioner 将自动在节点上创建基于 hostPath 的持久卷。它利用了 Kubernetes Local Persistent Volume 特性引入的特性,但他比 Kubernetes 中内置的 local pv 特性更简单的解决方案
 
设置 Longhorn
K3s 支持 Longhorn. Longhorn 是 Kubernetes 的一个开源分布式块存储系统
 
设置 NFS
如果你的 K3S 集群是 v1.20+,在 nfs provisioner 创建 PersistentVolumeClaim,PersistentVolumeClaim 保持 Pending 状态, 且 nfs provisioner 会报错
 

网络

如何修改 coredns 参数
通过修改/var/lib/rancher/k3s/server/manifests/coredns.yaml配置文件会立即生效,但重启 K3s 服务会导致 coredns 配置重新初始化,所以要修改 corends 的参数,可以通过以下步骤修改:
  1. coredns.yaml保存到其他目录
  1. 通过 --disable coredns 禁用 coredns
  1. 将备份的coredns.yaml 复制到 /var/lib/rancher/k3s/server/manifests/c.yaml,并修改对应参数
 

raefik Ingress Controller

启动 server 时,默认情况下会部署 Traefik。默认的配置文件在/var/lib/rancher/k3s/server/manifests/traefik.yaml中,对该文件的任何修改都会以类似kubectl apply的方式自动部署到 Kubernetes 中。
Traefik ingress controller 将使用主机上的 80 和 443 端口(即这些端口不能用于 HostPort 或 NodePort)。
Traefik 可以通过编辑traefik.yaml文件进行配置。为了防止 k3s 使用或覆盖修改后的版本,请使用--disable traefik部署 k3s,并将修改后的副本存储在k3s/server/manifests目录中。更多信息请参考官方的Traefik 配置参数
要禁用它,请使用--disable traefik选项启动每个 server
 
如何启用 treafik2 dashboard:
 
Service Load Balancer
K3s 提供了一个名为Klipper Load Balancer的负载均衡器,它可以使用可用的主机端口。 允许创建 LoadBalancer 类型的 Service,但不包括 LB 的实现。某些 LB 服务需要云提供商,例如 Amazon EC2 或 Microsoft Azure。相比之下,K3s service LB 使得可以在没有云提供商的情况下使用 LB 服务。
创建时确保当前节点端口未被占用,若占用状态会是Pending状态
 

Helm

 
查看信任的IP
 
host-gw模式
master 创建的pods 流量会分发给后端worker节点
master 添加了一条默认路由
worker也会添加一条路由 将PODS CIRD 流量送给master节点
会将对端主机IP做为默认网关
 
使用此方法安装 K3s 时,可使用以下环境变量来配置安装
Environment Variable
Description
INSTALL_K3S_SKIP_DOWNLOAD
如果设置为 "true "将不会下载 K3s 的哈希值或二进制。
INSTALL_K3S_SYMLINK
默认情况下,如果路径中不存在命令,将为 kubectl、crictl 和 ctr 二进制文件创建符号链接。如果设置为'skip'将不会创建符号链接,而'force'将覆盖。
INSTALL_K3S_SKIP_ENABLE
如果设置为 "true",将不启用或启动 K3s 服务。
INSTALL_K3S_SKIP_START
如果设置为 "true "将不会启动 K3s 服务。
INSTALL_K3S_VERSION
从 Github 下载 K3s 的版本。如果没有指定,将尝试从"stable"频道下载。
INSTALL_K3S_BIN_DIR
安装 K3s 二进制文件、链接和卸载脚本的目录,或者使用/usr/local/bin作为默认目录。
INSTALL_K3S_BIN_DIR_READ_ONLY
如果设置为 true 将不会把文件写入INSTALL_K3S_BIN_DIR,强制设置INSTALL_K3S_SKIP_DOWNLOAD=true
INSTALL_K3S_SYSTEMD_DIR
安装 systemd 服务和环境文件的目录,或者使用/etc/systemd/system作为默认目录。
INSTALL_K3S_EXEC
带有标志的命令,用于在服务中启动 K3s。如果未指定命令,并且设置了K3S_URL,它将默认为“agent”。如果未设置K3S_URL,它将默认为“server”。要获得帮助,请参考此示例。
INSTALL_K3S_NAME
要创建的 systemd 服务名称,如果以服务器方式运行 k3s,则默认为'k3s';如果以 agent 方式运行 k3s,则默认为'k3s-agent'。如果指定了服务名,则服务名将以'k3s-'为前缀。
INSTALL_K3S_TYPE
要创建的 systemd 服务类型,如果没有指定,将默认使用 K3s exec 命令。
INSTALL_K3S_SELINUX_WARN
如果设置为 true,则在没有找到 k3s-selinux 策略的情况下将继续。
INSTALL_K3S_SKIP_SELINUX_RPM
如果设置为 "true "将跳过 k3s RPM 的自动安装。
INSTALL_K3S_CHANNEL_URL
用于获取 K3s 下载网址的频道 URL。默认为 https://update.k3s.io/v1-release/channels 。
INSTALL_K3S_CHANNEL
用于获取 K3s 下载 URL 的通道。默认值为 "stable"。选项包括:stablelatesttesting
K3S_CONFIG_FILE
指定配置文件的位置。默认目录为/etc/rancher/k3s/config.yaml
K3S_TOKEN
用于将 server 或 agent 加入集群的共享 secret。
K3S_TOKEN_FILE
指定 cluster-secret,token 的文件目录。
 

证书轮换

默认情况下,K3s 的证书在 12 个月内过期。
如果证书已经过期或剩余的时间不足 90 天,则在 K3s 重启时轮换证书。
 

自动部署清单

/var/lib/rancher/k3s/server/manifests中找到的任何文件都会以类似kubectl apply的方式自动部署到 Kubernetes。
关于部署 Helm charts 的信息,请参阅Helm章节
 

使用 Docker 作为容器运行时

K3s 包含并默认为containerd, 一个行业标准的容器运行时。
要使用 Docker 而不是 containerd,
在 K3s 节点上安装 Docker。可以使用 Rancher 的一个Docker 安装脚本来安装 Docker: curl https://releases.rancher.com/install-docker/19.03.sh | sh 使用--docker选项安装 K3s: curl -sfL https://get.k3s.io | sh -s - --docker 国内用户,可以使用以下方法加速安装: curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - --docker 确认集群可用: $ sudo k3s kubectl get pods --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE kube-system local-path-provisioner-6d59f47c7-lncxn 1/1 Running 0 51s kube-system metrics-server-7566d596c8-9tnck 1/1 Running 0 51s kube-system helm-install-traefik-mbkn9 0/1 Completed 1 51s kube-system coredns-8655855d6-rtbnb 1/1 Running 0 51s kube-system svclb-traefik-jbmvl 2/2 Running 0 43s kube-system traefik-758cd5fc85-2wz97 1/1 Running 0 43s 确认 Docker 容器正在运行: $ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3e4d34729602 897ce3c5fc8f "entry" About a minute ago Up About a minute k8s_lb-port-443_svclb-traefik-jbmvl_kube-system_d46f10c6-073f-4c7e-8d7a-8e7ac18f9cb0_0 bffdc9d7a65f rancher/klipper-lb "entry" About a minute ago Up About a minute k8s_lb-port-80_svclb-traefik-jbmvl_kube-system_d46f10c6-073f-4c7e-8d7a-8e7ac18f9cb0_0 436b85c5e38d rancher/library-traefik "/traefik --configfi…" About a minute ago Up About a minute k8s_traefik_traefik-758cd5fc85-2wz97_kube-system_07abe831-ffd6-4206-bfa1-7c9ca4fb39e7_0 de8fded06188 rancher/pause:3.1 "/pause" About a minute ago Up About a minute k8s_POD_svclb-traefik-jbmvl_kube-system_d46f10c6-073f-4c7e-8d7a-8e7ac18f9cb0_0 7c6a30aeeb2f rancher/pause:3.1 "/pause" About a minute ago Up About a minute k8s_POD_traefik-758cd5fc85-2wz97_kube-system_07abe831-ffd6-4206-bfa1-7c9ca4fb39e7_0 ae6c58cab4a7 9d12f9848b99 "local-path-provisio…" About a minute ago Up About a minute k8s_local-path-provisioner_local-path-provisioner-6d59f47c7-lncxn_kube-system_2dbd22bf-6ad9-4bea-a73d-620c90a6c1c1_0 be1450e1a11e 9dd718864ce6 "/metrics-server" About a minute ago Up About a minute k8s_metrics-server_metrics-server-7566d596c8-9tnck_kube-system_031e74b5-e9ef-47ef-a88d-fbf3f726cbc6_0 4454d14e4d3f c4d3d16fe508 "/coredns -conf /etc…" About a minute ago Up About a minute k8s_coredns_coredns-8655855d6-rtbnb_kube-system_d05725df-4fb1-410a-8e82-2b1c8278a6a1_0 c3675b87f96c rancher/pause:3.1 "/pause" About a minute ago Up About a minute k8s_POD_coredns-8655855d6-rtbnb_kube-system_d05725df-4fb1-410a-8e82-2b1c8278a6a1_0 4b1fddbe6ca6 rancher/pause:3.1 "/pause" About a minute ago Up About a minute k8s_POD_local-path-provisioner-6d59f47c7-lncxn_kube-system_2dbd22bf-6ad9-4bea-a73d-620c90a6c1c1_0 64d3517d4a95 rancher/pause:3.1 "/pause"

可选:将 crictl 与 Docker 一起使用

crictl 为兼容 CRI 的容器运行时提供了 CLI
如果你想在使用--docker选项安装 K3s 后使用 crictl,请参考官方文档来安装 crictl。
$ VERSION="v1.17.0" $ curl -L https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-${VERSION}-linux-amd64.tar.gz --output crictl-${VERSION}-linux-amd64.tar.gz $ sudo tar zxvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/local/bin crictl
然后开始使用 crictl 命令:
$ sudo crictl version Version: 0.1.0 RuntimeName: docker RuntimeVersion: 19.03.9 RuntimeApiVersion: 1.40.0 $ sudo crictl images IMAGE TAG IMAGE ID SIZE rancher/coredns-coredns 1.6.3 c4d3d16fe508b 44.3MB rancher/klipper-helm v0.2.5 6207e2a3f5225 136MB rancher/klipper-lb v0.1.2 897ce3c5fc8ff 6.1MB rancher/library-traefik 1.7.19 aa764f7db3051 85.7MB rancher/local-path-provisioner v0.0.11 9d12f9848b99f 36.2MB rancher/metrics-server v0.3.6 9dd718864ce61 39.9MB rancher/pause 3.1 da86e6ba6ca19 742kB
 

配置 containerd

K3s 将会在/var/lib/rancher/k3s/agent/etc/containerd/config.toml中为 containerd 生成 config.toml。
如果要对这个文件进行高级定制,你可以在同一目录中创建另一个名为 config.toml.tmpl 的文件,此文件将会代替默认设置。
config.toml.tmpl将被视为 Go 模板文件,并且config.Node结构被传递给模板。此模板示例介绍了如何使用结构来自定义配置文件。
 

节点标签和污点

K3s agents 可以通过--node-label--node-taint选项进行配置,这两个选项可以给 kubelet 添加标签和污点。这两个选项只能在注册时添加标签和/或污点,所以它们只能被添加一次,之后不能再通过运行 K3s 命令来改变。
如果你想在节点注册后更改节点标签和污点,你应该使用kubectl。关于如何添加污点节点标签,请参考 Kubernetes 官方文档。
# 添加label和taint curl -sfL https://get.k3s.io | sh -s - --node-label app=k3s --node-taint special=true:NoSchedule # 查询label和taint kubectl get nodes --show-labels kubectl describe nodes | grep Taints
 

使用安装脚本启动 Server 节点

安装脚本将自动检测您的操作系统是使用 systemd 还是 openrc 并启动服务。当使用 openrc 运行时,日志将在/var/log/k3s.log中创建。
当使用 systemd 运行时,日志将在/var/log/syslog中创建,并使用journalctl -u k3s查看。
使用安装脚本进行安装和自动启动的示例:
curl -sfL https://get.k3s.io | sh -
国内用户,可以使用以下方法加速安装:
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
当手动运行 server 时,你应该得到一个类似于下面的输出:
$ k3s server INFO[2019-01-22T15:16:19.908493986-07:00] Starting k3s dev INFO[2019-01-22T15:16:19.908934479-07:00] Running kube-apiserver --allow-privileged=true --authorization-mode Node,RBAC --service-account-signing-key-file /var/lib/rancher/k3s/server/tls/service.key --service-cluster-ip-range 10.43.0.0/16 --advertise-port 6445 --advertise-address 127.0.0.1 --insecure-port 0 --secure-port 6444 --bind-address 127.0.0.1 --tls-cert-file /var/lib/rancher/k3s/server/tls/localhost.crt --tls-private-key-file /var/lib/rancher/k3s/server/tls/localhost.key --service-account-key-file /var/lib/rancher/k3s/server/tls/service.key --service-account-issuer k3s --api-audiences unknown --basic-auth-file /var/lib/rancher/k3s/server/cred/passwd --kubelet-client-certificate /var/lib/rancher/k3s/server/tls/token-node.crt --kubelet-client-key /var/lib/rancher/k3s/server/tls/token-node.key Flag --insecure-port has been deprecated, This flag will be removed in a future version. INFO[2019-01-22T15:16:20.196766005-07:00] Running kube-scheduler --kubeconfig /var/lib/rancher/k3s/server/cred/kubeconfig-system.yaml --port 0 --secure-port 0 --leader-elect=false INFO[2019-01-22T15:16:20.196880841-07:00] Running kube-controller-manager --kubeconfig /var/lib/rancher/k3s/server/cred/kubeconfig-system.yaml --service-account-private-key-file /var/lib/rancher/k3s/server/tls/service.key --allocate-node-cidrs --cluster-cidr 10.42.0.0/16 --root-ca-file /var/lib/rancher/k3s/server/tls/token-ca.crt --port 0 --secure-port 0 --leader-elect=false Flag --port has been deprecated, see --secure-port instead. INFO[2019-01-22T15:16:20.273441984-07:00] Listening on :6443 INFO[2019-01-22T15:16:20.278383446-07:00] Writing manifest: /var/lib/rancher/k3s/server/manifests/coredns.yaml INFO[2019-01-22T15:16:20.474454524-07:00] Node token is available at /var/lib/rancher/k3s/server/node-token INFO[2019-01-22T15:16:20.474471391-07:00] To join node to cluster: k3s agent -s https://10.20.0.3:6443 -t ${NODE_TOKEN} INFO[2019-01-22T15:16:20.541027133-07:00] Wrote kubeconfig /etc/rancher/k3s/k3s.yaml INFO[2019-01-22T15:16:20.541049100-07:00] Run: k3s kubectl
由于 agent 将创建大量的日志,输出可能会更长。默认情况下,server 会将自身注册为一个节点(运行 agent)

观点2

🤗总结归纳

 

参考文章

 
 
致谢:
💡
有关Notion安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
 
 
H3C NX30 Pro 刷 openwrt 教程iperf3
Loading...
目录