K3s – 安装部署

K3s – 安装部署aaa

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服务运行, 支持开机自启动
  • 会安装额外的工具,包括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模式部署(内置数据库)

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 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224602.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午11:34
下一篇 2026年3月17日 上午11:34


相关推荐

  • java判断空对象为空_Java判断对象是否为空(包括null ,””)的方法[通俗易懂]

    java判断空对象为空_Java判断对象是否为空(包括null ,””)的方法[通俗易懂]本文实例为大家分享了Java判断对象是否为空的具体代码,供大家参考,具体内容如下packagecom.gj5u.publics.util;importjava.util.List;/***判断对象是否为空**@authorRex**/publicclassEmptyUtil{/***判断对象为空**@paramobj*对象名*@return是否为空*/@Supp…

    2022年6月22日
    30
  • anaconda+pycharm安装教程_如何在pycharm中配置anaconda

    anaconda+pycharm安装教程_如何在pycharm中配置anaconda本篇文章主要介绍windows系统下Anaconda和PyCharm的安装和使用。Anaconda是将Python和许多常用的package打包直接来使用的Python发行版本,而PyCharm是python开发较为好用的IDE,望大家参考。

    2022年8月29日
    6
  • pip和pip3的区别_linux将文件改为只读

    pip和pip3的区别_linux将文件改为只读前言装完python3后发现库里面既有pip也有pip3,不知道它们的区别,因此特意去了解了一下。解释先搜索了一下看到了如下的解释,安装了python3之后,库里面既会有pip3也会有pip1.

    2022年8月6日
    9
  • JAVA环境变量配置步骤详细教程

    JAVA环境变量配置步骤详细教程概述Java的环境配置并不是特别难,但是对刚上手的新手来说确实是一个大问题首先下载jdk安装包网址进去选择自己需要的版本下载就行了,这里演示的是jdk-8u131-windows-x64_8.0.1310.11,版本稍老,道理一样安装下载后直接双击运行,这时会让你选择安装路径默认是C盘,这里改成自己想要存放的地方,小编放在了D盘的ROUTE文件夹下的java目录下的jdk1.8.0_131然后点击确定,下一步,开始跑进度条,但是不一会就会弹窗出来jre的安装路径我们点击更改,然后选择一个别的文

    2022年7月8日
    25
  • php嵌入html有哪几种方法_php修改html里面的内容

    php嵌入html有哪几种方法_php修改html里面的内容html中嵌入php代码(以.html结尾的文件)index.html<!DOCTYPEhtml><htmllang=”en”><head><metacharset=”UTF-8″><title>错误:html中嵌套php</title></head><body><?phpecho’helloworld’?></body></html

    2022年10月2日
    5
  • 计算机odbc数据源管理位置,使用 ODBC 数据源管理器

    计算机odbc数据源管理位置,使用 ODBC 数据源管理器若要配置 MicrosoftSQL 数据源 请使用 ODBC 数据源管理器 可以通过在 控制面板 中单击 数据源 ODBC 来启动 ODBC 数据源管理器 使用 ODBC 数据源管理器可以 显示系统当前安装的 SQLServerODB 驱动程序的版本信息 添加 更改和删除 SQLServerODB 驱动程序的数据源 ODBC 数据源管理器还可以为用

    2026年3月19日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号